Search Results for 'Reversing'


3 POSTS

  1. 2010.01.01 New features of IDA 5.6
  2. 2009.11.27 kernel 레벨 악성 코드 (DDoS Agent)
  3. 2009.11.26 X86/Win32 Reverse Engineering Cheat Sheet (1)

New features of IDA 5.6

Posted 2010.01.01 13:12 by beistlab
IDA 5.6의 새로운 특징들입니다. 사실 IDA에 많은 기능이 있는데 이중에서 얼마나 많은 기능을 해커들이 활용하는지는 잘 모르겠습니다. 참고로 저 같은 경우에는 툴 사용하는데 익숙하지가 않아서 그냥 IDA의 가장 충실한 기능인 디스어셈블 용도로 주로 쓰고 있습니다만 알고 보면 엄청나게 좋은 기능들이 무장되어 있죠. 5.6이 12월 31일부터 정식 Release되었습니다.

http://www.hex-rays.com/idapro/56/index.htm 새로운 버전의 특징들을 설명한 페이지를 소개하겠습니다.


Debuggers for MIPS and PowerPC

이제 MIPS랑 PowerPC도 디버깅이 지원된다고 합니다. (물론 ARM도 가능함.) Bochs가 지원되기 때문에 아마도 당연한 것일 겁니다. 만약 해당 아키텍처를 직접 보유하고 있지 않더라도 QEMU를 이용하여 에뮬레이팅 형식으로 디버깅을 할 수 있다고 합니다.

IDA + Emulating debuggers의 좋은 점은, 어떤 큰 대상을 리버싱해야 할 때도 좋지만, code snippet을 그냥 간단하게 실행해보기에 편리하다는 점입니다. 어셈블리 명령어에 잘 익숙하지 않더라도, 명령어가 진행될 때마다 변화되는 레지스터를 볼 수 있기 때문에 어떤 코드 부분이 어떻게 작동하는지 쉽게 파악할 수 있습니다.

ARM CPU도 역시 가능합니다!


64-bit debuggers for Linux and Mac osx

64비트는 저는 아직 안드로메다입니다. 베이직 코스라고도 할 수 있는 32비트 Intel CPU 리버싱도 제대로 못하고 있습니다. 아무튼 Linux와 Mac에서 64비트 바이너리들의 디버깅이 가능하다고 합니다. 근데 이 기능이 IDA Advanced 버전이 아니라도 사용할 수 있는건지 모르겠군요. 참고로 일반 버전은 Windows 64-bit 바이너리 디스어셈블리가 안됩니다.


Appcall: facility to call any function from the debugged application

Appcall이 이번 업그레이드 중에 중요한 요소인 것 같습니다. 요거는 그냥 원문 그대로 옮기겠습니다.

While debugging, sometimes there is a need to divert the normal execution flow and to execute a function of your choice in the target application. It could be a debug print function, or a repeated function call with modified arguments... With the new Appcall feature, it is a piece of cake: just enter the function call with arguments in the command line, and it will be called. For example: _printf("Hello world!\n") will print the greeting in the application console window. The possibilities opened by this facility are endless but intelligent fuzzing of selected functions is the one that comes into mind immediately.


사실 여기에 뭐 대단한 기술이 들어가는 건 아닐 겁니다. 그냥 단순하게 생각해보면 Appcall 기능이 호출되는 시점에서, 다음에 수행할 명령어들을 일단 임시로 다른 장소에 저장해놓고 함수의 프롤로그와 에필로그를 잘 준비하여 사용자가 원하는 함수를 호출해준 후, 다시 원복해주면 되겠죠. 그래도 이런 작업들을 하나의 명령을 통해 한번에 내릴 수 있다는 것이 훌륭한 기능이죠. 좀 활용해보고 싶은데 사용법을 아직 잘 몰라서 헤매는 중입니다. 테스트해보고, 좀 괜찮은 기능이다 싶으면 따로 포스팅을 하도록 하겠습니다.


Significantly improved the speed of the crash dump loader

Crash dump loader가 좋아졌다고 하는군요. 특별한 개선점은 없지만 상당히 느렸던 것을 빠르게 고쳤고, 이제는 windbg만큼이나 속도 개선이 있었다고 합니다. Dump file은 windbg에서만 열어봤었는데 이제는 IDA에서 해보는 것도 한번 시도해봐야겠네요. (어차피 windbg도 잘 몰라서 Crash dump 로드할 때만 썼기 때문에 흐흐)


Improved python

Python 해커들에게 역시 좋은 소식이군요. 이제 IDA가 돌아가는 모든 플랫폼에서 Python script 사용이 가능하다고 합니다. 호환성 뿐만 아니라 여러 기능들이 추가되었는데 대표적으로 Graphing API와 Appcall입니다.


Improved IDC

사실 IDC는 전 써본 적이 없어서 잘 모릅니다. 그냥 막연히 C 스타일의 스크립트를 만들어서 IDA에 쓸 수 있는 것으로 알고 있는데 Python script로 작성하는 것이랑 큰 차이가 없을 것으로 추측이 들지만, 음 모르겠군요. 사용할 수 있는 IDA library가 IDC에 더 많이 있는건지, 똑같을 것 같은데.. 아시는 분은 댓글 좀..


Scriptable loaders

