일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- ntwritefile
- brop
- dangling pointer
- libc-database
- PLT
- kaslr
- canary leak
- WinDBG
- pwndbg
- top chunk
- return to libraty
- HOS
- kernel debug
- libc.so
- house of force
- RAO
- sgerrand
- frida-dump
- patchelf
- ioploaddrivers
- randtbl
- cmake
- SCP
- fastbin
- windows kernel
- elf 헤더
- JOP
- 계산기
- Android
- windows
- Today
- Total
목록분류 전체보기 (24)
sh711 님의 블로그

1. 개요보통 일반적인 안드로이드 어플은 네이티브 라이브러리를 사용한다.CMake 및 ndk-module을 통해 어플 런타임 중 호출되어 C/C++ 모듈을 사용할 수 있다.Kotlin에서의 생성자를 통한 라이브러리 호출// MainActivity Classval calculator = Calculator()// Calculator Classcompanion object { init { System.loadLibrary("calculator-lib") } } 2. 라이브러리 호출frida를 통한 로드된 모듈 및 베이스 주소 확인var modules = Process.enumerateModules();modules.forEach(module => { c..

1. 개념House of Force는 glibc의 malloc을 이용한 힙 오버플로우 공격 기법으로, top chunk(최상단 청크)를 제어하여 공격자가 원하는 메모리 주소를 할당할 수 있도록 조작하는 기법이다 tcache(Thread Cache) 도입 glibc 2.26부터 tcache가 도입되어 작은 크기의 할당 요청은 tcache에서 처리됨. 즉, 일반적인 할당 요청이 top chunk를 직접 사용하지 않게 됨 → House of Force를 수행하기 어려움 top chunk 확장 방식 개선 malloc()을 호출할 때 top chunk를 확장하는 과정에서, 보안 체크가 추가됨. 예전 버전(glibc 2.23)에서는 top chunk의 크기를 과하게 키워도 제어가 가능했으나,..

Windbg를 통해 프로그램 분석을 해보았다.이번엔 Windbg로 윈도우 커널 분석을 해보겠다 1. 환경 구성Windows 10 1809 English 64-bit [17763.107] 버전을 가상화하였다.OS : Windows 10 1809 버전Kernel : 10.0.17763.107 버전 2. KDNET을 통한 자동 디버깅 설정VM setting에서 Briged 모드로 변환해준다.이어서 로컬과 Guest 모두 네트워크 방화벽 끄기 https://developer.microsoft.com/ko-kr/windows/downloads/windows-sdk/ Windows SDK - Windows 앱 개발Windows 11용 Windows SDK에는 Windows에서 실행되는 앱을 만들 때 사용할 수 있는..
Windbg는 gdb 와 같은 동적 분석 도구이다.지원되는 아키텍처는 x64, ARM 이며 gdb와 달리 윈도우의 실행 파일 PE(Portable Executable) 형식에 맞춰줘 있으며, 추가적으로 윈도우 커널(NT)을 디버깅할 수 있는 강력한 기능이 있다. https://learn.microsoft.com/ko-kr/windows-hardware/drivers/debugger/ WinDbg 설치 - Windows driversWindows 디버거 및 WinDbg 설치에 대한 개요는 여기에서 시작합니다.learn.microsoft.com해당 링크에서 설치가 가능하다. 1. 디버거 유형 확인첫번째로 디버깅할 유형을 정해야 한다.1.1 커널 모드운영 체제 및 권한 있는 프로그램은 커널 모드에서 실행된다...

코드는 다음과 같다// gcc -g -o test test.c => symbolic debug를 위해 symbolic 정보 포함하여 빌드#include int main() { printf("Hello Windbg!!"); return 0;} printf 가 언제 호출되는지 찾아보았다 test 프로그램의 main 함수 확인 실행 후 해당 함수에서 printf 호출이 되어서 브레이크를 잡고 실행시켰다 syscall 수행을 확인하였고 rax 값은 0x43이었다 https://j00ru.vexillium.org/syscalls/nt/64/해당 링크에서 윈도우 syscall table을 확인할 수 있다 Windows X86-64 System Call Table (XP/2003/Vista/7/8/10/..

