PE File Format
-
[리버싱 핵심원리 study] 25장 PE 패치를 이용한 DLL 로딩Reverse Engineering 2021. 1. 10. 19:50
이전 실습까지는 DLL을 실행 중인 프로세스에 인젝션 하는 방법에 대해 알아보았다. 이번 실습에서는 프로세스가 메모리에 로딩되기 이전 상태인 파일 자체를 수정하여 프로세스가 실행될 때마다 원하는 DLL을 로딩하도록 하는 실습을 진행한다. 예제 파일인 TextView.exe를 패치하여 myhack3.dll이 프로그램 실행시마다 로딩될 수 있도록 수정해보자. 1. 소스코드 (myhack3.dll) 더보기 #include "stdio.h" #include "Windows.h" #include "shlobj.h" #include "Wininet.h" #include "tchar.h" #pragma comment(lib, "Wininet.lib") #define DEF_BUF_SIZE (4096) #define ..
-
[reversing.kr] ransomware 풀이Wargame/reversing.kr 2021. 1. 8. 17:19
1. 프로그램 분석 프로그램을 다운로드하여 압축을 풀면 다음과 같이 세 가지 파일이 있는 것을 확인할 수 있다. 우선 readme.txt를 열어보자. file을 decrypt하라고 한다. 이제 run.exe를 실행시켜보자. file이 암호화 되어 있고 적절한 key를 입력하면 해당 key 값으로 파일을 복호화하는 구조의 프로그램인 것 같다. 위와 같이 임의의 키를 입력하였을 때 위와 같은 문구가 출력된다. 과연 파일이 복구되었는지 file에 exe 확장자를 붙여서 실행해보자. 위와 같이 당연하게도 "maple19out"으로는 파일 복호화가 안된 것을 알 수 있다. file 자체가 잘못된 키 값으로 복호화가 되었으므로, 새로 파일을 다운로드하고 디버거를 통해 디버깅을 해보자. 2. Debugging(wit..
-
[리버싱 핵심원리 study] 18장 UPack PE 헤더 상세 분석Reverse Engineering 2020. 12. 30. 21:38
1. UPack 설명 UPack은 중국의 dwing이라는 사람이 만든 PE 패커로, UPack의 등장으로 많은 PE 유틸리티들이 정상적으로 동작하지 않았다. 이러한 특징을 이용해 많은 악성 코드 제작자들이 자신의 코드를 UPack으로 실행 압축하여 배포하였고, 현재 대부분의 AV 제품들은 UPack으로 실행 압축된 파일들을 악성코드로 분류한다. (이번 실습을 진행하면서 Windows Defender에 지속적으로 탐지되어 매우 애먹었다.) 2. UPack으로 notepad.exe 실행 압축하기 UPack의 윈도우형 최신 버전인 WinUPack 0.39를 이용하였다. PEView로 압축된 notepad.exe를 살펴보자. 위와 같이 헤더 부분을 정확하게 읽어내지 못하는 것을 확인할 수 있다. 예전 버전의 P..
-
[리버싱 핵심원리 study] 17장 실행 파일에서 .reloc 섹션 제거하기Reverse Engineering 2020. 12. 29. 23:48
1. .reloc 섹션 EXE 형식의 PE 파일에서 Base Relocation Table은 실행에 큰 영향을 끼치지 않으므로, 제거 후 실행 테스트를 해도 정상적으로 실행이 잘 된다. (DLL, SYS는 필수) 2. reloc.exe .reloc 섹션을 제거하는 실습으로 다음과 같은 과정을 진행한다. (1) .reloc 섹션 헤더 정리 (2) .reloc 섹션 제거 (3) IMAGE_FILE_HEADER 수정 (4) IMAGE_OPTIONAL_HEADER 수정 1) .reloc 섹션 헤더 정리 위와 같이 PEView로 예제 파일을 살펴보면 270 offset에서 시작하는 것을 확인할 수 있다. 270 ~ 297 영역을 HxD를 이용하여 0으로 바꾸자. (IMAGE_SECTION_HEADER의 크기는 3..
-
[리버싱 핵심원리 study] 16장 Base Relocation TableReverse Engineering 2020. 12. 29. 23:29
1. PE 재배치 PE 파일이 메모리에 로딩될 때 ImageBase 주소에 로딩이 된다. DLL의 경우 이미 다른 DLL이 로딩되어 있다면 다른 비어 있는 주소 공간에 로딩된다. 이와 같은 것을 PE 재배치라고 한다. DLL과 달리 EXE 파일은 가장 먼저 메모리에 로딩되기 때문에 재배치를 고려할 수가 없었으나, Windows Vista 이후부터는 보안 강화를 위해 ASLR(Address Space Layout Randomization) 기능이 추가되어 실행될 때마다 랜덤 한 주소에 로딩이 된다. => 이 글을 작성하는 시점에 Windows 10 환경에서 OllyDbg로 notepad.exe를 여러번 재실행해보았지만, 로딩되는 주소에는 변화가 없었다. 해당 부분에 대한 궁금증을 해소하기 위해서 구글링을 ..
-
[리버싱 핵심원리 study] 14장 실행 압축Reverse Engineering 2020. 12. 29. 00:36
실행 압축(run-time packer)은 리버싱의 단골 주제로, 이를 이해하기 위해서는 PE file format과 운영체제의 기본적인 사항들에 대해 잘 알고 있어야 하며, 압축/해제 알고리즘에 대한 기본적인 내용에 대해서 알아야 한다. 실행 압축이란, 말 그대로 실행(PE: Portable Executable) 파일을 대상으로 파일 내부에 압축해제 코드를 포함하고, 실행되는 순간에 메모리에서 압축을 해제시킨 후 실행하는 기술이다. 일반적인 압축과는 다르게 실행이 가능하다는 특징이 있으며, 실행 압축을 통해 리버싱을 방해할 수도 있으며 코드 양이 더 늘어나는 경우도 있다. 1. 패커(Packer) PE 패커(Packer)란 실행 파일 압축기를 말한다. #1 사용 목적 PE 파일의 크기 감소를 통해 네트..
-
[리버싱 핵심원리 study] 13장 PE File Format (3)Reverse Engineering 2020. 12. 28. 23:40
[리버싱 핵심원리 study] 13장 PE File Format (2) [리버싱 핵심원리 study] 13장 PE File Format (1) PE(Portable Executable) 파일은 Windows 운영체제에서 사용되는 실행 파일 형식이다. 기존 UNIX의 COEF(Common Object File Format)을 기반으로 Microsoft에서.. maple19out.tistory.com - IAT IAT(Import Address Table)에는 Windows 운영체제의 핵심 개념인 process, memory, DLL 구조 등에 대한 내용이 함축되어 있다. IAT란 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술하는 테이블이다. - DLL DLL(Dynamic Linked ..
-
[리버싱 핵심원리 study] 13장 PE File Format (2)Reverse Engineering 2020. 12. 25. 22:13
[리버싱 핵심원리 study] 13장 PE File Format (1) PE(Portable Executable) 파일은 Windows 운영체제에서 사용되는 실행 파일 형식이다. 기존 UNIX의 COEF(Common Object File Format)을 기반으로 Microsoft에서 만들었으며, 문자 그대로 이식성을 좋게 하려는 의.. maple19out.tistory.com - RVA to RAW Section Header를 잘 이해했다면, PE 파일이 메모리에 로딩되었을 때 각 섹션에서 메모리의 주소와 파일 offset을 잘 매핑할 수 있어야 한다. 이러한 매핑 과정을 'RVA to RAW'라고 부른다. 기본적인 방법은 다음과 같다. 1. RVA가 속해 있는 section을 찾는다. 2. 간단한 비례..