리버싱 엔지니어링/리버싱 핵심 원리
-
24 DLL 이젝션리버싱 엔지니어링/리버싱 핵심 원리 2022. 4. 5. 01:46
: 프로세스에 강제로 삽입한 DLL을 빼내는 기법 DLL 이젝션 동작 원리 DLL 인젝션의 동작 원리 : 대상 프로세스로 하여금 LoadLibrary() API를 호출하도록 만드는 것 CreateRemoteThread() API를 이용 DLL 이젝션 동작 원리 : 대상 프로세스로 하여금 FreeLibrary() API를 호출하도록 만드는 것 DLL 이젝션 또한 인젝션과 동일하게 CreateRemoteThread() API 이용 DLL 이젝션 구현 : EjectDll.cpp의 EjectDll() 함수 BOOL EjectDll(DWORD dwPID, LPCTSTR szDllName) { BOOL bMore = FALSE, bFound = FALSE; HANDLE hSnapshot, hProcess, hThr..
-
23 DLL 인젝션리버싱 엔지니어링/리버싱 핵심 원리 2022. 4. 5. 01:45
DLL 인젝션 : 실행 중인 다른 프로세스에 특정 DLL 파일을 강제로 삽입하는 것 다른 프로세스에게 LoadLibrary() API를 스스로 호출하도록 명령해 사용자가 원하는 DLL을 로딩하는 것 일반 DLL 로딩과 다른 점은 로딩 대상이 되는 프로세스가 내 자신이냐 아니면 다른 프로세스냐 하는 것 notepad 프로세스에 myhack.dll을 강제 삽입 kernel32.dll 등과 같이 notepad.exe 프로세스 메모리에 대한 정당한 접근 권한을 가짐 사용자가 원하는 일 수행 가능 DLL 인젝션 활용 예 기능 개선 및 버그 패치 소스코드가 없거나 수정이 어려울 때 DLL 인젝션을 사용해 새로운 기능을 추가(PlugnIn 개념)하거나, 문제가 있는 코드와 데이터를 수정 가능 메시지 후킹 메시지 후킹..
-
22 악의적인 목적으로 사용되는 키로거리버싱 엔지니어링/리버싱 핵심 원리 2022. 4. 1. 01:04
악성 키로거의 목표 : 키보드 정보를 저장하고 빼돌림, 해당 정보로 돈을 범 온라인 게임 PC방 아무데나 가서 키로거 설치 → 키로거가 사용자의 계정을 몰래 저장하여 해커에게 메일 전송 → 수집한 계정으로 게임 머니, 아이템을 현금으로 교환 인터넷 뱅킹 인터넷 뱅킹 계정 정보를 빼감 실제 국내/해외에서 벌어지고 있고 남미에서는 수십~수십만달러의 피해를 당하기도 함 우리나라는 IE 접속, ActiveX 보안 모듈 이용 등으로 보안장치 마련 기업 정보 유출 기업 정보 유출 사례는 건수는 적지만 발생 시 피해 규모가 크다 핵심 기술이 외국으로 유출된다면 국가 위기 상황이 벌어질 수도 있으 내부의 동조자가 있는 경우 키로거를 설치하기에 좋음 악성 키로거의 목표 하드웨어 키로거 USB 메모리와 같은 형태, 키보드..
-
21 Windows 메시지 후킹리버싱 엔지니어링/리버싱 핵심 원리 2022. 4. 1. 01:04
훅 중간에서 오고가는 정보를 엿보거나 가로채기 위해 초소를 설치하는 일을 훅(hook)을 건다(설치한다)라고 함 실제로 정보를 엿보고 조작하는 행위를 후킹(hooking)한다 라고 함 메시지 훅 이벤트 발생 시 OS는 미리 정의된 메시지를 응용프로그램에 통보 → 응용 프로그램은 해당 메시지를 분석해 필요한 작업을 진행 메시지 훅은 위와 같은 메시지를 엿보는 것 키보드 메시지 예시 ▼ Windows 메시지 흐름 키보드 입력 이벤트가 발생하면 WM_KEYDOWN 메시지가 [OS message queue]에 추가됨 OS는 어느 응용 프로그램에서 이벤트가 발생했는지 파악해 [OS message queue]에서 메시지를 꺼내 해당 응용프로그램의 [application message queue]에 추가 응용프로그램..
-
20 인라인 패치 실습리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 30. 01:42
인라인 패치 : 인라인 코드 패치(Inline Code Patch) 혹은 줄여서 인라인 패치(Inline Patch)라고 함 원하는 코드를 직접 수정하기 어려울 때 간단히 코드 케이브(Code Cave)라고 하는 패치 코드를 삽입한 후 프로그램을 패치하는 기법 주로 대상 프로그램이 실행 압축(또는 암호화)되어 있어 파일을 직접 수정하기 어려운 경우 많이 사용되는 기법 Before : 전형적인 실행 압축(또는 암호화) 코드 EP 코드는 암호화된 OEP 코드를 복호화한 후 OEP 코드로 점프 패치를 원하는 코드가 암호화된 OEP영역에 존재한다면, 그냥 패치시키기는 어려움 (엉뚱하게 복호화되기 때문) After : 코드 케이브라고 하는 별도의 패치 코드를 설치하여, EP 코드의 복호화 과정 이후 JMP 명령어..
-
19 UPack 디버깅 - OEP 찾기리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 30. 01:41
notepad_upack.exe 파일 디버깅을 통한 OEP(Original Entry Point) 찾기 OllyDbg 살행 에러 NumberOfRvaAndSizes 값을 A로 변경하여 초기 검증 과정에서 에러 메시지가 출력됨 크리티컬한 에러가 아니므로 [확인] 버튼을 눌러 넘어감 위 에러로 인해 EP로 가지 목하고, ntdll 영역에서 멈춤 OllyDbg의 버그(혹은 엄격한 PE 체크) 때문에 이런 현상이 발생한 것이므로 강제로 EP를 설정 EP 위치 확인(Stud_PE 사용) ImageBase : 01000000, EP의 RVA 값 : 1018 EP의 VA 값 : 01001018 OllyDbg에서 01001018로 이동 후 'New origin here' 명령을 통해 강제로 EIP 변경 EIP(Exte..
-
18. UPack PE 헤더 상세 분석리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 30. 01:40
UPack PE 패커로, PE 헤더를 독특하게 변형함 특이한 PE 헤더로 각종 PE 유틸리티(PEViewer 등)들이 정상적으로 동작하지 않음. 따라서, 악성 코드를 UPak으로 실행 압축하여 배포함 현재는 UPack으로 실행 압축된 파일을 악성파일로 진단/삭제함 UPack으로 notepad.exe 실행 압축하기 UPack 다운로드 : https://blog.naver.com/wjdeh313/222290932166 리버싱 핵심원리 : UPack UPack dwing이라는 사람이 만든 패커 매우 독특한 기법으로 PE 헤더를 변형한다고 한다. 검색해서 자료... blog.naver.com notepad.exe를 불러와 [Pack!] 버튼을 통해 실행 압축 : notepad_upack.exe notepad_u..
-
17 실행 파일에서 .reloc 섹션 제거하기리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 27. 15:27
reloc 섹션 EXE 형식의 PE 파일에서 Base Relocation Table 항목은 실행에 큰 영향을 끼치지 않음 Relocation 섹션 이름 : '.reloc' .reloc 섹션 제거 시 PE 파일 크기가 약간 줄어드는 효과 .reloc 섹션 제거는 PEView와 Hex editor를 이용해 수동으로 제거 가능 reloc.exe .reloc 제거 작업단계 .reloc 섹션 헤더 정리 .reloc 섹션 제거 IMAGE_FILE_HEADER 수정 IMAGE_OPTIONAL_HEADER 수정 #1단계 : .reloc 섹션 헤더 정리 .reloc 섹션 헤더는 파일 옵셋 270에서 시작됨 이 부분을(270~297) Hex Editor를 이용해 0으로 덮어 씀 HxD의 'Fill selection...(..