1. ELF 파일ELF(Executable and Linkable File) 파일이란 리눅스 및 유닉스 계열 운영체제에서 실행 파일, 오브젝트 파일, 공유 라이브러리 및 코어 덤프 파일을 위한 표준 포멧이다.ELF 파일은 크게 다음과 같은 구조로 이루어져 있다.ELF Header => 파일의 전체적인 정보를 담고 있음Program Header => 실행 가능한 세그먼트 정보 (실행 파일에 존재)Section Header => 개별 섹션 정보 (오브젝트 파일에 존재)Segment Data => 실제 프로그램 코드 및 데이터Section Data => 개별 섹션 데이터 (.text, .data, .bss 등)이 중에 ELF Header는 파일의 가장 첫 부분에 위치하며, 파일의 전체적인 구조 및 속성을 나타..

로컬과 wsl로의 파일 전송 및 여러가지 테스트를 할때 주로 ssh를 통해 진행한다. SCP를 통한 파일 전송1. 단일 파일을 원격지로 전송할 때구문 : scp [옵션] [파일명] [원격지_id]@[원격지_ip]:[받는 위치]scp testfile [user]@[IP]:~/test 파일이 전송된 것을 확인 2. 여러 파일을 포함하고 있는 디렉터리를 원격지로 전송할 때구문 : scp [옵션] [디렉터리 이름] [원격지_id]@[원격지_ip]:[보낼 경로]scp -r scpTest [user]@[IP]:~/test 디렉터리가 전송된 것을 확인 3. 단일 파일을 원격지에서 로컬로 가져올 때구문 : # scp [옵션] [원격지_id]@[원격지_ip]:[원본 위치] [받는 위치]scp [user]@[IP]:~..

gdb는 프로그램을 동적으로 분석할 수 있는 동적 분석 도구이다.strace 등과 같이 ptrace를 사용해 프로그램 실행 흐름을 제어할 수 있으며 가장 기본적인 디버깅 도구이다.1. 설치gdb를 설치해준다.apt-get updateapt install gdb 프로그램 gdb 디버깅 주로 사용되는 옵션 및 명령gdb 프로그램 이름gdb attach -p [PID] : pid 프로세스 디버깅run : 실행entry : ELF 헤더를 기준으로 entry 포인트 진입start : main() 함수 진입disassemble 함수명 : 함수 디스어셈블set disassembly-flavor intel : intel 방식의 표현으로 바꿔줌break *메모리 : 특정 위치 브레이크 포인트info registers :..

1. 네이티브 연동저번 글에서 만든 UI에 네이티브 코드를 연동해보겠다.안드로이드에서 네이티브 빌드 방식은 CMake와 ndk-build 방식으로 2가지가 있다. 1.1 CMakeAndroid studio에서 공식적으로 권장하는 방식이며 최신 프로젝트에서는 대부분 이 방식을 사용한다.또한, 프로젝트 내 CMakeLists.txt 파일을 사용해 라이브러리를 빌드하는 방식으로 연동된다. 특징은 다음과 같다.호환성: Android Studio와 긴밀히 통합되어 있으며, 강력한 디버깅 및 설정 도구를 제공유연성: 복잡한 프로젝트를 쉽게 관리할 수 있고, 외부 라이브러리 통합이 용이다중 플랫폼 지원: CMake는 Android 외에도 다른 플랫폼(Windows, Linux 등)을 지원 1.2 ndk-buildAn..

1. 환경 세팅아래 링크에서 android studio를 설치한다.https://developer.android.com/studio?hl=ko Android 스튜디오 및 앱 도구 다운로드 - Android 개발자 | Android Studio | Android DevelopersAndroid Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.developer.android.com참고로 나는 koala 버전을 사용하여 개발을 진행하였다. 설치가 완료되면 File -> New -> New Project 를 선택..