반응형

좀 열심히 쓴 글 22

WTF(WHAT THE FUZZ) TUTORIAL

WTF(WHAT THE FUZZ) TUTORIAL wtf(What The Fuzz) fuzzer가 실제로 취약점을 잘 찾을 수 있는지 궁금해서 테스트 프로그램으로 퍼징을 돌려보려고 한다. Target Program 퍼징할 대상은 대충 다음과 같이 만들었다. fgets로 파일 데이터를 buf에 저장한 상태에서 snapshot을 찍고, 퍼저에서 해당 buf 메모리에 mutation 된 데이터를 직접 memory write 함으로써, 퍼징을 수행할 예정이다. 컴파일해서 vm 내에 넣어주면 되는데, 중요한 점은 Debug가 아니라 Release로 빌드해야 한다는 점이다. 분석을 쉽게하기 위해서 코드 최적화도 꺼놨다. (Debug 모드로 빌드할 시, vcruntime140.dll 에서 크래시를 탐지해서 crash..

커널 디버깅 중 USER-MODE 프로세스에 디버거 붙이기

커널 디버깅 중 USER-MODE 프로세스에 디버거 붙이기 Windbg로 윈도우 커널 디버깅 중에 유저모드 프로세스를 디버깅하는 방법이 몇 가지 있는데, 일단 이 글에서는 다음과 같은 네 가지의 방법을 정리해볼까 한다. 실행 중인 프로세스에 붙기 (EPROCESS) 프로세스 실행하면서 붙기 (ntsd.exe) 프로세스 로드하면서 붙기 (sxe ld) 프로세스 생성할 때 붙기 (nt!PspInsertProcess) 0. Windbg kernel debugging Setting https://docs.microsoft.com/ko-kr/windows-hardware/drivers/debugger/setting-up-a-network-debugging-connection-automatically 가장 먼저, ..

What The Fuzz 분석

What The Fuzz 분석 What The Fuzz wtf.cc 에서 모든 인수에 대해서 CLI를 이용하여 파싱한 다음, Master(=서버)/Fuzz(=클라이언트) 로 나누어짐 중점적으로 볼 부분 Server - 어떻게 Mutation 하여 testcase를 생성하는가 Client - 어떻게 실행시키는가 Client - 어떻게 Coverage를 측정하는가 Master (=Server) Node Fuzz 노드의 경우 backend 부분에 대한 초기화가 추가로 이루어짐 CLI11_PARSE(Wtf, argc, argv); // // If we are in master mode, no need to initialize the heavy machinery. // // 마스터 노드 = 서버 노드인 경우 바로..

Fuzzing software: common challenges and potential solutions 정리

Fuzzing software: common challenges and potential solutions 원문 글 https://securitylab.github.com/research/vlc-vulnerability-heap-overflow/ https://securitylab.github.com/research/fuzzing-challenges-solutions-1/ https://securitylab.github.com/research/fuzzing-software-2/ 1. Fuzzing command-line arguments - Boolean arguments -> 1bit - Float and integer arguments -> 4/8 bytes - Variable-length strin..

House of Husk

House of Huskhttps://ptr-yudai.hatenablog.com/entry/2020/04/02/111507Summaryprintf 동작 중 사용자가 custom printf 를 등록하여 사용할 수 있는 기능을 이용한 방법.다음과 같이 정의되지 않은 형식문자를 사용자가 등록하여 사용할 수 있음.#include #include ​ int func(FILE* stream, const struct printf_info* info, const void* const* args){ printf("Called Func\n"); } ​ int arginfo(const struct printf_info* info, size_t n, int* argtypes, int* size){ return 1; } ​..

LibFuzzer code coverage 분석(8bit counter) / LibFuzzer 수정

[BoB8_박찬희] HW#3Contents : LibFuzzer code coverage 분석(8bit counter) / LibFuzzer 수정제출기한 : 01/23/2020 PM:11:59:59 제출방법 : singi.bob8@gmail.com / 7z / password : bob8IndexLibFuzzer 분석Inline 8bit CountersSummaryLibFuzzer PatchLibFuzzer 분석Inline 8bit CountersLLVM에서 제공하는 Code Coverage 기능 중 Inline 8bit-counters 기능은 다음과 같은 코드를 삽입함으로써 이루어지게 됩니다. mov al,BYTE PTR ds:0x60104d add al,0x1 mov BYTE PTR ds:0x6010..

RDP Client fuzzer 개선 보고서

[BoB8] RDP Client fuzzer 개선 보고서2 - 박찬희Index환경 구성Audio Output Virtual Channel Extension fuzzing 과정타겟 선정File System Virtual Channel Extension fuzzer 구현결과# 환경 구성Windows 7 Professional 64bit mstsc.exe mstscax.dll # Audio Output Virtual Channel Extension fuzzing 과정오디오 출력과 관련된 기능은 다음 세가지 단계를 거칩니다.Initialization SequenceData Transfer SequencesAudio Setting Transfer Sequences첫 번째 과제로 구현한 퍼저는 이 부분 중 가장 첫..

OpenJPEG Code Coverage 코드 작성 및 알고리즘 설명

OpenJPEG Code Coverage 코드 작성 및 알고리즘 설명 IndexCoveraged-Guided FuzzingOpenJPEG Code Coverage AlgorithmOpenJPEG coverage.cCoveraged-Guided Fuzzing AlgorithmCoverage-Guided FuzzingCoverage-Guided Fuzzing은 code coverage 정보를 이용하여 다양한 input을 생성함으로써, 바이너리의 전체적인 control flow를 탐색하도록 하는 방식입니다.동작 설명Coverage-Guided Fuzzing은 다음과 같은 방식으로 동작합니다.초기 seed 데이터를 mutation을 위해 queue에 넣는다.queue에 존재하는 seed를 선택하고, mutati..

반응형