전문 리버서가 아니라면 파일 로더를 직접 제작해야 할 일이 별로 없지만 IDA에서 특정 포맷을 위한 파일 로더를 직접 만들어야할 일이 있을 때는 C++로만 가능했었습니다. 이제 스크립트들을 이용하여 이 로더들을 작성할 수 있다고 하네요. Python와 IDC를 이용해서 말이죠.


IDA는 점점 더 진화하고 있군요. 과거의 IDA부터 지금의 버전까지 받는 평가를 초간략 요약하자면

1. IDA는, 흠, 그저 디스어셈블리 기능이 좋은 툴이야.
2. 엇, 디버깅 기능도 지원한다고? 하지만 아직 멀었어.
3. IDA에서 파이썬을 사용할 수 있다고? 제법인데
4. WTF! bochs랑 IDA라고?
5. Debugging MIPS through emulating on x86?!
6. IDA == swiss-army-knife, no doubt now!!

'보안 관련 정보' 카테고리의 다른 글

던킨 도너츠 공격 당하다  (2) 2010.01.03
DPC of PaiMei  (0) 2010.01.03
New features of IDA 5.6  (0) 2010.01.01
IE zeroday == $60k  (0) 2009.12.20
한국 보안/해킹 관련 IRC  (1) 2009.12.19
Twitter 해킹 당함  (1) 2009.12.19

Tag : 64bit, appcall, ARM, ida 5.6, MIPS, Reversing

Write your message and submit

kernel 레벨 악성 코드 (DDoS Agent)

Posted 2009.11.27 19:19 by beistlab
윈도우 Kernel 레벨에서 작동하는 악성 프로그램을 분석한 글입니다. 드라이버 이름은 nups.sys라고 하네요. 주 목적은 DDoS를 위한 Agent 역할이고, 좀비 PC들에 깔리게 되겠죠? 기본적인 기능은 User 레벨에서의 악성 코드와 크게 다를 것이 없습니다.

분석 글을 쓴 사람은 아마도 어디선가 이 샘플을 구해서 연구했을텐데, 그때까지 C&C 서버가 제대로 남아있을지 궁금했는데, 역시나 발견 당시에는 C&C 서버가 죽어버리는 바람에 확인을 못해봤다고 하네요. 결국 악성 코드를 아마도 거의 full로 리버싱을 한 듯 합니다. 이 악성 코드가 어떤 기능을 하는지 잘 써놨군요.

DDoS Driver 1/2: http://www.inreverse.net/?p=338
DDoS Driver 2/2: http://www.inreverse.net/?p=383

보통 DDoS 코드라고 하면 Web 전용이라고 떠올리기 쉬운데 (혹은 tcp packet 과부하 전용) nups.sys는 여러 프로토콜을 지원합니다. 지원하는 프로토콜들은 다음과 같습니다.

1. HTTP
2. TCP
3. UDP
4. TCPCON (TDI를 close하지 않는다는군요.)
5. ICMP

흥미로운 점은, DDoS 공격 시에, 패킷을 얼마나 많이 보내는지를 선택할 수 있는 옵션도 있습니다. 그냥 추측으로는 이 악성 코드는 러시아에서 만들지 않았을까 생각합니다. 뭐 해킹을 이용해서 금전적인 목적을 취하는 집단은 전 세계 어디에나 있지만 그중에 특히 러시아가 체계적으로 되어 있지 않을까 짐작입니다. 해킹 프로그램들은 가히 말할 수 없을 정도로 허접한 퀄리티를 갖는 것들이 많은데 이 정도 프로그램이면 악성 프로그램 중에서는 비교적 잘 짜여져 있다고 볼 수 있기 때문입니다.

그외의 기능으로는, 드라이버 업데이트 기능, 명령 실행 기능, 그리고 마지막으로 가장 일반적인 기능인 Download & Execute 기능입니다. 자체 삭제 메뉴는 없군요. ㅋㅋ 아무튼 악성 프로그램이긴 하지만, C&C 서버가 죽어버리거나 어떤 이벤트가 생겨서 잡았던 좀비 Agent를 놓쳐버리면 그 나쁜 집단에서는 얼마나 마음이 아플까요? ㅋㅋㅋㅋ 그래도 노력이 꽤 들어갔을텐데.. 피눈물을 흘릴 듯..


Tag : DDOS, ddos agent, kernel, malware, nups.sys, Reversing

Write your message and submit

X86/Win32 Reverse Engineering Cheat Sheet

Posted 2009.11.26 14:02 by beistlab
Intel CPU Assembly cheat sheet입니다.

http://www.rnicrosoft.net/docs/X86_Win32_Reverse_Engineering_Cheat_Sheet.pdf

프린트해서 보면 좋을 거 같긴 한데 전 그냥 이뮤니티 디버거에 dummy exe 하나 붙여서 명령어를 직접 입력해봅니다. 맞는 문법으로 안 쓰면 어차피 입력이 안되기 때문에 이뮤니티 디버거는 간편한 제 명령어 검사기로 활용되고 있음 후훗


Tag : assembly, Intel, Intel CPU, Reverse Engineering, Reversing

  1. Commonwealth

    | 2012.11.24 14:49 신고 | PERMALINK | EDIT | REPLY |

    나는 아주 이쪽으로 즐길입니다. 그 좋은 주제. 그것은 몇 가지 문제를 해결하기 위해 절 그다지 도움이됩니다. 그 기회가 너무 빠른 너무 환상적이고 일하는 스타일입니다. 난 당신이 모두 도움이 될 것 같아요. 감사

Write your message and submit