Deploy Microsoft Defender for Identity (MDI) (2). Lab Setup
MDI 는 아래의 글로 새로 작성하였습니다.
2024.04.28 - [Microsoft Defender XDR/MDI] - Microsoft Defender for Identity (MDI). (0) Introduction
원래는 내용을 수정하면서 작성하려고 하였으나, 방향성이 크게 달라져서 글을 새로 작성하기 시작하였습니다.
아래의 글은 참고만 하시기 바랍니다.
지난 포스팅
2022.09.06 - [Azure AD] - Microsoft Defender for Identity (MDI) (1). Configuration
MDI는 구성보다는 분석이 중요한 파트입니다.
그래서 기술자료에서 공부가 필요한 부분은 조사 및 대응(Investigate and respond) 입니다.
그런데 테스트 및 스터디를 하려면 결국 의심스러운 활동에 대한 기록이 있어야 합니다.
아래의 자료를 참고하여 Lab 구성을 진행하였습니다.
Microsoft Defender for Identity security alert lab setup | Microsoft Docs
기술자료에서 제시한 것과 유사하도록 아래와 같은 형태로 구성하였습니다.
[Step 1] Active Directory users and groups
Microsoft Defender for Identity 보안 경고 랩 설정 | Microsoft Docs
생성할 사용자 목록입니다.
Displayname | SAMAccount | Purpose |
Jeff Leatherman | JeffL | 곧 효과적인 피싱 공격의 희생자가 될 예정입니다. |
Ron HelpDesk | RonHD | Ron은 Contoso IT 팀의 “지원 담당자”입니다. RonHD는 “Helpdesk” 보안 그룹의 구성원입니다. |
Samira Abbasi | SamiraA | Contoso에서 이 사용자는 도메인 관리자입니다. |
MDIAdmin | MDIAdmin | Defender for Identity의 서비스 계정 |
아래는 MDI 서비스 계정을 제외한 나머지 계정을 생성 및 설정하는 스크립트입니다.
# Store the user passwords as variables
$SamiraASecurePass = ConvertTo-SecureString -String 'NinjaCat123' -AsPlainText -Force
$ronHdSecurePass = ConvertTo-SecureString -String 'FightingTiger$' -AsPlainText -Force
$jefflSecurePass = ConvertTo-SecureString -String 'Password$fun' -AsPlainText -Force
# Create new AD user SamiraA and add her to the domain admins group
New-ADUser -Name SamiraA -DisplayName "Samira Abbasi" -PasswordNeverExpires $true -AccountPassword $samiraASecurePass -Enabled $true
Add-ADGroupMember -Identity "Domain Admins" -Members SamiraA
# Create new AD user RonHD, create new Helpdesk SG, add RonHD to the Helpdesk SG
New-ADUser -Name RonHD -DisplayName "Ron Helpdesk" -PasswordNeverExpires $true -AccountPassword $ronHdSecurePass -Enabled $true
New-ADGroup -Name Helpdesk -GroupScope Global -GroupCategory Security
Add-ADGroupMember -Identity "Helpdesk" -Members "RonHD"
# Create new AD user JeffL
New-ADUser -Name JeffL -DisplayName "Jeff Leatherman" -PasswordNeverExpires $true -AccountPassword $jefflSecurePass -Enabled $true
[Step 2] Servers and computers
서버 및 테스트 PC는 다음과 같이 구성되어 있습니다.
FQDN | OS | IP | Purpose |
TOYDC01.wingtiptoys.kr | Windows Server 2022 | 10.0.22.2 | Defender for Identity 센서가 로컬에 설치된 도메인 컨트롤러 |
TOYDC02.wingtiptoys.kr | Windows Server 2022 | 10.0.22.3 | Defender for Identity 센서가 로컬에 설치된 도메인 컨트롤러 |
VictimPC.wingtiptoys.kr | Windows 10 | 10.0.22.9 | 공격 대상자 PC |
AdminPC.wingtiptoys.kr | Windows 10 | 10.0.22.8 | 도메인 관리자 PC |
[Step 3] Configure SAM-R capabilities
이 부분은 이전 포스팅에서 구성완료하였습니다.
[Step 4] Add sensitive group to Defender for Identity
MDI 설정 -> Entity tags -> Groups -> Tag groups
Helpdesk 추가
추가 확인
[Step 5] VictimPC local policies
Victim PC에서 다음 Powershell 스크립트를 실행합니다.
# Add JeffL to local Administrators group on VictimPC
Add-LocalGroupMember -Group "Administrators" -Member "wintiptoys\JeffL"
# Add Helpdesk to local Administrators group on VictimPC
Add-LocalGroupMember -Group "Administrators" -Member "wingtiptoys\Helpdesk"
Victim PC의 Local Administrators 그룹에 helpdesk와 jeffl이 추가되었는지 확인합니다.
Victim PC에서 다음 스크립트를 실행하여 시뮬레이션을 진행합니다.
$action = New-ScheduledTaskAction -Execute 'cmd.exe'
$trigger = New-ScheduledTaskTrigger -AtLogOn
$runAs = 'wingtiptoys\RonHD'
$ronHHDPass = 'FightingTiger$'
Register-ScheduledTask -TaskName "RonHD Cmd.exe - AATP SA Playbook" -Trigger $trigger -User $runAs -Password $ronHHDPass -Action $action
작업 스케쥴러에 다음과 같이 등록됩니다.
재부팅 한 뒤, JeffL로 로그인합니다.
Windows Security
Virus & threat protection
Virus & threat protection settings -> Manage settings
모든 설정을 Off로 변경합니다.
아래의 툴들을 다운로드합니다.
GitHub - gentilkiwi/mimikatz: A little tool to play with Windows security
GitHub - PowerShellMafia/PowerSploit: PowerSploit - A PowerShell Post-Exploitation Framework
PsExec - Windows Sysinternals | Microsoft Docs
[Step 6] AdminPC local policies
Admin PC에서 다음 명령어을 실행합니다.
# Add Helpdesk to local Administrators group
Add-LocalGroupMember -Group "Administrators" -Member "wingtiptoys\Helpdesk"
# Remove Domain Admins from local Administrators group
Remove-LocalGroupMember -Group "Administrators" -Member "Domain Admins"
추가 확인
다음 스크립트를 실행합니다.
while ($true)
{
Invoke-Expression "dir \\TOYDC01\c$"
Start-Sleep -Seconds 300
}
다음 포스팅에서는 구성한 Lab을 기준으로 테스트를 진행해 보겠습니다.