소프트웨어 버그 헌팅 - 2.1 (OllyDBG, IDA)
소프트웨어 버그 헌팅 - 2에 이어서 진행
전 포스팅에서 배웠던 어셈블리를 OllyDBG와 IDA로 간단한 프로그램을 통해 실습 진행
Hello world, 덧셈 프로그램, 계산기 프로그램 분석해볼 것
OllyDBG 설치방법은 너무 잘 나와있는 곳이 많아서 따로 말하지 않음
IDA에서 파이썬 스크립트를 사용하기 위해 다음과 같은 방법을 진행
idapython-1.5.3_ida6.2_py2.7_win32.zip
- python 폴더를 그대로 아이다 폴더에 이동
- .cfg 파일을 아이다 cfg 폴더 안으로 이동
- plugs 폴더 안에 2개의 파일을 아이다 플러그 폴더 안으로
위의 방법으로 옮기고 실행하면 파이썬 스크립트를 사용할 수 있음
올리디버거 명령어
F7 - Step
F8 - Step over
F9 - Run
F2 - Breakpoint
CTRL+F2 - 프로그램 재실행
먼저 Hello World 파일 분석
Hello World 말고 하는 기능이 없는 프로그램이다. Main 찾는 방법이다.
바로 비슷한게 보이는 건 안 비밀
우클릭 -> Search for -> All refreenced text strings으로 들어가면 hello world가 있다 이걸로 메인을 찾을 수 있다.
또는 F8로 쭉쭉하다가 CALL에서 갑자기 프린트가 된다.(저기서 F8 누르면 hello world가 찍힘)
저기서 F7로 call안에 들어가본다.
PUSH EBP부터 함수 프롤로그가 시작되고 helloworld가 나오고 함수 에필로그가 찍히고 끝난다.
그 다음 add 파일 분석
이것도 위의 Hello world 파일과 비슷하게 찾을 수 있다.
추가적인 팁
오른쪽 아래 칸은 스택 영역이다. 거기서 메모리 우클릭 -> Address -> Relative to ESP, EBP으로
ESP, EBP 기준으로 스택 영역을 보여준다.
또 하나더 왼쪽 위 메인창에서 주소를 알 수 있는데,
왼쪽 아래에서 CTRL+G로 주솔르 찾아 갈 수 있따
CTRL+G -> 00404000 찾으면 아래와 같이 result 값이 헥사값으로 찍혀있는 것을 확인할 수 있다.
다음은 calc 분석
메인은 찾았다 치고
PUSH EBP - EBP의 값 저장 (프롤로그)
MOV EBP, ESP - EBP에 ESP값 저장
AND ESP ~ - 컨파일러가 추가한 내용으로 큰 영향없음
SUB ESP, 20 - ESP에서 20을 빼서 지역함수 크기 할당
CALL calc.00401F00 - 별거 없음
(아래에 볼때 오른쪽 아래 스택 영역에서 Relative to ESP로 보면 편함)
MOV ESP+8, 0 - ESP+8에 0 넣기
MOV ESP+4, 2 - ESP+4에 2넣기
MOV ESP,1 - ESP에 1넣기
MOV ESP+1C, EAX - EAX의 값을 ESP+1C에 넣기
MOV ESP+8, 1 ESP+8에 1 넣기
~
MOV EAX, 0 - 에필로그, return 0와 비슷한 역할
LEAVE - 에필로그
RETN - 에필로그
올리디버거를 쓰면서 아이다랑 같이 사용하면 좋다.
아이다로 흐름을 파악하고 올리디버거로 분석을 많이 한다고 한다.
왼쪽에는 함수 목록을 볼 수 있으며,
graph overview는 분기문 등을 표로 표시해줘서 흐름이 어떻게 되는 지 알 수 있다.
View -> Open Subviews로 여러가지를 확인할 수 있따
import - 외부 함수를 가져오는 것을 확인할 수 있다. 분석시 import는 보고 간다고 한다.
Segment에 들어가면 영역을 볼 수 있다.
String 도 확인할 수 있다.
처음에 Python 스크립트 환경 설정한 것을 사용할 수 있다.
대표적으로 아이다 코드에 색입히기인데, 이것으로 중요한 곳을 색칠할 수 있다.
SetColor(here(),CIC_ITEM,0xBB3737)
이후 Find Key 등등 풀어보면 좋을 것 같다.
'Reversing' 카테고리의 다른 글
소프트웨어 버그 헌팅 - 3.1 (소스코드 검사 및 퍼징 실습) (0) | 2019.12.07 |
---|---|
소프트웨어 버그 헌팅 - 3 (IDA 스크립트 활용한 findkey 문제 풀이) (0) | 2019.12.07 |
소프트웨어 버그 헌팅 - 2 (어셈블리 기초 및 실습) (0) | 2019.12.07 |
소프트웨어 버그 헌팅 - 1 (취약점 개요 및 메타스플로잇) (0) | 2019.12.07 |
시스템 내에서 일어나는 여러 행위들을 기록하는 툴 Sysmon (1) | 2017.08.23 |
최근댓글