yon11b

[SK 쉴더스 루키즈] 윈도우 API 개념 & ADS 실습 본문

보안/SK 쉴더스 루키즈

[SK 쉴더스 루키즈] 윈도우 API 개념 & ADS 실습

yon11b 2026. 5. 27. 20:02
반응형

윈도우 API

대부분의 악성코드는 윈도우 환경에서 동작하기 때문에 윈도우 API에 대해 잘 알아두는 것이 좋다.

 

사용자가 Windows 32 API를 호출하면, API는 커널에 시스템 호출(SYSCALL)을 전달한다.

https://kavigihan.medium.com/introduction-to-windows-api-970f714ba700

윈도우 보안 모델: 핸들

프로그램이 파일 같은 커널 자원을 직접 만지는 게 아니라, 먼저 핸들(허가증)을 받아서 접근해야 한다.

1. 프로그램에서 CreateFile(), OpenProcess() 같은 API를 호출한다.

   - 커널에 요청함

2. 커널 내부에 실제 객체가 만들어진다.

3. 커널이 핸들(접근권)을 반환해준다. (이때 프로그램 사용자의 토큰을 확인함)

4. 이제 프로그램은 핸들을 이용해서 작업한다.

   - ReadFile(hfile)

   - WriteFile(hfile)

 

DLL

Dynamic Link Libraries (동적 링크 라이브러리)

여러 애플리케이션이 코드를 공유할 수 있도록 윈도우가 제공하는 라이브러리 방식

 

외부 DLL 사용 사건

다른 프로그램의 DLL을 활용해 직접 구현 없이 기능을 사용할 수 있음

  • 한수원 거래처 해킹
    • 팀뷰어 내에 있는 DLL파일(원격 제어 기능)
    • 북한 소행
  • 파이퍼 폭스 DLL로 통신

 

파일 시스템 API

악성코드에서는 파일 생성, 수정을 많이 다루므로 파일시스템 API에 대해서 잘 알아놔야 한다.

 

주요 API들

함수 설몀
CreateFile 파일 생성, open
ReadFile, WriteFile 파일 read, write
CreateFileMapping,
MapViewOfFile
메모리에 가져와서 조작. ctrl+s를 누르기 전까지 반영이 되지 않음.

 

 

파일 시스템

네임스페이스 우회

공유 파일 - SMB 프로토콜로 접근 가능

 

ADS

NTFS에서 하나의 파일 이름이 여러 개의 데이터 스트림을 가질 수 있게 한 구조

=> 따라서 NTFS 파일 시스템에서는 ADS 영역에 데이터를 작성하여 은닉할 수 있다.

파일 안에 숨겨진 추가 데이터 공간 이라고 생각하면 된다.

 

쉬운 설명

test.txt라는 파일이 있을 때 실제로는 test.txt:secret같은 숨겨진 스트림을 추가로 만들 수 있다. 즉 하나의 파일에 원래 내용, 숨겨진 내용이 동시에 저장 가능하다.

echo hello > test.txt
echo malware > test.txt:secret

그리고 test.txt를 열면 hello만 보인다.

하지만 내부적으로는 secret 스트림도 존재한다.

 

ADS 실습

messagebox.exe

test.txt 파일

 

 

test.txt 파일 뒤의 ADS 공간에 messagebox.exe를 붙인다.

cat messagebox.exe > test.txt:messagebox.exe

이렇게 해도 test.txt만 보이고 test.txt:messagebox.exe는 보이지 않는다.

 

윈도으의 type 명령어는 리눅스의 cat 명령어와 같다.

심지어 test.txt 파일 크기를 확인해봐도 18바이트로 그대로이다.

 

 

test.txt 파일 안에 숨겨진 messagebox 실행하는 명령어

powershell -Command "Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine = '%USERPROFILE%\test.txt:messagebox.exe'}"

HACK!!

 

숨겨진 스트림 확인하는 dir 옵션 명령어

dir /R test.txt

test.txt:messagebox.exe 확인!!

 

728x90