[.NET 악성코드의 꾸준한 증가]
- Infostealer와 RAT 악성코드에서 꾸준히 .NET을 사용해 악성코드를 제작 중

- 현재 전세계에서 유행하는 악성코드 top 10 중에서 .NET으로 제작되거나 패킹된 악성코드가 5 종류 이상
- AgentTesla, Formbook, Nanocore, Remcos, AsyncRAT 등
[.NET 악성코드 특징]

- .NET C# 컴파일 과정은 1차
- 컴파일과 2차 컴파일 과정을 거침
- 1차로 IL(Intermediate Language)이라는 중간 언어로 컴파일 한 후 2차 컴파일을 거쳐 PE파일 생성
- IL로 1차 컴파일 되는 특성 때문에, OllyDBG나 IDA에서 흐름이 제대로 보이지 않음 >> IL을 분석하는 것이 용이

- .NET 악성코드의 특성 상 Import Table, Section, String 등에서 악성 행위와 관련된 힌트를 찾기 어려움
[dnSpy를 이용한 .NET 악성코드 분석]
dnSpy
- .NET 디컴파일러, .NET 디버깅 툴
- 디버깅 및 코드 편집 등 분석에 필요한 다양한 기능 포함
다운로드 사이트 : https://github.com/dnSpy/dnSpy/releases
<사용법>

- dnSpy 실행 후 악성코드를 열면 디컴파일하여 사용자에게 보여줌
- 좌측 Assembly Explorer에서 클래스 및 함수를 누르면 우측에서 코드 내용 확인 가능
- 디버깅으로 동적 분석 전, 어떤 코드가 있는지 간단히 확인

- 디버깅을 위해 상단 Start 버튼 클릭 후 Entry Point에 Break 설정
- 악성코드의 가장 시작 지점인 Entry Point에서 디버깅 시작할 수 있음

- dnSpy에서 디버깅에 필요한 필수 단축키 목록
- F9 : BreakPoint 설정
- F10 : Step Over (하위 함수는 실행하지 않고 지나감)
- F11 : Step Into (하위 함수로 들어감)
- Shift+F11 : Step Out (해당 함수에서 상위 함수로 올라감)
- Ctrl+Alt+U : View Modules (메모리에 올라온 모듈들 확인)
- Ctrl+Alt+H : View Threads (현재 쓰레드들 확인)
- Ctrl+1 : View Memory (메모리 내용을 보여줌)
- Alt+4 : View Locals (변수명과 변수 내용을 보여줌)
[.NET 분석 포인트]
.NET은 디컴파일이 가능한 특징이 있음 > 공격자 입장에서는 분석자가 분석하기 어려워야 함 > 실제 악성행위를 하는 악성코드를 여러 번 패킹하거나, 외부에서 다운로드 하는 경우가 많음
- 외부에서 다운로드 캐치 > 동적 분석으로 얻을 수 있음
- 패킹된 실제 악성코드 찾기 > 디버깅을 통해 얻어내야 함
[패킹된 실제 악성코드 찾기]
방법 1)

탭은 Modules에 놓음 > 어떤 BreakPoint도 걸지 않은 상태로 Continue로 악성코드 실행
* “InMemory”가 Yes로 생성된 모듈은 악성코드가 자체로 만들어 올린 모듈
* 숨겨져 있던 악성코드로 간주
* 오른쪽 버튼 클릭 후 Save Module 클릭하여 PE파일 형태로 저장 후 분석 진행
방법2)


탭을 Locals에 놓은 후 순차적으로 디버깅
* 비정상적으로 큰 크기의 변수가 할당된다면 복호화된 악성코드를 저장하는 용도로 사용될 확률이 큼
* 해당 변수를 expand 해 놓은 상태로 계속 Step Into 혹은 Step Over 실행
* PE파일 시그니처인 4D 5A로 시작할 경우 악성코드로 간주하고 해당 파일 저장 (변수 오른쪽 버튼 클릭 후 save)
패킹을 모두 걷어내고 나면 실제 악성코드는 분석 시 문자열이나 함수명, 코드 등에서 악성 행위가 보다 선명히 드러남
'study' 카테고리의 다른 글
| APT 문서형 악성코드 분석 (0) | 2025.11.18 |
|---|---|
| 악성코드 유사성 비교 방법 (0) | 2025.11.18 |
| 악성코드 분석 시 C&C 서버 다운으로 통신 실패할 때 데이터 내용 확인 방법 (0) | 2025.11.18 |
| Decompiler - IDA Pro에서 32bit-ARM 악성코드 파일의 Syscall 자동검색 IDAPython 코드 (0) | 2025.11.18 |
| Kimsuky에서 만든 피싱 메일 도구 - MailSending (0) | 2025.11.18 |