전체 글 52

[Reversing] 간단한 바이너리 만들고 gdb로 분석하는 법

gdb의 사용법과 어떻게 바이너리를 분석하는지(어셈블리 읽는 법, 스택 상태 확인하는 법) 알아보기 위해Hello World를 출력하는 간단한 바이너리를 컴파일하고 gdb로 분석해보겠습니다. //helloWorld.c#include int main() { printf("Hello World\n!"); return 0;} > gcc -o helloWorld helloWorld.cgcc로 컴파일해서 바이너리를 생성하겠습니다  > gdb -q ./helloWorldpwndbg> disass mainDump of assembler code for function main: 0x0000000000001139 : push rbp 0x000000000000113a : ..

워게임/리버싱 2025.04.03

AFL & ASAN 동작 원리 및 fork

AFL 퍼저는 이전에 설명했듯 Instrumentation-guided genetic 알고리즘을 사용하여 테스트 케이스를 생성하고, 변이하는 방식으로 동작함. Brute Force로 입력을 받으면서 커버리지를 넓히고, 프로그램 제어 흐름에 대한 변경사항을 기록하며, 고유 크래시를 발견한다. AFL 특징- 커버리지 기반 퍼저이기 때문에 매우 효율적인 퍼징이 가능함 - 코드 커버리지 측정을 위한 코드를 컴파일 타임에 삽입 - QEMU를 이용하여 컴파일 타임이 아닌, 런타임시에 코드(어떤 부분이 실행됐고, 어떤 부분에서 실행이 안됐는지를 측정) 삽입도 가능함 -> 코드 삽입을 어디에, 언제 할 것인가가 중요.  AFL 동작 과정1. 프로그램 실행 시작 - AFL이 퍼징할 프로그램을 실행함. 2. fork se..

AFL Fuzzer 관점에서 바라본 Instrumentation-guided genetic algorithm(계측 기반 유전 알고리즘)

AFL 퍼저는 Instrumentation-guided genetic 알고리즘을 사용하여 테스트 케이스를 생성하고, 변이하는 방식으로 동작.Instrumentation-guided genetic algorithm - 계측 기반 유전 알고리즘  Instrumentation-GuidedAFL은 타겟 프로그램을 실행할 때 Instrumentation 기법을 사용하여 코드 커버리지를 추적함. 컴파일 시점에 삽입된 게측 코드 (QEMU(리눅스 커널 구동하는 가상머신)와 같은 동적 바이너리 Instrumentation 기법)을 활용하여 실행 흐름을 모니터링. 이를 통해 어떤 입력이 새로운 코드 경로를 트리거 했는지 알 수 있으며, 효과적인 변이가 가능함 Genetic AlgorithmAFL 특성상 기존의 퍼징 방식..

System vuln research(시스템/소스코드 취약점 분석 방법) - Whitebox Testing, Blackbox Testing, Graybox Testing

소스코드 취약점 분석 방법White Box Testing프로그램 내부 구조의 타당성 여부를 테스트하는 방식. 내부 구조의 해석을 위해 프로그램의 모든 처리 루틴에 대해 시험하는 기본 사항. 가끔 발생하는 조건도 고려하여 처리 루틴을 검증하기 위한 시험 데이터를 작성하여 시험을 실시. 예를 들어, 덧셈의 기능을 하는 코드인 경우, 덧셈이 올바르게 완료 되었는가? 불필요한 단계는 없는가? 음수 혹은 큰 값과 같은 다양한 유형의 입력을 잘 처리하는가? 와 같은 문제를 처리할 수 있음. 백그라운드 코드가 깨끗하고 효율적이며, 예상대로 작동하는지 확인 -> 소스 코드를 살펴 봄으로써 코드 상의 취약점이 있는지 탐색. 장점 - 프로그램 내부 작업에 대한 철저한 가시성 제공. - 개발 프로세스 초기에 숨겨진 버그와 ..

[Fuzzing] Fuzzing study 1weeks - Xpdf(CVE-2019-13288)

어쩌다 보니 퍼징 스터디를 하게 되었습니다. 아직 시스템 해킹도 정복하지 못한 저에게 감사하게도 이런 기회가 왔네요https://github.com/antonio-morales/Fuzzing101?tab=readme-ov-file GitHub - antonio-morales/Fuzzing101: An step by step fuzzing tutorial. A GitHub Security Lab initiativeAn step by step fuzzing tutorial. A GitHub Security Lab initiative - GitHub - antonio-morales/Fuzzing101: An step by step fuzzing tutorial. A GitHub Security Lab init..

[웹 해킹/정보수집] Dirb(Directory Brute force)

Dirb란?Directory Bruteforcing의 약자로 웹 사이트에 숨겨진 디렉토리를 찾기 위해 사용되는 툴입니다. 이 툴은 칼리 리눅스에 기본적으로 탑재되어 있습니다. 하지만, Dirb는 사이트에 무수한 요청을 보내기 때문에 부하가 발생할 수 있습니다. 따라서 실제 서비스되고 있는 웹 사이트나 CTF 환경(허가하면 ㄱㅊ)에서 절대로!! 사용하지면 안됩니다. Dirb 정보└─$ ls /usr/share/wordlists/dirbbig.txt common.txt extensions_common.txt mutations_common.txt small.txt stresscatala.txt euskera.txt indexes.txt others ..

[Cryptography] Symmetric-Key Cryptography: 3DES (대칭키 암호: 3DES 구현)

3DES DES는 블록 암호에 기반하여 설계된 56비트 암호화 알고리즘입니다. 그러나 작은 크기로 너무 약하다는 단점이 있어 쉽게 뚫려버리고 말았습니다. 이 문제를 해결하기 위하여 등장한 암호화 알고리즘이 3DES(Triple DES) 인데, 이는 블록당 3번의 DES 암호화를 수행하여 168비트의 키 암호화 알고리즘 입니다. DES에 비해 보안성은 강화됐지만, 성능은 저하되었습니다.보안을 강화시키면 편의성이 떨어지는 법이죠 아래는 전체 코드입니다. Background와 Description은 위 내용 그대로입니다.자세한 부분은 전 글을 참고해주세요https://dash758.tistory.com/42 [Cryptography] Symmetric-Key Cryptography (대칭키 암호)대칭키 암호 ..

암호학 2025.03.07