[선행 지식]
- IDA Pro
- 바이너리 형태의 실행파일을 분석해 고급 언어로 Decompile 하는 도구
- 여러 아키텍처의 바이너리 파일을 분석해서 C나 C++같은 언어로 변환

- IDAPython
- IDA는 Python으로 제작된 프로그램으로, 파이썬을 이용해 스크립트를 제작하여 고급 분석이 가능
- IDA를 위해 제작된 Import 함수들이 존재함 => API처럼 사용하면 됨
- Syscall = System Call

- 운영체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인퍼테이스
- 하드웨어를 직접적으로 사용하는 read, write, open 등의 행위를 사용자가 직접 수행할 경우 컴퓨터에 치명적 오류가 생길 수 있음
사용자가 직접 작성하는 C, Python 등의 고급 언어는 직접 read, write 등의 행위를 수행할 수 없음
사용자는 API를 이용해 read, write 등의 행위를 요청해야 함 => System Call을 통해 요청 => 커널 단에서 syscall 수행한 뒤 결과값을 사용자에게 돌려줌
Syscall Table은 각 syscall 정보를 숫자 값으로 저장하고 있는 테이블
ex) 사용자가 User Space에서 write API를 이용해 write("hello world") 요청 -> 커널에서 write에 할당된 syscall을 syscall table에서 검색 > 찾은 값으로 write 수행 > 결과값을 User Space에 돌려줌
- 악성코드가 syscall을 사용하는 이유
- 악성코드는 분석자의 분석을 방해하기 위한 안티 리버싱 방법을 사용함
- read, write, send, recv 같은 API들은 바이너리의 String 추출이나 IDA같은 디컴파일러에서 분석 시, 바로 API와 연관된 String 확인 가능 => 분석자의 분석이 용이해짐
- 분석자의 분석을 방해하기 위한 목적으로 string이 잘 보이는 API 사용 대신 syscall을 직접 사용함
- ex) close() ----->>>> syscall(3)
- 악성코드는 분석자의 분석을 방해하기 위한 안티 리버싱 방법을 사용함
[IDAPython - idapython_arm32_syscall_AutoExtract.py 활용법]
- IDA에 분석이 필요한 32bit ARM 악성코드 업로드

* 맨 아래 커맨드 작성 창이 IDC가 아닌 Python으로 설정되어 있어야 함
* Python이 설정되어 있지 않을 경우 IDA 디렉터리에 Python3이 깔려 있는지, 정확한 경로에 있는지 확인
* IDA의 파이썬 버전이 2로 되어 있을 경우 idapyswitch를 이용해 3로 변경해줘야 함
2. IDAPython 스크립트 실행 창 (Shift+F12) 열기
- Scripting language가 Python으로 설정되어 있는지, Tab Size가 4로 설정되어 있는지 확인

3. idapython_arm32_syscall_AutoExtract.py 소스코드 붙여넣기
( 해당 파일은 댓글로 요청하면 드리겠습니다)
- 붙여넣은 후 "Run" 클릭

4. 실행 결과 확인

- Output 결과창에서 Syscall 자동 추출 결과 확인
- 어느 함수의 어느 address에서 어떤 syscall을 사용했는지 알 수 있음 > 분석에 다양하게 활용 가능
ex) 어느 함수에서 파일 오픈 시도가 있는지 확인 -> open syscall 검색
어느 함수에서 네트워크 전송 시도가 있는지 확인 -> recv syscall 검색
결론 : 안티 리버싱 목적으로 사용하는 syscall 직접 접근 방식을 사용하는 악성코드를 IDA에서 분석 시, 해당 IDAPython 코드를 이용해 빠르게 분석 가능
'study' 카테고리의 다른 글
| APT 문서형 악성코드 분석 (0) | 2025.11.18 |
|---|---|
| 악성코드 유사성 비교 방법 (0) | 2025.11.18 |
| 악성코드 분석 시 C&C 서버 다운으로 통신 실패할 때 데이터 내용 확인 방법 (0) | 2025.11.18 |
| dnSpy를 이용한 .NET 악성코드 분석 방법 (0) | 2025.11.18 |
| Kimsuky에서 만든 피싱 메일 도구 - MailSending (0) | 2025.11.18 |