
RedTeams를 위한 HTA 암호화 도구
NCC Group Plc가 오픈 소스로 공개 - http://www.nccgroup.trust/
Richard Warren 개발, richard [dot] warren [at] nccgroup [dot] trust
http://www.github.com/nccgroup/demiguise
AGPL 라이선스로 배포, 자세한 내용은 LICENSE 참조
이 프로젝트의 목표는 암호화된 HTA 파일을 포함하는 .html 파일을 생성하는 것입니다. 아이디어는 대상자가 페이지를 방문하면 키를 가져와서 브라우저 내에서 HTA가 동적으로 복호화되어 사용자에게 직접 전달된다는 것입니다. 이는 일부 보안 어플라이언스에서 구현된 콘텐츠/파일 형식 검사를 우회하기 위한 회피 기술입니다. 이 도구는 멋진 HTA 콘텐츠를 만들기 위해 설계된 것이 아닙니다. 이를 도와줄 수 있는 다른 많은 도구/기술이 있습니다. 이 도구가 도움이 될 수 있는 점은 처음에 HTA를 환경에 도입하는 것과 (환경 키잉을 사용하는 경우) 샌드박스 처리되지 않도록 하는 것입니다.
이는 HTA 파일을 RC4로 암호화한 다음 navigator.msSaveBlob을 사용하여 런타임에 파일을 "저장"함으로써 달성됩니다. 즉, 서버에서 HTA를 직접 가져오는 대신, HTA 파일이 평문 형태로 포함된 HTTP 요청/응답이 전혀 없습니다. 프록시는 암호화된 블롭이 포함된 text/html 파일만 볼 수 있습니다. 최신 Edge 버전에서는 사용자에게 HTA를 "실행"하라는 메시지가 표시됩니다.
이 도구의 주요 목적은 아니지만, 기본 HTA에 대한 몇 가지 페이로드 옵션이 있습니다. 각 옵션은 Matt Nelson, Matthew Demaske, Ryan Hanson 및 Etienne Stalmans가 이전에 문서화한 다양한 기술을 사용합니다. 이러한 기술을 사용하면 코드가 mshta.exe의 자식 프로세스로 실행되지 않는다는 이점이 있습니다. 앞서 언급했듯이 HTA의 콘텐츠는 이 도구의 주요 목적이 아닙니다. HTA 템플릿을 수정하여 자신만의 사용자 정의 코드를 포함할 것을 권장합니다 :)
demiguise.py 파일을 실행하고 암호화 키, 페이로드 유형, 출력 파일 이름 및 HTA가 실행할 명령을 지정합니다.
예시: python demiguise.py -k hello -c "notepad.exe" -p Outlook.Application -o test.hta


샌드박스를 회피하기 위해 키를 HTA에 직접 포함시키지 않아야 합니다. 대신 대상이 있는 환경에서 동적으로 키를 가져와야 합니다. 예를 들어 클라이언트의 외부 IP 주소를 키로 사용할 수 있습니다. 이렇게 하면 코드가 타사 샌드박스에서 실행될 경우 HTA가 복호화되지 않습니다. 사실 파일 이름조차 복호화되지 않으므로 아무도 페이로드가 무엇인지/무엇을 하는지 알 수 없습니다 :)
환경 키잉의 예는 examples/externalip.js 및 examples/virginkey.js에 나와 있습니다.
도구가 JavaScript를 포함하는 HTML 파일을 출력하므로 이 JS를 가져와서 원하는 곳에 호스팅할 수 있습니다. 즉, 클라이언트의 웹사이트가 반사형 XSS에 취약한 경우 이를 사용하여 (매우 신뢰할 수 있는) 도메인에서 HTA 파일을 제공할 수 있습니다.
또한 Outlook은 기본적으로 .html 첨부 파일을 차단하지 않으며, 다른 일부 애플리케이션도 마찬가지입니다. 상상력을 발휘해보세요! :)
현재 VT에서 탐지되지 않습니다:
난독화 기술은 시그니처화하기 어려울 수 있지만, HTA 공격을 방어하는 한 가지 방법은 HTA 자체가 실행되지 못하도록 하는 것입니다. 이는 소프트웨어 제한 정책(SRP), Device Guard(Windows 10 및 Server 2016)를 사용하거나 .hta 파일과 연결된 기본 파일 처리기를 변경함으로써 달성할 수 있습니다.
이러한 변경은 HTA 실행에 의존하는 소프트웨어의 실행에 영향을 미칠 수 있습니다. 따라서 수정 사항을 자체 환경에서 완전히 테스트하는 것이 좋습니다.
SRP 사용:

기본 파일 처리기 변경:
ftype htafile=%SystemRoot%\system32\NOTEPAD.EXE %1

다시 변경 (x64):
ftype htafile=C:\Windows\SysWOW64\mshta.exe "%1" {1E460BD7-F1C3-4B2E-88BF-4E770A288AF5}%U{1E460BD7-F1C3-4B2E-88BF-4E770A288AF5} %*
WbemScripting.SWbemLocator & ShellBrowserWindow COM 실행 기술WbemScripting.SWbemLocator COM 실행 PoCExcel.Application.RegisterXLL COM 실행 기술Outlook.Application.CreateObject COM 실행 기술