리버스 엔지니어링/난독화 스크립트 분석

x64dbg를 활용한 난독화 스크립트 분석

뿔맨 2018. 7. 15. 07:48
반응형

본 작성자는 초급 분석가이며, 피드백 환영합니다.


목차

- 개요

- 분석

- 마치며


개요

난독화된 바이너리 및 스크립트는 실행 시 메모리에서 난독화가 해제된 상태로 올라간다는 부분에서 아이디어가 생각이 나서 연구를 하였으며,

다른 이유로는 좀 더 쉽게 분석하기 위하여 작성하였다.

x64dbg 라는 tool을 사용하였으며, 이유는 64bit 프로그램을 분석하기 때문이다.

그리고 다양한 기능들이 있으며, 대표적으로 그래프뷰, 한글지원, 파이썬 지원 등이 있다.


분석

JScript를 분석할 것이며 x64dbg를 사용할 것이다.

JScript를 실행시 wscript.exe 프로그램이 실행되며 wscript.exe 프로그램을 통하여 JScript를 분석할 것이다.


위 사진의 연결 프로그램 부분에 Microsoft Windows Based Script Host 라고 적혀있다.


아래는 스크립트가 난독화된 상태임을 보여준다.


간단히 설명을 하자면 위 스크립트는 GandCrab 랜섬웨어를 유포하기 위한 스크립트이며, 특정 url에서 프로그램을 다운받아와 PowerShell 로 실행되는 형태의 악성스크립트 이다.


분석을 진행해보자.

wscript.exe를 x64dbg로 열어준 뒤 " 파일 -> 명령줄 바꾸기 " 를 클릭한다. (wscript.exe 가 어디에 있는지 모르겠으면, 시작 -> wscript.exe 검색 -> 우클릭 -> " 파일 위치 열기 " 클릭)

명령줄 바꾸기는 쉽게 말해 "jscript를 wscript.exe로 연다." 으로 이해하면 쉬울 것이다.


분석할 파일경로를 적어주면 된다.

바탕화면에 있는 abc.js 분석할 경우 ex) "C:\Windows\System32\wscript.exe" C:\Users\Administrator\Desktop\abc.js


중단점 탭에서 DLL을 추가할 것이다.

shell32.dll 과 ws2_32.dll 을 추가할 것이다. shell32.dll은 ShellExecute 함수에 BreakPoint를 걸기 위함이며, ws2_32.dll은 소켓 관련 함수를 찾기 위함인데, 본문에서는 필요 없다. 

DLL을 추가하게 되면 해당 DLL 로드 부분에서 멈추게된다. (ws_32.dll 오타)


위 사진처럼 shell32.dll 로드 후 멈추게된다.


해당 DLL이 로드가 되었으면 비활성화를 해준다. (활성화, 비활성화 하는 이유는 DLL 로드가 되는지 확인을 위함이며, 상단의 기호탭에 로드된 함수들을 보여준다. 쉽게 말해 사용자 편의를 위함이다.)


기호 탭에서 shell32.dll 로드 된 것을 확인하였으며, 함수 중에 ShellExecute 함수들을 검색하여 BreakPoint 설정 해준다. 

JScript가 PowerShell을 사용하기 때문에 해당 함수에 BreakPoint 설정을 하였다.


F9를 눌러 실행하면 BreakPoint가 걸리면서 스택창에 Powershell 명령어가 출력이 된다.

cmd.exe 를 사용하여 PowerShell을 불러오며 특정 url에서 파일을 다운받아 실행하는 명령어이다.


마치며

안녕하세요. 블로그를 처음 시작해서 많이 미숙합니다.

그리고 분석도 아직 초급단계라서 많이 미숙합니다. 많은 피드백 받고있습니다.

스크립트를 디버거를 통해서 분석을 한다는 생각을 한 계기가 18년 1월달에 취약점 관련 강의를 듣다가 생각을 하게 되었습니다.

그런데 유튜브에 동일한 시기에 올라왔었네요 ㅠㅠ 아래 출처 남깁니다.


참조 - https://www.youtube.com/watch?v=uqhBsWXUw7Q

반응형