# 시스템 해킹 공부중
-
[1-day] Anydesk CVE-2020-13160 분석# 시스템 해킹 공부중 2021. 3. 6. 12:49
Anydesk 라는 원격 제어프로그램에서 퍼징으로 Format String Bug를 발견하고 리포트한 상세한 과정을 작성한 글이 있어서 재밌게 읽었었다. 이번엔 한번 직접 따라해보고 해당 취약점을 정리해보려고 한다. 퍼저를 만드는 과정과 상세한 분석 과정, 흐름 등은 아래 원문에서 보길 바란다. 영어로 작성되어 있지만 그리 어려운 표현은 없고 코드나 그림 위주로 봐도 충분히 이해할 수 있다. 취약한 버전은 Anydesk 5.5.2 이다. devel0pment.de/?p=1881#vsnprintf AnyDesk UDP Discovery Remote Code Execution (CVE-2020-13160) – devel0pment.de One of my goals for this year is to spen..
-
[1-day] Virutalbox 6.0.0 Exploit (CVE-2019-2525 / CVE-2019-2548)# 시스템 해킹 공부중 2021. 3. 4. 21:48
BoB 멘토님의 강의로 Virtualbox에서 발견된 두 개의 CVE에 대해 설명을 듣고 이를 Chaining해서 exploit 하는 방법에 대해 설명을 들었었다. CVE를 분석해보고 exploit 하는 과정을 남겨본다. ZDI의 Advisory에서 Virtualbox를 검색해보면 (2019년 당시) 발견된 취약점들이 cr* 형태의 함수에서 발생한 것을 확인할 수 있다. 1-day는 아무래도 관련 정보들이 많은 대상을 선택하는게 비교적 쉽게 분석할 수 있다. 그렇기 때문에 취약점이 발생한 함수들을 검색해보거나 CVE 코드를 검색해서 정보를 수집한다. 'crUnpackExtendGetAttribLocation'을 검색해보면 f-secure에서 윈도우 환경에서 CVE-2019-2525와 CVE-2019-25..
-
[리버싱] lighthouse + DynamoRIO - 프로그램 실행 흐름 확인# 시스템 해킹 공부중 2020. 2. 26. 22:19
프로그램을 리버싱할 때, 프로그램이 어떤 block 들을 거쳐서 실행되는지 그 실행 흐름을 확인할 수 있고 그 흐름이 일정하다면 리버싱할 때 좀 더 효율적으로 할 수 있고, 분석의 정확도를 높일 수 있다. 이 때 사용할 수 있는 유용한 플러그인과 도구가 있어 간단하게 기록한다. 1. DynamoRIO DynamoRIO는 DBI(Dynamic Binary Instrumentation) Framework중 하나로, 프로세스에 동적으로 명령어를 삽입해서, 정보를 얻거나 특정 행위를 할 수 있도록 하는 시스템이다. 다운로드는 아래 링크를 통해서, 실행환경에 맞는 버전을 받아서 압축을 해제하면 된다. https://github.com/DynamoRIO/dynamorio/wiki/Downloads DynamoRIO..
-
[안드로이드] 안드로이드용 Radamsa 빌드하기# 시스템 해킹 공부중 2020. 2. 19. 03:08
Radamsa는 [그림 1]과 같이 입력이 들어오면, 입력에 대한 적절한 Mutation 값을 출력시키는 간단해 보이지만 강력한 퍼저이다. 퍼저 자체로 타겟 프로그램에 입력을 넣거나, 크래시 모니터링을 하지않기 때문에 해당 드라이버 프로그램을 만들어줘야하는 번거로움이 있지만, 다양하게 퍼저를 적용해서 테스팅을 해볼 수 있다는 장점이 있다. 공식적으로 radamsa는 GNU/Linux OpenBSD FreeBSD Mac OS X Windows (using Cygwin) 해당 OS만 지원을 하고 있으며, 자세한 내용은 아래 공식페이지에서 확인하면 된다. 공식 gitlab : https://gitlab.com/akihe/radamsa Aki Helin / radamsa a general-purpose fuzz..
-
[안드로이드] ApkStudio로 앱 디컴파일&리패키징하기# 시스템 해킹 공부중 2020. 2. 16. 00:45
안드로이드와 같이 VM(Virtual Machine)환경에서 동작되는 프로그램들은 디컴파일(Decompile)이 비교적 용이하다는 특징이있다. 소스코드를 컴파일 할 때, C/C++ 과 같이 바로 기계어로 번역되는게 아니라, VM이 이해할 수 있는 바이트코드(Bytecode)로 컴파일이 되고, VM에서 실행될 때 내부에 있는 컴파일러로 한번 더 컴파일해서 기계어로 번역하게된다. 즉, VM내부에서 한번 더 컴파일이 되어야하기 때문에 소스코드에 있는 각종 심볼들이 바이트코드에 담기게 되고, 이를 활용하면 원시코드를 쉽게 유추할 수 있게된다. 자바를 이용해서 안드로이드 앱을 개발할 경우, 컴파일하면 *.java -> *.class -> *.dex 순으로 컴파일된다. 본래 class 파일은 JVM(Java Vir..
-
[안드로이드] 안드로이드 앱 실시간 패킷 캡쳐 및 분석 with mitmproxy, Wireshark# 시스템 해킹 공부중 2019. 10. 9. 20:21
안드로이드 앱에서 발생하는 패킷을 분석하는 방법은 다양하다. [그림1]의 왼쪽부터 Packet Capture, Debug Proxy, tPacketCapture 라는 어플리케이션으로 안드로이드 어플리케이션에서 발생하는 패킷들을 캡쳐해서 보여준다. 이 외에도 다양한 앱과 도구들이 존재하고, 앱에 따라 안드로이드 기기의 루팅이 필요한 경우도 있고, 인터페이스나, 제공하는 데이터의 형태 역시 다르다. 다양한 도구와 그 소개를 보고싶다면 아래 링크를 타고 가면 확인할 수 있다. 7 Best Wireshark Alternatives for Android (Updated) 2019 7 Best Wireshark Alternatives for Android (Updated) 2019 Are you looking fo..
-
pwntools gdb.attach 사용법 - python process debugging# 시스템 해킹 공부중 2019. 8. 5. 21:08
gdb.attach 사용법 wargame이나 ctf 문제를 풀 때, 혹은 바이너리를 분석 할 때 파이썬으로 데이터를 입력하는 경우가 자주있다. example> p = process("binary") p.sendline("AAAA") 이 때 내가 입력한 데이터가 원하는데로 바이너리에 잘 입력이 되었는지, 스택은 잘 덮혔는지 확인하기 위해서 gdb를 사용해 디버깅을 할 수 있다. 보통은 다음과 같이 코드 내에 raw_input()을 넣어서 실행을 잠시 멈춘 다음, gdb로 실행된 binary의 pid 로 붙어서 디버깅을 한다. example> p = process("binary") raw_input("1") p.sendine("AAAA") $ ps -ef ..... 4111 ... binary $ gdb -..