먼저 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 공격의 경우 대부분이 커맨드라인 형태이므로 유용할 것이라 생각됩니다.

 

+ Recent posts