Windows .NET 악성코드는 Assembly.Load(), File.ReadAllBytes(), Process.Start(), Registry.SetValue() 등의 System 네임스페이스 함수들을 공통적으로 사용합니다. dnSpy를 활용한 분석 시에는 Main 진입점 파악, 리소스 섹션 검사, 난독화 해제, 디버깅 브레이크포인트 설정 등이 핵심 분석 기법입니다.

1. .NET 악성코드 공통 함수명
아래는 Windows .NET 악성코드에서 빈번하게 사용되는 주요 함수들입니다:

분류 함수명 설명
어셈블리 로딩 Assembly.Load(), Assembly.LoadFrom() 메모리 내 바이트 배열에서 .NET 어셈블리 로드
파일 조작 File.ReadAllBytes(), File.WriteAllBytes() 파일을 바이트 배열로 읽기/쓰기
메모리 스트림 MemoryStream, DeflateStream 메모리 내 데이터 압축/해제 처리
프로세스 실행 Process.Start(), ProcessStartInfo 외부 프로그램 실행 및 프로세스 주입
레지스트리 조작 Registry.SetValue(), Registry.GetValue() 시스템 레지스트리 키/값 읽기/쓰기
리플렉션 Type.GetType(), Activator.CreateInstance() 동적 타입 로딩 및 인스턴스 생성
네트워크 통신 HttpClient, WebClient.DownloadData() HTTP 요청 및 페이로드 다운로드
암호화/복호화 CryptographicException, AES.Create() 페이로드 암호화/복호화
문자열 조작 Convert.FromBase64String(), Encoding.UTF8.GetBytes() Base64 인코딩/디코딩

 
2. dnSpy를 활용한 분석 기법
2.1 기본 분석 절차

1) 진입점 파악

  • Main() 함수 또는 Module Constructor (.cctor) 확인
  • Entry Point에서 호출되는 첫 번째 함수들 추적
  • 정적 생성자(.cctor)에서 초기화 루틴 검사

2) 리소스 섹션 검사

  • Resources 폴더에서 임베디드 바이너리 확인
  • 암호화된 페이로드가 리소스로 저장되는 경우가 많음
  • 리소스 크기와 엔트로피 분석으로 악성 페이로드 식별

3) 난독화 탐지 및 해제

  • ConfuserEx, SmartAssembly 등 난독화 도구 식별
  • de4dot 도구를 이용한 자동 난독화 해제
  • 함수명과 변수명이 무의미한 문자열로 변경되어 있는지 확인

 

2.2 디버깅 및 브레이크포인트 설정

1) 핵심 함수에 브레이크포인트 설정

  - dnSpy의 Debug 메뉴에서 다음 함수들에 브레이크포인트를 설정합니다:

// 어셈블리 로딩 시점
Assembly.Load()
Assembly.LoadFrom()

// 파일 조작 시점
File.ReadAllBytes()
File.WriteAllBytes()

// 프로세스 실행 시점
Process.Start()

// 레지스트리 조작 시점
Registry.SetValue()


2) 런타임 분석

  • F5 (Continue) 또는 F10 (Step Over)로 실행 제어
  • Locals 창에서 변수 값 실시간 확인
  • Call Stack 창에서 함수 호출 흐름 추적

3) 메모리 덤프

  • Modules 창에서 런타임에 로드된 어셈블리 확인
  • 메모리에 로드된 악성 페이로드를 디스크에 저장
  • 언패킹된 바이너리를 별도로 저장하여 추가 분석

 

2.3 고급 분석 기법
1) 다단계 로더 분석

  • 각 단계별로 독립적인 실행 파일 생성
  • 중간 단계에서 브레이크포인트 설정으로 다음 단계 페이로드 추출
  • Garbageman 도구를 활용한 메모리 문자열 자동 추출

2) 암호화 루틴 분석

  • AES 복호화 함수에서 키와 IV 값 추출
  • CyberChef 등 도구로 복호화 검증
  • 설정 파일이나 C&C 서버 정보 복호화

3) 리플렉티브 로딩 탐지

  • Assembly.Load() 호출 시 바이트 배열 내용 확인
  • 메모리 내에서만 존재하는 페이로드 식별
  • MITRE ATT&CK T1620 기법 대응

 

3. 분석 시 주의사항

3.1 환경 설정

  • 격리된 분석 환경 사용 (가상머신, 샌드박스)
  • 네트워크 차단 후 분석 진행
  • 스냅샷 생성 후 분석 시작

3.2 효과적인 분석 전략

  • 모든 코드를 라인별로 분석하지 말고 핵심 함수만 집중
  • 브레이크포인트 남용 방지 - 주요 API 호출에만 설정
  • 파라미터 무시 방지 - 사용되지 않는 매개변수도 분석

 

4. 결론

.NET 악성코드 분석에서는 Assembly.Load, File.ReadAllBytes, Process.Start, Registry.SetValue 등의 시스템 함수 호출 패턴을 파악하는 것이 핵심입니다. dnSpy를 활용하여 진입점 분석 → 리소스 검사 → 난독화 해제 → 디버깅 브레이크포인트 설정 → 메모리 덤프 순으로 체계적으로 접근하면 .NET 악성코드의 동작 원리와 페이로드를 효과적으로 분석할 수 있습니다.

+ Recent posts