Security/RCE 썸네일형 리스트형 (Manual Unpacking 02) UPack Unpacking 작업환경 VersionHost PCWindows 7Guest PCWindows xp sp3Debugging ToolollydbgImport IAT ToolImport Restructor OEP 찾기 01 모든 압축된 파일을 Unpacking을 하기 위해서는 OEP를 찾아야합니다. 02 ollydbg로 packing된 notepad.exe를 실행 시키면 과 같은 에러가 뜨는데 이는 ollydbg가 자동으로 Entry Point를 찾지 못해서 일어나는 에러이므로 그냥 확인을 누르도록 합니다. 03 Entry Point 찾기stud_PE라는 PE-View를 통해 해당 파일의 EntryPoint를 계산하면 [EntryPoint의 RVA + ImageBase] 이므로 결과 값은 0x1001018라는 주소 값이 나.. 더보기 (이론 01) PE File Format 작업 환경분류이름Host PCWindows 7Guest PCWindows xp sp3Tool -1 HxD EditorTool -2PE-ViewTargetnotepad PE File Format: Portable Excutable File Format 로서 Window 계열의 운영체제에서 사용하는 실행파일의 형태를 말합니다.(winnt.h 에 정의) PE file Format의 전체적인 구조: 과 같은 구조로 실행 파일 내에 있다가 실행하는 순간 약간의 크기만 늘어나면서 Memory에 올라가게 됩니다. 각 구조체 별 설명1. _IMAGE_DOS_HEADER : 총 0x40 Byte로 이루어져 있으며 DOS 파일의 호환성을 위해 만들어 졌으나 현재에는 실제로 사용되는 부분은 e_magic와 e_lfanew .. 더보기 (Manual Unpacking 01) UPX Unpacking 작업 환경 VersionHost PCWindows 7Guest PCWindows xp sp3Debugging ToolollydbgImport IAT ToolImport Restructor OEP 찾기 01. Unpack을 하기 위해서는 우선 OEP의 위치부터 찾아야 하는데 UPX Packing은 EP Code가 PUSHAD와 POPAD 명령어로 싸여있기 때문에 이 점을 이용하면 간단히 OEP를 확인할 수 있습니다. 02. 0x0006FFA4에 Hardware Breakpoint를 걸도록 하겠습니다. 03. 이제 F9를 눌러서 실행하면 정확히 POPAD에 멈추게 되며 OEP로 이동하는 JMP 구문 역시 확인할 수 있습니다. 04. 이제 JMP에 Breakpoint를 걸고 실행하면 JMP 구문에서 멈추고 이.. 더보기 (이론 02) EFLAGS Assembly Language - comparecmp A, B // A와 B의 크기를 비교하는 Assembly Language입니다. 이때 단순히 비교하는구나 보다 어떻게 비교하는지에 대해 알고 넘어가는 것이 중요합니다.컴퓨터는 단순하기 때문에 단순한 방법으로 비교하는데 A-B를 하여 양수가 나오면 A가 음수가 나오면 B가 0이 나오면 같다고 판단합니다. 그렇다면 A-B를 하는 것하고 다른게 뭐냐?! 라는 질문이 나올 수도 있는데 sum A, B 라는 명령어를 사용하면 A-B의 결과가 A에 들어가게 되는 반면에 cmp 명령어는 따로 결과를 저장하지 않고 Register 중에서 EFLAGS를 사용하게 됩니다. Register - EFLAGSEFLAGS는 "0과 1로 이루어진 깃발" 정도로 이해하면 되며 .. 더보기 (분석 01) WinSock 기초 분석 문서 이관 기초 소켓 분석의 게시글은 [Project 01] 카테고리의 1차 진행 상황 부분에서 따로 게시하였기 때문에 본 문서는 삭제하며 링크를 남겨두도록 하겠습니다. [Project 01] - 1차 진행 상황 : http://malysis.tistory.com/35 더보기 01 WinSock Basic 01 개요 : 대개의 악성코드들이 통신기능을 사용하기 때문에 제작/분석을 위해서는 소켓 프로그래밍, 그중에서도 Windows에서 사용되는 Winsock의 기본 흐름을 알아보도록 하겠습니다. 02 물론 Socket Programming은 Linux가 먼저이지만 이를 약간 변형하여 Windows에서는 WInsock을 사용합니다. 03 Winsock을 사용하기 위해서는 2가지 파일의 선언이 필요하며 소켓 프로그래밍을 하기위해서는 항상 이를 선언해주어야합니다.1) winsock2.h2) ws2_32.dll 04 틀은 정해져있고 실제로 소켓 프로그래밍을 할때에는 전부 손으로 치기보다는 틀을 복사하여 수정할 부분만 수정하여 사용하기 때문에 전체적인 코드 흐름을 알아두는 것이 중요합니다. 05 전화를 하기위해서는 전.. 더보기 (분석 01) Multi Thread 분석 01. 개요 : 상용 프로그램 혹은 악성코드 역시 한번에 한가지 동작을 하기 보다는 Multi Process 혹은 Multi Thread 를 이용하여한번에 두 가지 이상의 동작을 병행 수행합니다. 이에 우선 Multi Thread 방식으로 짜여진 간단한 프로그램을 분석해보도록 하겠습니다. 02. 실습 환경 Tools Version Host PC Windows 7 Guest PC Windows xp sp3 Compiler Visual Stdio 2008 Debugging Tools Ollydbg v1.10 03. 실습 코드 작성04 컴파일 후 실행 : 컴파일 후 실행해보면 와 같이 hello를 시간대별로 출력함과 동시에 문자열을 입력받아서 입력받은 문자열을 출력하고 있음을 확인할 수 있습니다. 05 Oll.. 더보기 (이론 01) VAS Basic ① VAS(Virtual Address Space) : process 한 개가 혼자 사용하는 가상의 공간. - 실행 파일마다 이 가상 메모리로 4GB 만큼의 공간이 주어진다.- process는 자기 혼자 4GB를 사용하는 줄 알지만 실제로 cpu는 process에게 딱 사용하는 만큼의 공간을 할당한다.- user mode에 로딩된 PE-File은 user mode space에서만 엑세스할 수 있으며 만약 user mode space를 넘어서 kernel mode space를 읽거나 쓰려고 하면 cpu가 violation을 발생시키고 강제 종료한다. 더보기 이전 1 2 다음