전체 글 (47) 썸네일형 리스트형 [System Hacking] Shellcode 1. 익스플로잇 해킹 분야에서 상대 시스템을 공격하는 것이다. 상대 시스템에 침투하여 시스템을 악용하는 해킹과 같다. 2. 셸코드 셸코드는 익스플로잇을 위해 제작된 어셈블리 코드 조각을 말한다. 셸을 획득하기 위한 목적으로 셸코드를 사용해서 셸이 접두사로 붙었다. 셸코드는 어셈블리어로 구성되므로 공격을 수행할 대상 아키텍처와 운영체제에 따라 다르게 작성된다. 아키텍처 별로 자주 사용되는 셸코드를 모앗 공유하는 사이트가 있다. 하지만 최적의 셸코드는 일반적으로 직접 작성하는 것이 좋다. 3. orw 셸코드 orw 셸코드는 파일을 열고, 읽은 뒤 화면에 출력해주는 셸코드이다. 밑에 코드는 orw 셸코드를 C언어 형식의 의사코드로 표현한 것이다. char buf[0x30]; int fd = open("/tmp.. 3. 정적 분석 & 동적 분석 저번 시간에는 바이너리에 대하여 공부하였다. 이번 시간에는 정적 분석과 동적 분석에 대하여 공부할 것이다. 소프트웨어를 분석할 때는 일반적으로 큰 구조를 먼저 관찰한다. 그러나 이것만으로 소프트웨어의 실제 동작을 알기 어렵다. 그때는 실제로 프로그램을 실행해보며 동작을 관찰할 수 있다. 이렇게 소프트웨어를 분석하기 위해 사용하는 분석 방법들은 크게 정적 분석과 동적 분석으로 구분한다. 1. 정적 분석 정적 분석은 프로그램을 실행시키지 않고 분석하는 방법이다. 1) 정적 분석의 장점 정적 분석을 사용하면 프로그램의 전체 구조를 파악하기 쉽다. => 정적 분석 도구들은 프로그램의 여러 정보를 살펴볼 수 있도록 도움을 주는데, 프로그램이 어떤 함수로 구성됐고 함수들은 서로 어떤 호출 관계를 갖는지 등 종합적으.. 2. Binary 이번 시간에는 바이너리에 대하여 공부할 것이다. 1. 프로그램 프로그램은 연산 장치가 수행해야 하는 동작을 정의한 일종의 문서이다. 프로그램을 연산 장치에 전달하면, CPU는 적혀있는 명령들을 처리하여 프로그래머가 의도한 동작을 수행한다. 과거에는 프로그램을 내부 저장 장치에 저장할 수 없어서 사람이 전선을 연결하여 컴퓨터에 전달하거나, 천공 카드에 프로그램을 기록하여 재사용하는 방식을 사용했다. 현대 컴퓨터는 프로그램을 메모리에 전자적으로 저장하여 사용을 간편하게 했다. 프로그램을 바이너리라고도 부른다. 왜냐하면 프로그램이 저장 장치에 이진(Binary) 형태로 저장되기 때문이다. 텍스트가 아닌 다른 데이터들도 바이너리라고 불리지만, 바이너리라고 하면 프로그램을 의미한다. 2. 컴파일러와 인터프리터 1.. [Cryptography] Replay Attack ◎ Replay Attack 재전송 공격(Replay Attack)은 어떤 데이터를 재전송하여 시스템이 의도치 않은 행동을 하게 만드는 공격이다. EX 1) 공격자가 암호화된 데이터를 복호화하는 것이 아니라, 암호화된 데이터를 탈취하여 서버에 전송하면서 공격할 수 있다. 탈취한 암호화된 데이터가 "100만원 출금"이라면 이 암호화된 데이터를 복호화 하는 것이 아니라 암호문 그대로 서버에 전송하여 100만원을 출금을 할 수 있다. EX 2) 만약 은행에서 운영모드로 ECB 모드를 사용한다면 다른 방식으로 공격이 가능하다. ECB 모드는 각 블록을 같은 키로 독립적으로 암호화한다.그러므로 같은 블록은 같은 암호문으로 암호화 되는 특성 때문에 Replay attack이 가능하다. ECB 모드에 대한 참조 링크.. [Cryptography] CBC Bit-Flipping Attack CBC 모드에 대한 설명은 밑에 링크를 참고하세요. 6. 패딩과 운영모드 저번 시간에는 AES에 대하여 공부하였다. 이번 시간에는 평문을 블록 단위로 만드는데 사용하는 패딩과 블록 암호의 운영모드에 대하여 공부할 것이다. 1. 패딩 블록 암호는 블록 단위로 암호화 sungw00k.tistory.com CBC모드에서 블록을 암호화 하기 전에 블록을 직전 블록의 암호문과 XOR 연산을 한다. 평문의 첫 번째 블록은 이전 블록이 존재하지 않으므로 초기 벡터(IV)라고 불리는 무작위 값과 XOR 연산을 한다. 초기 벡터를 이용하여 복호화 시, 공격자가 초기 벡터를 원하는 값으로 조작할 수 있다면 CBC Bit-Flipping Attack을 할 수 있다. ● CBC Bit-Flipping Attack CBC Bi.. 4. Cookie & Session 저번 시간에는 Web Browser에 대하여 공부하였다. 이번 시간은 쿠키와 세션에 대하여 공부할 것이다. 1. HTTP 프로토콜 특징 클라이언트의 IP 주소와 User-Agent는 매번 변경될 수 있는 고유하지 않는 정보이다. 또한 HTTP 프로토콜의 1) Connectionless와 2) Stateless 특징 때문에 웹 서버는 클라이언트를 기억할 수 없다. 1) Connectionless 하나의 요청에 하나의 응답을 한 후 연결을 종료하는 것 연결은 이어지지 않고 요청이 있을 때 마다 항상 새로운 연결을 맺는다. 2) Stateless 통신이 끝난 후 상태 정보를 저장하지 않는 것 이전 연결에서 사용한 데이터를 다른 연결에서 요구할 수 없다. 2. 쿠키 위 2가지 HTTP 프로토콜의 특징때문에 HT.. 3. Web Browser 저번 시간에는 Web에 대하여 공부하였다. 이번 시간은 Web Browser에 대하여 공부할 것이다. 1. Web Brower 웹 브라우저는 뛰어난 이용자 경험(UX)을 제공하는 소프트웨어 중 하나이다. 웹 브라우저는 서버와 HTTP 통신을 대신해주고 수신한 리소스를 시각화해준다. 이용자는 브라우저를 이용하여 쉽게 정보를 검색하고 동영상을 보고 파일을 내려받지만 내부에서 어떠한 연산이 일어나는지 알지 못한다. - 웹 브라우저 기본적인 동작 1) 웹 브라우저의 주소창에 입력된 주소를 해석(URL 해석) 2) URL에 해당하는 주소 탐색(DNS 요청) 3) HTTP를 통해 해당 주소에 요청 4) 해당 주소의 HTTP 응답 수신 5) 리소스 다운로드 및 웹 렌더링 2. URL URL(Uniform Resour.. 6. 패딩과 운영모드 저번 시간에는 AES에 대하여 공부하였다. 이번 시간에는 평문을 블록 단위로 만드는데 사용하는 패딩과 블록 암호의 운영모드에 대하여 공부할 것이다. 1. 패딩 블록 암호는 블록 단위로 암호화를 하므로 입력의 길이가 정확하게 블록 크기의 배수가 되어야 한다. 하지만 일반적으로 평문의 크기는 블록 크기의 배수가 되지 않는다. 이러한 문제를 해결하기 위해 패딩을 한다. 패딩은 평문에 데이터를 붙여서 블록 크기의 배수가 되도록 만드는 과정이다. 블록 암호로 평문을 암호화할 때 평문은 패딩을 거친 뒤 여러 블록으로 나뉜다. 그리고 각각의 블록은 블록 암호의 운영모드에 따라 암호화된다. 패딩된 암호문을 복호화할 때는 복호화된 평문에서 패딩을 제거해야 원래의 평문을 얻을 수 있다. 따라서 패딩된 암호문의 수신자는 어.. 이전 1 2 3 4 5 6 다음