진술서전송앱

진술서전송앱_v0.1.apk
5.87MB

최근 다녀온 교육을 다녀온 후 윈도우 아티팩트와 디지털 포렌식에 대해 관심이 생기던 중

포렌식 문제풀이 사이트인 http://ctf-d.com/에 대해 알게되었다.

 

오랜만에 문제를 풀다보니 옛날 생각도 나고 하기에...

기록을 남기기 위해 겸사겸사 간략하게 블로그에 포스팅하려고 한다.

 

1. 문제

이 사이트에 있는 문제들은 번역기로 돌린 것 같은 뉘앙스가 물씬난다.

어쨌든 jpg파일이 하나 있고, 이를 통해 플래그를 찾는 것으로 보인다.

 

2. 풀이과정

hidden.jpg 파일을 열어 확인하면 이렇게 허여멀건한 화면만 보이므로 아무것도 확인할 수 없다.

 

 

jpg파일의 헤더 값등을 확인하기 위해 HxD를 이용해 헥사값을 열심히 찾아보았지만 별 특이사항이 없었다.

 

 

jpg파일의 EXIF 메타데이터에 힌트가 있을까 싶어 https://29a.ch/photo-forensics/#forensic-magnifier

업로드 해보았지만 특별한 것은 없었는데, 사이트에서 이것 저것 옵션을 눌러보던 중

Noise Analysis기능을 이용하자 사진에 플래그가 적혀있는 것을 알 수 있었다.

 

사진의 밝기조절을 하면 플래그를 읽을 수 있겠다는 느낌이 와서 구글링을 하였고, 포토스케이프 라는 툴을 알게 되었고,

포토스케이프를 이용해 밝기와 색상을 적절하게(?) 조절하자 플래그를 확인 할 수 있었다.

 

3. 마치며

1~2년간 글이라곤 수사보고서만 작성하다보니 블로그에 포스팅하는 게 너무 어색해져 버렸다ㅠㅠ

문체도 의식하지 않고 작성하려 하였지만, 다시 읽어보니 굉장히 수사보고서스럽다..

 

어쨌든, 포렌식 공부도 할 겸 d-ctf 사이트 문제풀이에 대한 포스팅을 다시 한번 간간히 진행해보려고한다.

제로데이 취약점을 찾는 것은 말할 필요도 없이 중요하고 멋진 일이다.

하지만 때때로 제로데이 취약점을 찾는 것만큼 필요하고 의미 있는 일이 패치가 발표된 원데이 취약점의 POC를 구현하는 일이다.

이번 글에서는 이런 원데이 취약점 중 공개된 정보가 적을 때 패치 된 취약점이 무엇이었는지 찾고  POC를 구현하는 방법에 대해 적어보려고한다. 


따라서 이 글은 CVE-2017-8464 LNK취약점을 다루기는 하지만 취약점에 대한 내용보다는 정보가 없는 원데이 취약점을 어떻게 구현해 나가는 지에 중점을 두고있다.


1. 공개된 취약점 정보 확인하기

링크 : https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-8464


위 그림은 마이크로소프트 사의 MSRC페이지에서 확인한 CVE-2017-8464정보이다.  CVE-2017-8464 취약점은 윈도우즈의 링크파일(.LNK)를 이용해 RCE가 가능한 취약점이라고 설명되어있다. 공격자가 피해자에게 악의적으로 조작된 링크파일 바이너리를 전달하면 피해자가 해당 파일이 있는 폴더를 열기만해도 공격코드가 실행되는 취약점이다.

(현재 기점으로 2년이나 된 취약점이기 때문에 MSRC외에도 exploit-db라던가, github에 공개된 POC들이 많지만 글의 목적에 따라 다른 정보가 없다고 가정한다.)


취약점 설명 아래에는 해당 취약점을 패치하기위한 파일들을 볼 수 있다.


패치파일에는 해당 취약점을 보완하기위한 파일도 있지만 기타 다른 취약점 패치라던가, 기능패치라던가 많은 것들이 같이 포함되어있기 때문에 어떤 파일을 패치 했는지 찾는 것이 중요하다.


취약점 관련 파일을 찾는 범위를 좁히기위해 Security Update 패치파일을 다운받는다. 분석환경 OS에 맞는 파일을 찾으면되고, 참고로 64bit보다는 32bit환경을 택하는 것이 더 수월하다. 



여기서는 Windows 7 for 32-bit Systems Service Pack 1 의 Security Only 링크를 클릭했고, 목록 중 두번째 파일을 다운받았다.

다운받은 파일은 .msu확장자를 갖는 패치 파일인데, 압축해제가 가능하다. 압축해제를 하면 .cab파일을 얻을 수 있다.




cab파일 역시 많은 패치파일을 포함하고있는 일종의 압축파일인데, 이 파일은 윈도우 명령어 expand로 압축해제할 수 있다.
ex) expand [cab file] -f:[추출 파일명] [경로]

- expand Windows6.1-KB4022722-x86.cab -f:* .



cab를 풀고나면 보다시피 엄청나게 많은 파일이 있다. 이 중에 취약점과 관련된 파일을 선별해내야한다ㅠㅠ

선별하기전에 해야하는 선행할 작업이 하나 더 있는데, 해당 패치 적용 직전의 버전으로 윈도우즈의 버전을 올려야한다. 이 과정을 통해 패치 비교의 범위를 줄인다.


취약점이 패치 된 파일을 찾기 위해 현재 explorer.exe에 로드된 dll(LNK파일은 explorer.exe에서 핸들링 되므로)과 패치 파일목록에 있는 dll을 매치시키는 파이썬 스크립트를 작성했고 실행한 결과 범위를 많이 줄일 수 있었다. 아래는 스크립트 중 일부이다.



위 그림은 스크립트 실행 결과중 일부인데, LNK파일을 핸들링하는 dll인 shell32.dll이 있었다. 그리고 2010년, 2015년도에 발생한 링크파일 취약점도 shell32.dll에서 발생했었기 때문에 2017취약점도 shell32.dll에서 발생했을 것이라 예상해 볼 수있다.


'Study > Windows' 카테고리의 다른 글

Windows Hooking(Frida)  (5) 2018.01.30

+ Recent posts