
PowerShell Runspace 사후 익스플로잇 툴킷
PowerShell Runspace Post Exploitation Toolset
버전: 2.6 라이선스: BSD 3-Clause
p0wnedShell은 C#으로 작성된 공격용 PowerShell 호스트 애플리케이션으로, powershell.exe에 의존하지 않고 .NET PowerShell Runspace 환경 내에서 PowerShell 명령과 함수를 실행합니다. 여기에는 많은 공격용 PowerShell 모듈과 바이너리가 포함되어 있어 사후 침투(Post Exploitation) 과정을 더 쉽게 만들어 줍니다. 우리가 목표로 한 것은 모든 완화 솔루션(또는 적어도 일부)을 우회할 수 있고, 모든 관련 도구가 포함된 "올인원" 사후 침투 도구를 구축하는 것이었습니다. Active Directory 환경 내에서 현대적인 공격을 수행하고 블루 팀이 올바른 방어 전략을 수립할 수 있도록 인식을 높이는 데 사용할 수 있습니다.
p0wnedShell을 컴파일하려면 Microsoft Visual Studio에서 이 프로젝트를 열고 x64/x86 플랫폼으로 빌드해야 합니다. 컴파일 전에 다음 AutoMasq 옵션을 변경할 수 있습니다:
public static bool AutoMasq = true;
public static string masqBinary = @"C:\Windows\Notepad.exe";
AutoMasq를 false로 설정하면 실행 파일을 정상적으로 실행합니다. AutoMasq를 활성화하면 p0wnedShell 실행 파일을 위장하려는 프로세스(masqBinary)의 이름으로 바꿔서(예: notepad.exe) 해당 프로세스처럼 보이게 할 수 있습니다.
선택적 "-parent" 명령줄 인수를 사용하면 다른 부모 프로세스 ID로 p0wnedShell을 시작할 수 있습니다. PEB Masq 옵션과 다른 부모 프로세스 ID(예: svchost)를 결합하면 p0wnedShell을 합법적인 서비스처럼 보이게 할 수 있습니다 ;)
참고: 다른 부모 프로세스 ID를 사용하여 p0wnedShell을 실행하는 것은 Meterpreter 세션/셸에서는 아직 작동하지 않습니다.
부모 프로세스 ID 변경은 p0wnedShell 프로세스를 시스템 권한으로 생성하는 데에도 사용할 수 있습니다.
예를 들어 lsass를 부모 프로세스로 사용합니다.
이를 위해서는 UAC로 상승된 관리자 권한이 필요합니다.
C:\p0wnedShell>p0wnedShellx64.exe -parent
[+] 유효한 부모 프로세스 이름을 입력하십시오.
[+] 예: C:\p0wnedShell\p0wnedShellx64.exe -parent svchost
C:\p0wnedShell>p0wnedShellx64.exe -parent lsass
x86 바이너리로 실행하고 Applocker를 우회하려면 (이 훌륭한 우회 방법에 대한 크레딧은 Casey Smith aka subTee에게 있습니다):
cd \Windows\Microsoft.NET\Framework\v4.0.30319 (또는 최신 .NET 버전 폴더)
InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx86.exe
x64 바이너리로 실행하고 Applocker를 우회하려면:
cd \Windows\Microsoft.NET\Framework64\v4.0.30319 (또는 최신 .NET 버전 폴더)
InstallUtil.exe /logfile= /LogToConsole=false /U C:\p0wnedShell\p0wnedShellx64.exe
Runspace 내의 PowerShell 함수는 Base64 인코딩 및 압축 문자열로부터 메모리에 로드됩니다.
바이너리는 ReflectivePEInjection을 사용하여 메모리에 로드됩니다(바이트 배열은 Gzip으로 압축되어 p0wnedShell 내에 Base64 인코딩 문자열로 저장됩니다).
p0wnedShell은 harmj0y, PowerSploit 팀, Sean Metcalf, SubTee, Nikhil Mittal, Besimorhino, Benjamin Delpy, Breenmachine, FoxGlove Security, Kevin Robertson, FuzzySecurity, James Forshaw 등 많은 사람들의 도구와 지식에 크게 기반을 두고 있습니다. 그들에게 감사드리며, 물론 우리에게 매우 강력한 해킹 언어를 제공한 Redmond의 친구들에게도 감사드립니다.
문제를 보고하거나 기능을 요청하려면 다음으로 연락해 주십시오:
Cornelis at dePlaa.com 또는 @Cn33lis