
.NET 역직렬화를 통해 AddInProcess.exe를 악용하여 초기 접근 페이로드를 생성하며, HTA, VBA, JS 및 CHM 템플릿을 지원하여 인메모리 코드 실행을 수행합니다.
.-.
[.-''-.,
| //`~\)
(<| 0\0|>_
";\ _"/ \\_ _,
__\|'._/_ \ '='-,
/\ \ || )_///_\>>
( '._ T |\ | _/),-'
'. '._.-' /'/ |
| '._ _.'`-.._/
,\ / '-' |/
[_/\-----j
_.--.__[_.--'_\__
/ `--' '---._
/ '---. -'. .' _.-- '.
\_ '--.___ _;.-o /
'.__ ___/______.__8----'
c-'----'
Lefty @lefterispan - Nettitude Red Team - 2022 / 2023
Aladdin은 James Forshaw(@tiraniddo)의 연구를 기반으로 한 페이로드 생성 기술로, .NET 페이로드를 역직렬화하여 메모리에서 실행할 수 있게 합니다. 원래 벡터는 https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html에 문서화되어 있습니다.
AddInProcess.exe 프로세스를 인수 /guid:32a91b0f-30cd-4c75-be79-ccbd6345de99 및 /pid:와 함께 실행하면, 프로세스는 \\.\pipe\32a91b0f-30cd-4c75-be79-ccbd6345de99 아래에 명명된 파이프를 시작하고 .NET Remoting 객체를 기다립니다. .NET 리모팅 리스너와 통신하는 데 필요한 적절한 패킷 바이트를 가진 페이로드를 생성하면, System.Workflow.ComponentModel의 ActivitySurrogateSelector 클래스를 트리거하여 코드 실행을 얻을 수 있습니다.
원래 James Forshaw는 https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData에서 POC를 공개했습니다. 그러나 Windows의 최신 버전에서는 Microsoft가 취약한 System.Workflow.ComponentModel을 패치했기 때문에 이 POC는 실패합니다(https://github.com/microsoft/dotnet-framework-early-access/blob/master/release-notes/NET48/dotnet-48-changes.md).
그러나 Nick Landers(@monoxgas)는 Microsoft가 도입한 검사를 우회하는 방법을 발견하고 https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/에서 자세한 글을 작성했습니다. 우회 방법은 https://github.com/pwntester/ysoserial.net/pull/41에 문서화되어 있습니다.
Aladdin은 페이로드 생성 도구로, 특정 우회 방법과 .NET 리모팅 프로토콜의 필요한 헤더 바이트를 사용하여, 원래 문서화된 대로 AddInProcess를 악용하는 초기 접근 페이로드를 생성합니다.
제공되는 템플릿은 다음과 같습니다:
* HTA
* VBA
* JS
* CHM
공격이 성공하려면 .NET 어셈블리에 역직렬화 중 진입점 역할을 할 단일 public 클래스와 빈 생성자가 있어야 합니다. 예제 어셈블리가 프로젝트에 포함되어 있습니다.
public class EntryPoint {
public EntryPoint() {
MessageBox.Show("Hello");
}
}
Usage:
-w, --scriptType=VALUE Set to js / hta / vba / chm.
-o, --output=VALUE The generated output, e.g: -o
C:\Users\Nettitude\Desktop\payload
-a, --assembly=VALUE Provided Assembly DLL, e.g: -a
C:\Users\Nettitude\Desktop\popcalc.dll
-h, --help Help
사용자가 제공한 .NET 바이너리는 HTA / JS 페이로드에서 생성된 AddInProcess.exe에서 실행됩니다. 현재 프로세스 생성은 9BA05972-F6A8-11CF-A442-00A0C90A8F39 COM 객체를 사용하여 이루어지며(https://dl.packetstormsecurity.net/papers/general/abusing-objects.pdf), 이는 프로세스를 Explorer.exe 프로세스의 자식으로 실행합니다.
AddInProcess.exe의 프로세스 매개변수에 제공된 GUID는 사용자가 제어할 수 있습니다. 현재 GUID는 템플릿과 코드에 하드코딩되어 있습니다.
CHM은 XSLT 변환을 통해 JScript를 실행합니다.
Addinprocess.exe는 항상 /guid 및 /pid와 함께 실행됩니다. 환경에서 합법적인 사용을 기준으로 삼고 나머지를 모니터링하십시오.* https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html
* https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/
코드는 다음 저장소를 기반으로 합니다:
* https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData
* https://github.com/pwntester/ysoserial.net
감사합니다: