2024/01/06 4

IDA에서 사용자 정의 구조체 생성하기

왜 필요한가? 파일 스트림에서 Buffer로 0x36만큼 읽어오는 것으로 보아 Buffer는 최소 0x36 크기의 구조체 하지만 IDA가 인식한 버퍼의 크기는 2B*5 = 10B. 구조체를 제대로 인식 못 함 => 구조체 만듦으로써 디컴파일 코드의 가독성 증가, 분석 용이 구조체 만들기 1. Structure → Add Struct Type (Insert 키) 하여 bmp_header 이름의 구조체 추가 2. bmp_header 클릭 후 d 키 눌러 구조체 내 변수(field) 추가 3. convert to array 기능을 이용해 1byte * 0x36 개의 변수를 만든다 4. 디컴파일 화면으로 돌아가 buffer 변수의 타입을 새로 생성한 구조체 타입으로 바꿔줌 (y 이용) 5. structure 화..

Windbg 커맨드 정리

메모리 덤프 파일 확인 / 윈도우 소프트웨어의 동적 분석 시 매우매우매우 유용 주요 커맨드 k [n] : 콜스택 확인 (kv 많이 사용) ln 0x401000 : 특정 addr 주변에 가장 가까운 symbol 확인 r [레지스터/플래그] : 레지스터 및 플래그 정보 확인 가능 (eax, ebx, zf ..) r eax=0 : 레지스터 값 변경 bp 0x401000 : bp 설정 (bp testexe!ReadFile+0x123 이런 식도 가능) bl : bp list (bd 숫자 => 특정 브포 disable, be 숫자 => enable) g : 다음 bp까지 쭉 continue p : step over t : step into gu : 현재 함수 밖으로 이동, step out dq, dd, dw, db..

WTF(What The Fuzz) 퍼저를 활용해 타겟 분석하기

심기용 PL님과 정재영 선배릠께 무한한 감사를.. STEP1. 가상머신 환경 세팅 Hyper-v 사용해서 win10 가상머신 하나 만들어줬음 secure boot off, RAM 4GB, 프로세서 1개, 페이징 사용 x, 동적 메모리 사용 x STEP2. (kdnet 이용한 네트워크) 커널 디버깅 세팅 https://lucidmaj7.tistory.com/236 Windbg 커널디버깅 설정하기 (Network 디버깅) Windbg 커널디버깅 KDNET 설정하기 (Network 디버깅) 커널 드라이버를 개발하면서 언젠가?는 마주치게 되는 커널디버깅. 과거 물리적인 디버깅 대상 PC의 시리얼포트를 통해 개발 PC와 연결하여 커널디 lucidmaj7.tistory.com guest VM에 windbg (old..

WinAFL 퍼징을 통해 타겟 분석하기

Step1. 환경 세팅하기 설치해야 될 것들 - Visual Studio - WinAFL - Dynamorio https://hackyboiz.github.io/2021/05/23/fabu1ous/winafl-1/ https://gomguk.tistory.com/119 Step2. 타겟 선정하기 * 타겟 소프트웨어를 선정하고, 해당 소프트웨어의 동작 방식을 분석한다 (주로 뷰어, 압축프로그램, 미디어 플레이어 등등 user input 집어넣을 수 있는 애들이 쉽고 편함) * procmon을 통해 user input 입력했을 때의 동작을 분석하면 좋음 - operation : Load Library, ReadFile 등등 - 여러 쓰레드에서 동작할 수 있음 * 플러그인 dll에서 file open, par..