ADS


ADS란 Alternate Data Stream의 약자로 NTFS 구조에서는 다중의 데이터 스트림을 지원하는데, 이러한 데이터 스트림이 여러개라는 것은 파일이 하나 이상의 데이터를 담을수 있다는 것이다. 이를 이용하여 원하는 데이터를 다른 파일 안에 숨길 수가 있다.

아래의 그림을 보면 FAT 에서는 하나의 Data Stream만이 존재하지만 NTFS의 구조에는 Main Stream이 존재한다. 하지만 Main Stream 외에도 여러개의 Data Stream이 존재하는 것을 확인할 수가 있는데, 바로 이것이 Alternate Data Stream인 것이다.

이러한 ADS를 사용하여 데이터를 은닉할 수가 있으며 은닉된 데이터느 일반 사용자가 알아차리기가 힘들기 때문에 악성코드를 넣는 등 악의적인 용도로 사용이 가능하기에 Windows XP 이후에는 이러한 ADS에서 실행파일을 실행되지 않도록 했기에 더이상은 실행파일이 실행되지 않는다. 그렇다하여 ADS에 대해 모르는 것보다는 알고 있는 것이 좋다. 



Practice


이제 ADS를 직접 이용해보자. 가장 편하게 만들 수 있는 방법은 CMD와 echo 명령어를 이용하는 것이다. 아래에 그림과 같이 echo "This is ADS" > file.txt:ads.txt이라고 입력을 해준다. 여기서 중요한 것은 바로 " : " 표시이다. 저 기호를 통해 우리는 ADS로 접근을 할 수 있게 되는 것이다. 

파일이 생성된 이후 해당 파일의 내용을 확인해보면 아무것도 나타나지 않는다. 하지만 " : "을 이용해서 ADS에 접근하면 우리가 첫 줄에서 은닉하고자 했던 데이터 문자열이 출력되는 것을 확인할 수가 있다. 그리고 그 후에 디렉터리를 확인해보면 file.txt에는 아무 내용도 없는 것처럼 0바이트의 크기를 차지하고 있다는 것을 확인할 수가 있다. 즉, 우리는 ADS를 탐지하지 못하고 있다.


하지만 dir 명령어에 /r 이라는 옵션을 넣어주면 우리는 숨겨져있던 ADS의 목록을 볼 수가 있다. dir /r 을 입력해준 결과 아래와 같이 출력 되는 것을 확인할 수가 있다. file.txt 는 분명히 0 바이트를 차지하지만 그 바로 밑에 있는 file.txt:ads.txt는 16바이트의 크기를 차지하고 있다.


또한 아래와 같이 디렉터리 자체에도 ADS를 형성할 수가 있다.



Conclusion


이렇게 간략한 방법으로 ADS를 형성할 수 있다는 것을 확인하였다. 만약 아직도 ADS에 있는 실행파일을 실행할 수 있게 된다면 이는 악성코드로 부터 많이 사용될 확률이 높다. 현재는 이러한 기능이 차단되어 XP까지만 가능하지만, Power Shell을 이용하는 방법 등 아예 실행하지 못하는 것은 아닌 것 같다. 이에 대해서는 추후에 지식을 더 쌓게 되어 다루게 된다면 다시 포스팅 하겠다.




Reference


http://www.codeblack.net/2015/03/ntfs-file-system-adsalternate-data.html

http://blog.naver.com/PostView.nhn?blogId=ifkiller&logNo=70156536987&redirect=Dlog&widgetTypeCall=true




2018-06-19

ADS 또한 실행 할 수 있는 방법이 존재한다. 아래의 방법은 Windows 7 x64 에서 Test 했을 때 성공적으로 실행되었다. 다른 환경은 아직 테스트 해보지 않았다.

 WMIC process call create "%temp%\\dummy.txt:ads.exe" 

참조 링크 : http://asec.ahnlab.com/1090?category=342979

'Forensic > Theory' 카테고리의 다른 글

Web Forensic  (0) 2015.09.19
Covert TimeStamp  (0) 2015.09.18
Steganography  (0) 2015.09.16
Icon Forensic ( ICON 분석)  (2) 2015.09.13
Thumbnail Forensics (썸네일 분석)  (0) 2015.09.13