들어가며 1-day 익스플로잇 실습을 진행한다. CVE-2019-13288 취약점이며 Xpdf라는 pdf 뷰어에서 발생한 Dos 취약점이다. 자세한 취약점 정보는 https://www.cvedetails.com/cve/CVE-2019-13288/에서 볼 수 있으며, 관련된 취약점 설명은 https://cwe.mitre.org/data/definitions/674.html 에서 확인할 수 있다. 정리하면, 프로그램에서 호출된 각 함수가 스택에 스택 프레임을 할당하기 때문에, 함수를 너무 많이 재귀적으로 호출하면 스택 메모리 부족과 충돌로 이어질 수 있는 취약점이다. 준비 1-day 실습이므로 취약점이 발생했던 같은 환경을 준비한다. 또는 다음의 내용을 학습할 수 있다. Ubuntu 20.04(https:/..
들어가며 앞서 직접 윈도우 소켓 프로그램을 제작하고 후킹해 보았다. 상용 프로그램 또한 복잡도만 높아졌을 뿐 동일한 원리로 동작하기 때문에 분석 및 후킹이 가능하다. 그 과정을 아래와 같이 설명한다. 생각하기 채팅 프로그램을 제작할 때 생각해야 할 것들이 많다. 단순히 데이터를 주고 받는 것에서 끝나는 것이 아니다. 안전한 데이터 전송을 구현하려면 어떻게 해야 할까? 데이터가 전송 중에 변조되지 않았음을 검증하려면 어떻게 해야할까? 송신 측에서 수신 측이 데이터를 제대로 수신했는지 확인하려면 어떻게 해야 할까? 개발자들이 생각해서 구현해놓은 프로그램을 분석하기 위해서는 반대로 접근할 필요가 있다. 간단하게 생각했을 때 프로그램의 로직은 이럴 것이다라고 생각해볼 수 있다. (송신측) 사용자가 채팅 입력 >..
[분석환경] Windows 10 x64 실습 바이너리 : x86 [분석도구] Frida 15.1 Frida-Trace 어떤 API 호출을 하는지 확실하게 보고 싶을 때 Frida-Trace의 도움을 받을 수 있다. frida-trace -i “*send” [실행경로] 프로그램이 동작하면서 일치하는 이름의 함수가 호출될 때 로그로 남겨주고 일치하는 함수가 존재하여 후킹되었을 경우 frida를 실행한 경로 내에 handler 폴더 내에 후킹을 위한 스크립트를 자동으로 생성해준다. Hooking Frida로 함수의 인수 값을 출력하려면 frida Interceptor API를 사용한다. Interceptor는 onEnter와 onLeave로 정의한다. onEnter는 후킹 대상이 되는 함수의 실행 직전에 실행..
참고 https://gomguk.tistory.com/105 앞선 게시글에서 작성한 프로그램을 이용하여 분석을 진행한다. 분석하는 과정에서 함수를 찾는 과정이 일부 생략되어 있으니 개발을 하고 이 게시글을 읽으면 좋다. [분석환경] Windows 10 64bit 프로그램 : x86 [분석도구] Cheat Engine 7.2 Windows Socket Programming 1~2에서 작성한 프로그램에 대한 분석을 진행한다. 1. Cheat Engine 7.2 실행 및 프로세스 Attach Visual Studio에서 Release 모드로 빌드 한 경우 경로 C:\\솔루션 경로\\Release 2. [Memory View] - [View] - [Enumerate DLL’s all Symbols] 3. 찾기[..
[개발환경] Windows 10 64bit [개발도구] MS Visual Studio 2022(v143, SDK 10.0) Release x86 Bind Socket bind() 함수는 소켓을 특정 주소 및 포트에 바인딩하는데 사용할 수 있다. connect()함수와 유사하게 sockaddr_in 구조체가 필요하다. int __cdecl main(int argc, char** argv) { WSADATA wsa; SOCKET s; struct sockaddr_in server; const char* message; char server_reply[5000]; int recv_size; //Intialising Winsock wprintf(L"\\nInitialising Winsock...\\n"); if..
[개발환경] Windows 10 64bit [개발도구] MS Visual Studio 2022(v143, SDK 10.0) Release x86 Initialising Winsock // #define WIN32_LEAN_AND_MEAN #include #include #include #include #include // Need to link with Ws2_32.lib, Mswsock.lib, and Advapi32.lib #pragma comment (lib, "Ws2_32.lib") #pragma comment (lib, "Mswsock.lib") #pragma comment (lib, "AdvApi32.lib") #define DEFAULT_BUFLEN 512 #define DEFAULT_POR..
[분석환경] Ubuntu 18.04 LTS [분석도구] FRIDA 15 Frida는 바이너리 내 어떤 함수가 호출되는지 보여주고, 조작이 가능하도록 한다. 동적 바이너리 조사(DBI, Dynamic Binary Instrumentation)를 가능하게 해주는 프레임워크이다. 다양한 운영체제를 지원하고 있으며 파이썬 기반의 프레임워크로 다양한 API를 지원한다. Frida Tutorial Frida를 사용하여 호출된 함수를 검사하고, 인수를 수정하고, 대상 프로세스 내의 함수에 대한 사용자 지정 호출을 수행하는 방법을 보여준다 https://frida.re/docs/quickstart/ Quick-start guide Inject JavaScript to explore native apps on Windo..
[분석환경] Ubuntu 18.04 [분석도구] Frida Frida는 바이너리 내 어떤 함수가 호출되는지 보여주고, 조작이 가능하도록 한다. 동적 바이너리 조사(DBI, Dynamic Binary Instrumentation)를 가능하게 해주는 프레임워크이다. 다양한 운영체제를 지원하고 있으며 파이썬 기반의 프레임워크로 다양한 API를 지원한다. Frida Tutorial Frida를 사용하여 호출된 함수를 검사하고, 인수를 수정하고, 대상 프로세스 내의 함수에 대한 사용자 지정 호출을 수행하는 방법을 보여준다 https://frida.re/docs/quickstart/ Quick-start guide Inject JavaScript to explore native apps on Windows, mac..
[실습환경] Ubuntu 18.04 LTS [도구] Frida Frida는 바이너리 내 어떤 함수가 호출되는지 보여주고, 조작이 가능하도록 한다. 동적 바이너리 조사(DBI, Dynamic Binary Instrumentation)를 가능하게 해주는 프레임워크이다. 다양한 운영체제를 지원하고 있으며 파이썬 기반의 프레임워크로 다양한 API를 지원한다. Frida Tutorial Frida를 사용하여 호출된 함수를 검사하고, 인수를 수정하고, 대상 프로세스 내의 함수에 대한 사용자 지정 호출을 수행하는 방법을 보여준다 https://frida.re/docs/quickstart/ Quick-start guide Inject JavaScript to explore native apps on Windows, m..
Android aab 파일 설치를 위한 과정을 소개한다. AAB(Android App Bundle) 안드로이드 앱 번들은 앱 개발, 출시 단계에서 설치 파일의 최적화(용량, 속도)등을 위해 제안된 새로운 파일 형식이다. 기존 APK파일의 경우 다국어 지원을 위한 언어정보, CPU 정보, 해상도 별 리소스 파일이 apk 파일 내에 전부 존재했다면 AAB는 이러한 정보들을 플레이스토어에서 관리하여 사용자가 앱 다운로드 요청 시에 리소스 파일들을 재조합하여 구글플레이의 서명키로 서명한 다음 APK 파일 형태로 제공한다. 자세한 내용은 안드로이드 개발자 공식 홈페이지에서 소개하고 있다.(https://developer.android.com/platform/technology/app-bundle?hl=ko) 하지..