• 게임 매크로 Inventory A+ 분석

    1. 기능 소개   [그림 1] Warcraft III 에서의 인벤토리   Inventory A+는 Blizzard 사의 Warcraft III 의 인벤토리 단축키를 변경하는 매크로입니다. 원래 인벤토리의 아이템을 사용하기 위한 단축키는 숫자패드의 7, 8, 4, 5, 1, 2 이지만, Inventory A+ 를 실행하면 인벤토리 단축키가 [그림 2]와 같이 변경됩니다. 실제로 이 매크로는 DotA 용으로 제작된 것입니다.   [그림…

  • The Linux Kernel Module Programming Guide v2.6

    Articles에 문서를 업데이트 했습니다. CERT-IS의 남윤민 군의 번역문서입니다. task_struct 구조가 변경되기 전의 Linux Kernel 2.6 버전에서 커널 모듈을 어떻게 작성하는 지를 설명한 기초 문서입니다. 아래의 링크는 이 문서의 원본과 KLDP에 있는 2.4 버전의 번역 문서입니다. The Linux Kernel Module Programming Guide 2.6 (원문) The Linux Kernel Module Programming Guide 2.4 (번역/KLDP)

  • DumpFromOEP.py for Immunity Debugger

    Windows XP에서 Immunity Debugger의 플러그인들이 충돌을 일으켜서 만들었던 스크립트입니다. OllyDump의 소스코드를 보면서 만들었습니다. 단순히 메모리를 덤프해서 PE 헤더를 고친 후 파일로 출력하는 게 전부입니다. PyCommand 디렉토리 아래에 스크립트 파일을 저장한 후, eip가 OEP에 있을 때 커맨드라인에서 다음과 같이 입력하면 실행이 됩니다. !dumpfromoep [a path of the output file] OEP까지 직접 찾아가야 하고 IAT도 수동으로 고쳐줘야…

  • From AppInit_DLLs To Injection

    [그림 1] 이메일 웜 Warezov는 AppInit_DLLs에 악성 DLL의 경로를 입력한다다음의 윈도우즈 레지스트리에 DLL 파일의 경로를 입력하면, 이후 새로운 프로세스가 생성될 때마다 키값에 입력된 DLL 파일이 프로세스에 인젝션됩니다.user32.dll이 프로세스에 적재되면서 DllMain 함수에서 레지스트리 키값을 열람하고 DLL을 적재할거라고 생각할 수 있지만, 그렇지 않습니다. AppInit_DLLs의 DLL 파일은 시스템 DLL 파일들이 적재된 이후에 프로세스 초기화 과정에서 프로세스에 적재됩니다. [그림…

  • Windows Debugging Intrenals: A to Z

    Articles에 문서를 업데이트 했습니다. Windows 의 내부 매커니즘이 어떻게 유저 모드 디버깅을 제공하는지에 대하여 설명한 Alex Ionescu 의 3부작 시리즈를 번역하였습니다. Alex Ionescu 는 ReactOS 의 커널 개발자이면서 『Windows Internals』 의 저자입니다. 이 문서는 Dbgk 라는 NT 커널(ntoskrnl)의 객체와 디버그 이벤트를 주고받는 방법에 대해서 Win32 (kernel32) 관점부터 DbgUi 객체와 NT 시스템 라이브러리(ntdll)까지 설명합니다. 문서를 이해하기…

  • IsDebuggerPresent 그리고 패치

    Anti-Reversing 기법 중에서 가장 기초적인 방법은 IsDebuggerPresent[^1] 함수를 사용하는 것입니다. IsDebuggerPresent 함수는 호출된 프로세스가 유저 모드 디버거에 의해 호출되었는지를 확인하는 Windows API입니다. windows.h 헤더파일을 인클루드하면 바로 호출할 수 있고, Windows 2000부터 지원된다고 MSDN에 설명되어 있습니다. 함수 원형은 아래와 같습니다. 파라미터는 필요 없고, 현재 프로세스가 유저 모드 디버거에 의해 호출된 것이면 0이 아닌 값을 반환합니다. 그런데…

  • HDCON 2011 예선 Stage 4 – 안드로이드 악성코드 분석

    stage 4 문제는 제게 큰 짜릿함을 맛보게 해준 문제입니다. 대회 첫 째날이 종료되기 몇 시간 전부터 보기 시작했는데 밤 새고 대회 둘 째날이 종료되기 27분 전에야 패스워드를 인증했기 때문이죠. 중간에 잠시 눈 붙인 몇 시간을 제외하면 꼬박 24시간을 이 문제에 붙었었는데, 포기하지 않고 끝까지 보니까 결국 풀리더군요. 그 때의 짜릿함은 정말 엄청났습니다. 그리고 미리 말씀드리자면…

  • HDCON 2011 예선 Stage 1 – 아이폰 위치 추적

    어느덧 돌아온 제8회 해킹방어대회, 2011 HDCON 예선의 첫 번째 문제입니다. Question 1번 문제 : 후후대학 CC인 ‘몽’양과 ‘휘’군, 평소 바람기가 넘치는 바람둥이 ‘몽’양은 평소 남자친구 ‘휘’군의 노트북을 통해 스마트 폰을 동기화 한다.  SIS 시험을 위해 열공 하던 ‘휘’군은 시험전날 저녁에 ‘몽’양과 연락이  되지 않았다. 이번 기회에 ‘휘’씨를 도와 여자 친구인 ‘몽’양의 바람기를 잡자. (2011년 1회…

  • Textcube v1.8.5 XSS Vulnerability on RSS Reader

    지난 2월 27일, TNF 팀에 텍스트큐브 v1.8.5에서의 XSS 취약점을 보고한 적이 있습니다. 당시 보고했던 취약점은 OpenID를 이용한 방문자 로그인 시에 XSS 공격이 되는 문제와 관리메뉴의 RSS 바깥글 읽기에서 플래시를 통하여 XSS 공격이 되는 문제였습니다. 이 취약점들이 오늘 오전 5시 45분에 v1.8.6 발표후보 1이 공개되면서 패치되었습니다. OpenID로 방문자 로그인 시에 XSS 공격하는 문제는 non-persistent XSS 취약점이구요….

  • BOF에 의한 연속적인 함수 호출 – 루피의 모험

    함수 A가 종료되고 함수 B가 곧바로 실행될 때의 스택의 변화를 살펴보면, 함수의 에필로그(leaveret) 때문에 esp+4의 값이 새로운 return address가 되는 것을 알 수 있습니다.[^1] 이러한 특성 때문에 프로그램에 BOF 취약점이 존재할 때 연속적인 함수 호출이 가능해집니다. 다음은 BOF 취약점이 있는 예제 소스입니다. 한 눈에 봐도 4byte 크기의 버퍼가 오버플로우 되는 것을 알 수 있습니다. 루피의…