악성코드 분석/실습

IDA - idapractice.exe 정적분석

レ(゚∀゚)ヘ=3 2023. 12. 20. 14:26
728x90

1) idapractice.exe IDA 프로그램을 이용하여 연다.

xp professional 사용(windows7 환경), 다운 시 방화벽 끄고 실행

2) 그래프모드로 열린 화면에서 텍스트 모드로 변경한다.

텍스트 모드로 변경(space)

3) 그래프모드에서 행번호와 명령어 코드를 출력하기 위한 옵션을 설정하시오.

Options - General - Display disassembly line parts - Line prefixes (graph) 선택 + Number of opcode bytes (graph) 6 설정

4) 단축키를 사용하여 401D90 주소 위치로 이동하시오.

 

단축키 g : Jump to address - 401D90 이동

5) 그래프 모드에서 화살표 색깔을 보고 무조건 점프, 조건 점프를 찾고 알아보시오.

초록색, 빨간색 화살표 : 조건 점프인 ‘jz'
▷ cmp 결과, 같으면 초록색 화살표
▷ cmp 결과, 다르면
빨간색 화살표

파란색 화살표 : 무조건 점프 ‘jmp’

6) 그래프 모드에서 반복되는 부분을 찾아 확인하시오.

초록색 화살표 : 해당 함수가 끝나면 다시 해당 함수 실행

7) 텍스트 모드에서 실선과 점선을 확인하고 의미를 기술하시오.

조건 점프(‘jz’) : 점선
무조건 점프(‘jmp’) : 실선
화살표가 위로 향하는 반복 구문 : 점선

8) 현재 코드를 여러가지 graph 모드로 확인하시오.

마우스 우클릭 - ‘Graphs’ 선택 - 위와 같이 그래프들 선택 가능
1. 현재 보고 있는 함수 그래프

2. 프로그램의 전체 흐름을 나타내주는 그래프

3. 현재 위치하는 주소가 어디를 거쳐서 호출이 되었는지 표시해주는 그래프

4. 현재 위치하는 함수가 호출하는 함수들을 보여주는 그래프

5. 원하는 영역 지정하여 볼 수 있는 그래프

9) 바이트를 "83 EC 18"를 찾으시오.

Binary search 창( alt+B 단축키) - String‘83 EC 18’ 입력 - Find all occurrences 선택

10) 문자열 윈도우로 단축키를 사용하여 이동하시오.

단축키 : shift + F12

11) 문자열 윈도우에서 검색 단축키를 사용하여 "idapractice.txt"를 찾아보시오.

검색 단축키 : Alt + t - 'idapractice.txt’ 입력

12) "'C:\idapractice.txt"를 사용하는 데이터 영역(.data)으로 움직인 뒤 xref 기능을 사용하여 코드 영역(.text)으로 이동하시오.

더블클릭 : ‘C:\idapractice.txt’ 사용하는 데이터 영역으로 이동 - ‘xref’부분의 ‘sub_401350’ 더블클릭 : 코드 영역 이동

13) CreateFile 함수를 Import 윈도우에서 찾은 후 임포트 영역(.idata)으로 움직인 뒤 xref 기능을 사용하여 코드에서 사용하는 위치(.text)로 이동하시오

imports 창으로 이동 - 단축키 Alt+t : Enter the search substring 실행 - ‘CreateFileA’을 입력 - 더블 클릭 - 임포트 영역으로 이동

CreateFileA 클릭 - 단축키 x : text에서 해당하는 위치로 이동

14) C:\idapractice.txt "Hello"라고 문자열을 저장하는 함수의 이름을 YourWriteFile으로 변경하시오.

CreateFileA 함수로 C:\idapractice.txt 핸들값 가져옴 -  해당 값으로 WriteFile - lpbuffer에 있는 값 write

sub_401350() 부분을 클린 - 단축키 n : Please enter a string - 'YourWriteFile' 추가

함수 이름 변경 완료

15) CALC.exe 파일을 Run레지스트리에 등록하는 함수의 이름을 "CreateRegistryKey"으로 변경하시오.

'2. Create Registry Key...'라고 적혀있는 부분의 sub_401400 부분 더블클릭 - 이동

‘SubKey’ 더블클릭 - 레지스트리 키 전체 이름 확인

단축키 F5 : c언어 변경 - 단축키 n : 이름 변경 - 'CreateRegistryKey' 추가

함수 이름 변경 완료

'RegSetValueExA’ 클릭 - 마우스 우클릭 - Enter comment.. : 코멘트 - 코멘트 입력

코멘트 추가 완료