본문 바로가기

Programming/Python

Immunity DBG 기초

Immunity DBG 기초


ImmunityDBG에 대해서 알아보도록 하죠. ImmunityDBG는 OllyDBG와 매우 흡사하게 만들어 졌습니다. 하지만 ImmunityDBG는 Python 스크립트가 작동합니다.!!!!

OllyDBG 개발자가 ImmunityDBG를 만들었다고 하네요 ^^





python과 ImmunityDBG가 서로 작동이 되는지 확인해 보도록 하겠습니다.


먼저 C:\Program Files\Immunity Inc\Immunity Debugger\PyCommands로 이동합니다.

해당 폴더에 demo.py를 만들고 아래 소스코드를 작성하도록 합니다.






위 소스코드를 보면, immlib를 추가했는데 이 부분은 ImmunityDBG에서 사용할 수 있도록 해준다고 생각하면 됩니다.

그리고 main()이 정의되어있는데 C에서 main()를 선언한 것과 같다고 생각하면 됩니다. 단순히 Debugger를 사용하겠다고 작성한 소스코드라고 생각하면 됩니다.


해당 소스코드를 저장 후에 ImmunityDBG를 실행합니다.





ImmunityDBG의 하단 부분에 !파일명 으로 실행해보도록 합니다.





return으로 반환된 문자열이 나타났습니다. 이렇게 ImmunityDBG가 python으로 작동한다는 것을 알 수 있습니다.


그렇다면 ImmunityDBG는 이렇게 소스코드를 작성하고 실행해야만 하는 것일까요? python은 인터프리터로 작동하므로 분명 ImmunityDBG에서도 인터프리터로 동작 시킬 수 있을 겁니다.



ImmunityDBG의 상단 메뉴들을 보면 '>>>' 인터프리터 모양을 볼 수 있습니다. 이 버튼을 눌러보죠




해당 버튼을 눌으면 아래와 같이 창이 하나 띄워집니다.





이곳에 python 스크립트를 작성하여 실행 할 수 있습니다.



그러면 아래 소스코드를 한번 입력해 보도록 하겠습니다.




immlib는 ImmunityDBG를 사용한다는 뜻이고, immlib.Debugger()는 현재 디버거에 붙는다는 말입니다. createTable()을 하게 되면 새로운 창이 하나 생성되는데, 각 테이블에 PID, Name, path가 적혀 있는 것을 확인 할 수 있습니다.








간단하게 ImmunityDBG에서 python으로 notepad를 실행시켜 보도록 하겠습니다.




해당 소스코드를 Pycommand에 저장 후 실행합니다. 그러면 notepad.exe 가 디버거에서 실행되게 됩니다.

그렇다면 항상 이렇게 경로를 지정해주고 실행시켜야 할까요? 매우 귀찮은 일입니다.



PID를 입력해서 attach가 되는 소스코드를 작성해 보죠.




attach()가 사용된 것을 볼 수 있는데 말 그대로 붙인다는 말입니다. args[0]은 인자 값으로 PID를 넣기 위한 것이구요.

file - attach를 눌러보면 실행이 되고 있는 PID가 나타나게 됩니다. 물론.... file - attach를 눌러서 하면 되는 매우 편한 일이지만 python을 배우는데 초점을 맞춥니다.




현재 저의 프로세스 실행 목록에 곰플레이어가 있습니다. 이 PID는 6556인데 ImmunityDBG에서 !파일명 PID를 해보도록 하죠.





해당 PID를 입력한 순간 디버거에서 작동하여 실행이 되는 것을 알 수 있습니다.






위 예제들을 가지고 조금 응용해서 디버깅 중인 프로그램에 어떤 모듈들이 작동하는지 알아보도록 하죠.




추가된 부분은 log()인데 log를 기록하는 것입니다. PyCommand에 demo.py라고 저장한 후 임의의 프로그램을 ImmunityDBG로 실행합니다.

그 후 !demo라고 입력하면 다음과 같이 실행되고 있는 모듈이 나타나게 됩니다.




'Programming > Python' 카테고리의 다른 글

Pyhook  (2) 2016.03.14
Assemble, Disassemble, Search  (0) 2016.03.14
Exploit 기초  (0) 2016.03.14
Raw 소켓 스니핑  (0) 2016.03.14
웹 페이지 만들기  (0) 2016.03.14