HTA
T1218.005
Last updated
T1218.005
Last updated
HTA (HTML Application)는 마이크로소프트가 개발한 웹 애플리케이션 프로그래밍 기술이다.HTA 확장자 파일은 Mshta.exe 윈도우 바이너리로 실행되며 네트워크 프록시 인식 방식으로 HTML에 포함된 Windows 스크립트 호스트 코드(VBScript 및 JScript)를 실행할 수 있기 때문에 MS로 서명된 유틸리티를 통해 임의 스크립트 코드 실행을 할 수 있어 공격하기 매력적인(?!?) 수단이다.
아래 트윗은 한 레드팀원이 몇일전에 올린 HTA를 관한 초기 침투가 아직도 많이 쓰이고 있다는것을 알수있다.
일단 HTA는 Java applet 이나 액티브X 컨트롤과 같은 기존의 웹 애플리케이션 기술에 비해 보안성과 사용자 경험 측면에서 우수한 성능을 제공할 수 있지만 또한 양날의 검으로 기존 웹 앱과는 다르게 로컬 파일 시스템이나 레지스트리 같은 거에 직접 액세스할 수도 있기 때문에더 많은 권한을 가질 수 있기 때문에 악의적인 목적으로도 충분히 쓰일 수 있다.
아래 실습 예제는 굉장히 간단히 예제임으로 "왜 제가 만든 악성 hta 파일이 다운받은 즉시 사라지나요?"와 같은 질문은 하지 말길 바란다. 기본적으로 윈도우 디펜더를 다 끄고 진행하고 있기 때문에 아래 실습은 방어 우회를 거의 일체 생각하지 않았다라는 점을 이해해주길 바란다.
Mitre Attack에서도 Mshta 실행을 하나의 테크닉으로 설명하고 있으며 굉장히 많은 APT그룹도 사용하고 있는 것을 알 수 있다.
일단 시작하기 앞서, 아래와 같이 mshta -> VBScript-> powershell.exe를 통해, "Hello GROOT!" 아웃풋되는지 확인해보자.
기본적으로 HTA를 사용한 악성 코드 실행 시나리오는 여러가지가 있을 수 있다. 수 많은 조합들이 있지만, 자주 사용 되는 조합은 다음과 같다:
LNK -> CMD -> Powershell -> RAT
ZIP -> Password protected PDF + "password.lnk" -> RAT
DOCx -> LNK -> remote HTA -> Powershell -> RAT
피싱 이메일 -> LOTS를 통한 mediafire/dropbx/github 다운 -> ZIP 파일 -> HTA -> RAT
아래 HTA 스크립트는 Windows에서 calc.exe를 실행한다.
grootcalc.hta
HTML Application을 통해 계산기가 실행되는 것을 알 수 있다.
가장 간단하게 msfvenom을 통해 HTA Payload를 만들어 보자. shell_reverse_tcp HTA 페이로드를 만들어 준다.
LHOST: 칼리 로컬 호스트 로컬 IP
LPORT: Listener 포트
공격자는 타겟이 악성 HTA를 다운받을 수 있게 Python HTTP Server를 포트 8080에 만들어 준다.
브라우저에서 http://192.168.137[.]131:8080/groot.hta 를 방문하여 파일을 다운받고 실행하면 타겟박스 (윈도우) 쉘을 얻을 수 있다.
CMD에서 실행되는 난독화된 스크립트를 실행하는 mshta.exe는 이미 수상하기 때문에 아마 EDR 차원에서 이미 감지를 할수 있다. 또한 mshta.exe 실행 전후 실행도는 Process들을 살펴봐 .hta 파일의 출처와 목적을 확인하는 것이 중요하다.