먼저 PowerShell이 무엇인지 잠깐 짚고 넘어가봅니다.

윈도 파워셸(Windows PowerShell)마이크로소프트가 개발한 확장 가능한 명령줄 인터페이스(CLI) 스크립트 언어이다. 객체 지향에 근거해 설계되고 있어 닷넷 프레임워크 2.0을 기반으로 하고 있다. 이전에는 마이크로소프트 셸(MSH, 코드네임 Monad)로 불리고 있었다.현재 윈도 XP, 윈도 서버 2003, 윈도 비스타, 윈도 서버 2008, 윈도 7, 윈도 8, 윈도 서버 2008 R2를 모두 지원한다.

위키백과에서 발췌한 내용입니다.

그냥 쉽게 말하면 리눅스의 bash 같은 쉘입니다.

파워쉘은 Windows에서 기본으로 제공하는데 여기에 쉘코드를 인젝션 시키는 것이 가능합니다.

이는 타겟 시스템의 기본 자원을 가지고 공격을 수행할 수 있다는 것을 의미합니다. 

실제 동작을 확인하기 위해 Metasploit으로 파워쉘용 쉘코드 스크립트를 작성해보겠습니다.

메시지박스를 실행시키는 페이로드를 불러온 뒤 파워쉘 스크립트로 저장합니다.

 

스크립트 파일이 생성되었습니다.

파워쉘을 실행시킨 뒤 생성된 내용을 그대로 붙여 넣기 합니다. 해당 코드는 x86이므로 wow64 파워쉘로 실행해야 합니다. (Windows x64의 경우)

(wow64 경로 : c:\windows\syswow64\windowspowershell\v1.0\powershell.exe)

 

아래는 결과입니다.

스크립트를 보면 알겠지만 쉘코드 스레드를 생성하여 실행시키는 간단한 내용입니다.

위의 스크립트를 페이로드로 활용하기엔 2% 부족합니다. 이를 Veil-Framework로 간단히 해결할 수 있습니다.

https://www.veil-framework.com/

Veil-Framework에서 제공하는 파워쉘 옵션과 다양한 페이로드를 결합하여 강력한 파워쉘 페이로드를 생성할 있습니다. 

첫 실행화면입니다. 39개의 페이로드가 로드되었다고 나옵니다. 이를 list 명령어로 확인할 수 있습니다.

이제부터 동일한 기능을 수행하는 페이로드를 생성할 것입니다.

파워쉘 쉘코드 인젝션을 이용할 것이므로 use 21을 입력합니다. 

 Generate를 입력합니다.

 디폴트 옵션을 사용합니다.

쉘코드를 선택하는데 tab 키를 누르면 리스트가 나타납니다. 그림과 같이 windows/messagebox 를 기입 후 적당한 값을 입력합니다.

 저장할 파일 이름을 입력합니다. 해당 파일은 bat확장자로 저장됩니다.

성공적으로 파일이 저장되었습니다.

해당 배치 파일을 실행하면 메시지박스 창이 나타납니다.

 

공격사례 : 작년에 발표된 "godmode" 익스플로잇입니다.

GradiusX, b33f 닉네임을 사용하는 해커들이 기존 발표된 익스플로잇에 파워쉘을 얹었습니다.

여기에 사용된 파워쉘은 위 실습 내용과 같으므로 패치되지 않은 IE 브라우저에서 실행해보시길 바랍니다.

http://www.exploit-db.com/exploits/35308/

프로세스 트리를 살펴보면 iexplore.exe -> powershell.exe 형태입니다.

이처럼 커맨드라인 RCE 공격 형태에서 매우 효과적인데, JRE 공격의 경우 대부분이 커맨드라인 형태이므로 유용할 것이라 생각됩니다.

 

RSA 구조체를 PEM으로 변환하는 방법입니다.

파일 혹은 버퍼로 저장할 수 있습니다.

본 포스팅은 LCF-AT가 TUTS4YOU에 공개한 Themida - Winlicense Ultra Unpacker 1.4 스크립트를 가지고 매뉴얼 언패킹 하는 것을 다룹니다. 

아래 URL에 더 자세하고 많은 내용이 있습니다.

https://tuts4you.com/download.php?view.3526 <-- 튜토리얼 동영상이 있습니다.

https://forum.tuts4you.com/topic/34085-themida-winlicense-ultra-unpacker-14/

준비물

OllyDbg 1.0 

ODbgScript / StrongOD / Phant0m 플러그인

ODbgScript.1.82.rarPhantOm Plugin v1.85.rarStrongOD v0.4.8.892.rar

언패킹 스크립트 / ARImpRec.dll 

ARImpRec.dllThemida - Winlicense Ultra Unpacker 1.0.txt

 

1. 디버깅 옵션에서 처음 정지될 포인트를 수정합니다.

2. 플러그인 옵션을 수정합니다.

   

3. 스크립트에서 DLL 경로를 수정합니다. 

4. 샘플을 로드 한 후 (F9로 실행 금지) 플러그인에서 스크립트 창을 띄운 후 실행합니다.

5. 중간에 call LOG_START가 나오면 Resume합니다.

6. EFL을 어디서 체크할 것인지 묻습니다. WinLicense 안에서 할건지 밖에서 할건지

여기선 472DF9에 있으므로 Yes(안) 를 누릅니다. (WinLicense : 470000 (size : 1F80000)

6. 다이렉트 API 점프를 FIX할 것인지 묻습니다. 처음엔 NO, 추후 실패하면 Yes를 누릅니다.

7. 언패킹에 성공하면 성공 메시지가 뜨면서 코드가 복원됩니다.


2016.02.02 수정 - 요즘도 포스팅에 대해 간혹 문의를 하시는 분들이 계신데 동작이 안되면 최신 언패킹 스크립트를 찾으시는 것이 문제 해결에 빠를 것입니다. 이것도 이제는 구자료이고 2014년 이후 버전에 동작이 안될 가능성이 높습니다. 구버전 언패킹 혹은 참고용으로 보시기 바랍니다.

'Windows' 카테고리의 다른 글

원클릭 12345  (1) 2019.07.04
APMSetup + SSL(https) 구축 무작정 따라하기  (3) 2015.08.23
EMET 5.0 - ASR 소개 및 오진  (0) 2014.08.05
Internet Explorer DLL Injector  (0) 2014.04.17
JMP SHORT, 어디까지 점프 가능한가?  (0) 2014.01.24

+ Recent posts