CVE-2021-39863 - Adobe Acrobat Reader DC 취약점 내용 정리
·
Security/Pwnable
내용 정리익스플로잇의 기본 흐름Preparing Heap Layout 과정검증 1분석 블로그를 보면 아래 글이 있다.The ArrayBuffer size is selected so the underlying allocationis of size 0x2608 (including the chunk metadata), which corresponds toan LFH bucket not used by the application. 왜 0x2608바이트 크기의 ArrayBuffer를 선택하였는가?리더기에서 사용되지 않는 할당 요청값이기 때문이다. 만약 리더기에서 자주 할당 및 해제하는 크기의 값을 ArrayBuffer로 선택한다면, 우리가 하려고 하는 작업인 UserBlock을 꽉 채우는 작업에 방해될 수 있기 ..
밀크초코 FPS 게임에서 채팅 버그로 다른 사람 사칭이 가능한 트릭 - 기술적 분석
·
Security/Reversing
안녕하세요. 요즘 글 소재가 닳지를 않는 것 같습니다. 또 새로 파볼 주제가 생겨서 기쁩니다. 우선 서론은 생략하고 아래 사진들부터 보시죠. 버그의 내용 처음에 저 현상을 봤을 때에는 그냥 이상한 사람이거니 싶었는데 여러번 보다 보니까 뭔가 이상해서 사진을 여러장 찍어뒀습니다. 게임 내 재화인 다이아를 써서 닉네임을 바꾼 다음 사칭을 하는 것이라고 처음엔 생각했지만, 빠르게 여러 닉네임을 번갈아가면서 동시에 사칭하는 것으로 보여서 이건 닉넴을 바꿔서 사칭하는게 아니라 뭔가 버그를 이용한 것 같다는 생각을 할 수 있었습니다. (닉네임을 한 번 바꾸는 데 필요한 19 다이아는 꽤 많은 양입니다..) 그리고 게임 채팅 시스템의 특성상 사용자의 입력 데이터 처리를 제대로 하지 않는다면 출력시 의도하지 않..
삼성 T5 포터블 SSD 자동 해제 프로그램 개발 (with SCSI protocol)
·
Security/Reversing
개요친척에게 몇년 전에 선물받은 삼성 T5를 잘 사용하고 있었습니다. 그런데 매번 장치를 연결할 때마다 삼성 전용 프로그램으로 비밀번호 해제를 해제해야 한다는 것에 매우 큰 불만을 가지고 있었습니다!! 왜냐하면 그냥 비밀번호를 없애서 편하게 사용할 수도 있지만 제가 만약 이 SSD를 잃어버린다면 저의 데이터가 안전하지 않을 테니까요.. 그리고 무엇보다 중요한 것은 개발자의 숙명입니다.. 아무리 사소한 것이라고 해도 목숨을 걸고 자동화에 집착하는 것.. 비밀번호 입력 자동화 프로그램을 만들고 디버깅하고 삽질하는 총 시간이, 평생을 앉아서 비밀번호 입력할 수 있는 시간보다 훨씬 크다고 해도 자동화에 목숨을 거는 것.. 그것이 개발자의 길 아니겠습니까? 개발 과정 처음에는 GUI 기반으로 만들어 보려고 spy..
추억의 게임 렙업만이살길2 리버싱 일기 - 2편 (완)
·
Security/Reversing
저번에 libchilsan.so에서 게임 관련을 담당한다는 것을 알아낸 이후 USIM 결제 관련을 바로 들어가기 보다는 먼저 게임에서 사용되는 재화인 황금 돼지를 소비하지 않고 물건을 구매할 수 있도록 패치한 다음 분석이 좀 익숙해지면 그때 본격적으로 USIM 결제 관련을 분석하는 방향으로 가려고 계획을 세웠다 그래서 황금돼지가 부족할때 뜨는 텍스트인 '돼지가 부족합니다.' 이 텍스트를 기드라에서 찾아야되는데, 삽질을 많이 헀다. 왜냐하면 어떤 인코딩 방식을 통해 한국어 데이터가 저장돼있는지 몰랐기 때문, 그래도 데이터가 분명히 있을 거라고 믿고 인코딩해서 하나씩 검색해본 덕에 금방 찾을 수 있었다. 결과적으로는 EUC-KR 방식으로 데이터가 저장돼있었고,EUC-KR 방식이 게임에서 한국어 데이터를 저장..
추억의 게임 렙업만이살길2 리버싱 일기 - 1편
·
Security/Reversing
때는 내가 어릴적, 지금은 모두가 스마트폰을 쓰지만 그때는 아직 스마트폰을 가진 사람은 몇명 없었고 피처폰같은 폴더폰 종류의 휴대폰을 흔히 볼 수 있던 시대였다. 그때 나는 부모님의 피처폰을 가지고 게임을 했었는데 그중 가장 기억에 남는것은 바로 '렙업만이살길2' 라는 게임이었다. 고된 일상을 보내던 와중 뜬금없이 옛날에 했던 이 게임이 생각나서 바로 구글에서 apk 파일을 구해서 내가 지금 사용하고 있는 폰에 설치하려고 하는데, 앱이 너무 오래돼서 그런지 호환이 안된다며 설치가 안되는 것이었다. 그래서 내가 가지고 있는 기기 중 가장 오래된 삼성의 SHV-E500S 라는 휴대폰(무려 12년 전인 2013년에 출시한 모델이다)에 apk를 깔고 실행해봤더니 이럴수가 실행이 된다!! 옛날에 봤던 익숙한 얼..
[Dreamhack] ROP(Return Oriented Programming) 문제 해설 & 추가 설명
·
Security/Pwnable
https://dreamhack.io/lecture/courses/84위 로드맵에서 설명이 부족한 부분들과 추가적인 배경 지식들을 정리하였습니다.우선 익스플로잇 코드부터 소개하겠습니다.from pwn import *def slog(n, m): return success(": ".join([n, hex(m)]))# context.log_level = "debug"p = remote("host3.dreamhack.games", 18495)# p = process("./rop", env= {"LD_PRELOAD" : "./libc.so.6"})elf = ELF("./rop")libc = ELF("./libc.so.6")# [1] Leak canarypadding = b"A" * 0x39p.sendafter(b..
DLL Injection 기법 - 프로세스에 침투하기
·
Security/Reversing
주제DLL Injection 기법은 다른 프로세스에 침투하는 가장 간단하고 강력한 방법입니다. DLL 인젝션의 원리와 인젝션 코드를 직접 작성하는 방법에 대해 알아봅시다. 사전 지식본 글을 이해하기 위해 필요한 사전 지식입니다.⭐ Windows 운영 체제가 관리하는 프로세스, 스레드, 메모리에 대한 이해DLL에 대한 기본적인 이해(프로세스들이 DLL을 공유하는 메커니즘(메모리 관점에서의), DLL의 장단점, DLL 만드는 방법)C++ 프로그래밍 언어Win32 API 프로그래밍(MSDN에서 원하는 함수의 사용법을 읽고 이해할 수 있는 정도) 전체적인 과정 아래는 DLL 인젝션의 과정입니다. (블로그 글을 다 읽고 스스로 정리해 보세요!)대상 프로세스의 핸들 구하기대상 프로세스의 메모리에 영역 확보하기확보한..
윈도우 이벤트 메시지 후킹 기법
·
Security/Reversing
사전 지식본 글을 이해하기 위해 필요한 사전 지식입니다.C++ 프로그래밍 언어Win32 API 프로그래밍(MSDN에서 원하는 함수의 사용법을 읽고 이해할 수 있는 정도)x64 어셈블리어 초급(x64 어셈블리어 calling convention 정도만 알고 있어도 문제 없음)x64dbg 도구 사용법(ollydbg 사용법과 비슷하기 때문에 ollydbg 사용법만 알아도 문제 없음) 후킹이란?영어로 Hook은 한국어로 갈고리라는 뜻을 가지고 있습니다. 갈고리는 무언가를 낚거나 가로챌 때 쓰는 것이죠. 리버싱에서 훅(Hook)을 건다(또는 설치한다)라고 하면, 어떤 정보를 엿보고 조작할 수 있다는 것을 의미합니다. 이 글에서는 리버싱에서 가장 기본적이라고 할 수 있는 후킹 기법인 이벤트 메시지 후킹 기법에 대해..
인라인 패치 기법
·
Security/Reversing
이 글에서는...프로그램을 패치하는 방법 중 하나인 인라인 패치 기법에 대해 알아봅니다. 사전 지식본 글을 이해하기 위해 필요한 사전 지식입니다.x86 어셈블리어 초급Windows PE 파일 구조ollydbg 도구 사용법실행 압축과 패커의 개념RVA 주소를 Offset 주소로, 또는 반대로 변환하는 방법 인라인 패치 (Inline Patching) 란?인라인 패치 기법이란, 프로그램에 있는 빈 공간에 원하는 코드를 삽입하고 그 코드의 실행이 끝났을 때 다시 원래 프로그램 코드의 흐름으로 돌아가도록 프로그램을 패치하는 기법입니다.(그 삽입된 코드를 Code Cave 라고 합니다.) 인라인 패치 기법은 프로그램 코드를 직접 수정하기 어려운 경우에 사용되는 기법입니다.프로그램 코드를 직접 수정하기 어려운 경우..
PE 파일 분석을 위한 C++ 프로그램 제작
·
Security/Reversing
서두리버싱 핵심원리 책에서 PE Viewer(PE Parser)를 직접 제작해 보라고 해서 직접 만들어 보았습니다.사전 지식본문에서 언급되지만, 자세히 설명하지 않는 사전 지식입니다.C++ 프로그래밍 언어Windows PE 파일 구조결과물 위 사진처럼 DOS 헤더, NT 헤더, FILE 헤더, OPTIONAL 헤더, SECTION 헤더, 그리고 프로그램에서 import 하고 있는 함수들의 정보를 담은 IMAGE_IMPORT_DESCRIPTOR 까지 출력하도록 만들었습니다. 파싱 작업처음엔 파싱을 어떻게 해야 할지 몰라서 저 큰 구조체의 정보들을 파일로부터 한 땀 한 땀 손수 읽어 들여야 하는 줄 알았습니다. (구조체의 멤버 크기에 맞게 한 땀 한 땀.. 2바이트 읽고, 4바이트 읽고, 이런 식으로요.) ..
Frida로 유니티 게임 리버싱하기 (궁수의 전설)
·
Security/Reversing
서론이번에는 지금까지 frida와 리버싱을 공부한 것을 토대로 모바일 게임 궁수의 전설(플레이스토어 링크)을 리버싱 해보겠습니다. 먼저, frida를 어떻게 사용해야 하는지, 앱 분석은 어떻게 진행되는지 알고 계시는 것을 추천드립니다.일단 궁수의 전설 앱에서 사용하는 함수를 frida로 후킹하여 우리가 원하는 동작을 하도록 조작할 겁니다. (체력, 공격력 등등) libil2cpp.so 파일 얻기우리가 현재 하고자 하는것은 궁수의 전설 APK 파일 안에 있는 libil2cpp.so 파일을 얻어 소스코드의 메서드의 심볼 정보(메서드의 이름)와 그 메서드가 메모리에 존재하는 위치를 알아내야 합니다. 메서드의 심볼 정보(함수 이름 정보)는 후킹 할 메서드를 고르기 위해 필요하고(캐릭터의 체력을 올리는 메서드, ..