一、Command and Control(命令与控制)

(一)Application Layer Protocol

image-20260131100645910

这是Kali Linux系统中“应用层协议”工具集,包含6款用于测试WebDAV、Windows远程管理、SMB、RDP及通用网络协议的渗透测试工具。它们主要用于应用层协议分析、远程控制、凭证传递与横向移动

1.cadaver

cadaver 是一个命令行式的WebDAV客户端,专用于测试Web分布式创作和版本控制(WebDAV)服务。它支持文件上传、下载、删除、目录创建等操作,常用于检测WebDAV服务是否存在配置不当或未授权访问漏洞。

核心作用

  • WebDAV测试:连接到WebDAV服务器,执行文件管理操作。
  • 漏洞检测:检测服务器是否允许未授权写入或执行恶意脚本。
  • 交互式操作:提供类似FTP的交互式命令行界面。

常用命令

cadaver http://192.168.1.100/webdav
  • 含义:连接到目标WebDAV服务器。
  • 参数解析:
    • http://192.168.1.100/webdav:目标服务器地址和路径。

2.evil-winrm

evil-winrm 是一个专为渗透测试设计的Windows远程管理(WinRM)shell工具。它支持多种身份验证方式,包括NTLM哈希和Kerberos票据,能够绕过某些安全限制,实现对目标Windows系统的远程命令执行。

核心作用

  • 远程命令执行:通过WinRM协议在目标系统上执行命令。
  • 哈希传递:支持使用NTLM哈希进行身份验证,无需明文密码。
  • 文件传输:支持上传和下载文件。

常用命令

evil-winrm -u Administrator -H [NTLM_HASH] -i 192.168.1.100
  • 含义:连接到目标Windows主机。
  • 参数解析:
    • -u Administrator:指定用户名。
    • -H [NTLM_HASH]:指定NTLM哈希。
    • -i 192.168.1.100:指定目标IP地址。

3.impacket-scripts

impacket-scripts 是一组Python编写的网络协议工具包,实现了SMB、MSRPC、LDAP等底层协议。它广泛用于渗透测试,支持多种攻击向量,如凭证传递、横向移动等。

核心作用

  • 协议实现:提供对多种Windows协议的底层访问。
  • 渗透测试:用于测试网络服务的安全性。
  • 脚本化:支持Python脚本扩展功能。

常用命令

impacket-smbclient -hashes [LMHASH]:[NTHASH] [DOMAIN]/[USERNAME]@[IP]
  • 含义:连接到SMB服务。
  • 参数解析:
    • -hashes [LMHASH]:[NTHASH]:指定哈希值。
    • [DOMAIN]/[USERNAME]@[IP]:指定域、用户名和目标IP。

4.minicom

minicom 是一个Linux下的串口通信工具,用于嵌入式系统调试和工业控制设备通信。它支持VT100/ANSI终端模拟,提供串口配置和文件传输功能。

核心作用

  • 串口调试:连接到串口设备,查看启动日志和系统输出。
  • 文件传输:支持ZMODEM/YMODEM协议。
  • 终端模拟:模拟VT100/ANSI终端。

常用命令

minicom -s
  • 含义:进入配置界面。
  • 参数解析:
    • -s:启动设置模式。

5.netexec

netexec 是一个基于Impacket库的渗透测试工具,用于在网络中执行命令和传递凭证。它支持多种协议,如SMB、WinRM、SSH等,能够快速进行横向移动。

核心作用

  • 凭证传递:支持使用哈希或明文密码进行身份验证。
  • 命令执行:在多台主机上批量执行命令。
  • 协议支持:支持多种网络协议。

常用命令

netexec smb 192.168.1.0/24 -u Administrator -H [NTLM_HASH]
  • 含义:在指定网段的SMB服务上执行命令。

  • 参数解析:

    • smb:指定协议。
    • 192.168.1.0/24:指定目标网段。
    • -u Administrator:指定用户名。
    • -H [NTLM_HASH]:指定NTLM哈希。

6.smbclient

smbclient 是一个SMB协议客户端工具,用于访问和管理SMB共享资源。它提供类似FTP的交互式界面,支持文件上传、下载和目录浏览。

核心作用

  • SMB访问:连接到SMB共享,执行文件操作。
  • 漏洞检测:检测SMB服务是否存在未授权访问。
  • 交互式操作:提供命令行界面。

常用命令

smbclient //192.168.1.100/share -U Administrator
  • 含义:连接到SMB共享。
  • 参数解析:
    • //192.168.1.100/share:指定共享路径。
    • -U Administrator:指定用户名。

7.xfreerdp3

xfreerdp3 是FreeRDP的X11客户端,用于连接到远程桌面协议(RDP)服务。它支持多种身份验证方式,包括NTLM哈希,能够实现对Windows系统的远程图形界面访问。

核心作用

  • 远程桌面:连接到RDP服务,访问图形界面。
  • 哈希传递:支持使用NTLM哈希进行身份验证。
  • 多平台支持:支持多种操作系统。

常用命令

xfreerdp3 /v:192.168.1.100 /u:Administrator /pth:[NTLM_HASH]
  • 含义:连接到目标RDP服务。
  • 参数解析:
    • /v:192.168.1.100:指定目标IP地址。
    • /u:Administrator:指定用户名。
    • /pth:[NTLM_HASH]:指定NTLM哈希。

(二)Non-Application Layer Protocol

image-20260131101256469

这是Kali Linux系统中“非应用层协议”工具集,包含dbdnetcatsbdsocat四款工具,主要用于底层网络通信、端口扫描、加密连接建立与数据流转发。这些工具不依赖于HTTP、FTP等高层协议,直接操作TCP/UDP层,适合渗透测试中的网络诊断、隧道构建与隐蔽通信。

1.dbd

dbd 是一款专为渗透测试设计的工具,其全称虽与数据库描述(Database Description)同名,但在Kali环境中,它通常指代一种用于网络协议分析与测试的实用工具,常用于辅助检测网络服务漏洞或进行低层协议交互。

核心作用

  • 协议分析:支持对非应用层协议的数据包进行捕获与解析。
  • 漏洞检测:辅助识别网络服务中的配置缺陷或逻辑漏洞。
  • 脚本化测试:可结合脚本自动化执行测试用例,提升效率。

常用命令

dbd -t 192.168.1.100 -p 80
  • 含义:连接到目标主机的指定端口进行协议测试。
  • 参数解析:
    • -t 192.168.1.100:指定目标主机IP。
    • -p 80:指定目标端口。

2.netcat

netcat(简称nc)被誉为“网络界的瑞士军刀”,是一款通过TCP或UDP协议读写数据的命令行工具。它体积小巧、功能强大,支持端口扫描、文件传输、反弹Shell等多种操作,是渗透测试和网络调试的必备工具。

核心作用

  • 端口扫描:快速检测目标主机开放端口。
  • 数据传输:在两台主机间建立连接并传输文件或命令。
  • 反弹Shell:构建反向Shell以实现远程控制。
  • 端口转发:实现本地或远程端口转发,绕过防火墙限制。

常用命令

nc -zv 192.168.1.100 22
  • 含义:扫描目标主机的22端口是否开放。

  • 参数解析:

    • -z:仅扫描端口状态,不建立连接。
    • -v:显示详细输出。

3.sbd

sbdnetcat 的克隆版本,专为加密通信设计。它支持AES-CBC-128和HMAC-SHA1加密算法,确保数据传输的安全性,常用于需要加密通道的渗透测试场景。

核心作用

  • 加密连接:在TCP/IP连接中提供端到端加密。
  • 安全传输:替代传统netcat进行敏感数据传输。
  • 跨平台支持:兼容Unix和Windows系统。

常用命令

sbd -l -p 4444
  • 含义:在本地监听4444端口,等待客户端连接。

  • 参数解析:

    • -l:启用监听模式。

4.socat

socat 是一款多功能的网络工具,支持在两个数据流之间建立通道,可视为netcat的增强版。它支持多种协议(如TCP、UDP、SSL、串口等),并提供丰富的选项用于数据流控制与转换。

核心作用

  • 协议转换:在不同协议间进行数据转发。
  • 端口转发:实现复杂的端口映射与转发规则。
  • SSL支持:支持SSL加密通信,用于测试HTTPS服务。
  • 脚本集成:可与Shell脚本结合,实现自动化网络操作。

常用命令

socat TCP-LISTEN:8080 TCP:192.168.1.100:80
  • 含义:将本地8080端口的流量转发至目标主机的80端口。

  • 参数解析:

    • TCP-LISTEN:8080:在本地监听8080端口。
    • TCP:192.168.1.100:80:转发至目标主机的80端口。

(三)Protocol Tunneling

image-20260131101401874

这是Kali Linux系统中“协议隧道”工具集,包含dns2tcpcdns2tcpdiodine-client-startmiredoproxychains4proxytunnelptunnelpwnatsslhstunnel4udptunnel等工具,主要用于网络隧道构建、协议封装、流量转发与NAT穿透,是渗透测试中实现隐蔽通信、绕过防火墙限制的核心工具套件。

1.dns2tcpc

dns2tcpc 是一款轻量级的DNS隧道客户端,能够通过DNS查询(通常是TXT记录)将TCP连接封装并传输。它常用于在严格受限的防火墙环境下,将被阻止的流量(如SSH、HTTP)通过允许的DNS出站连接进行代理。

核心作用

  • 防火墙绕过:利用DNS协议通常被允许出站的特性,绕过企业或公共网络的防火墙限制。
  • TCP隧道:建立从客户端到服务端的TCP隧道,支持任意TCP应用层协议。
  • 隐蔽通信:流量看起来像正常的DNS查询,具有一定的隐蔽性。

常用命令

dns2tcpc -z example.com -l 8080 -r sub.example.com
  • 含义:连接到 sub.example.com 并请求隧道服务,将服务端的流量转发到本地的8080端口。
  • 参数解析:
    • -z example.com:指定负责隧道服务的域名后缀。
    • -l 8080:指定本地监听端口,用于应用程序连接。
    • -r sub.example.com:指定实际运行隧道服务的服务器域名。

2.dns2tcpd

dns2tcpddns2tcpc 的配套服务端程序,运行在拥有公网IP且具备DNS解析能力的服务器上。它负责接收客户端发来的DNS查询请求,解封装其中的数据,并将其转发到目标网络服务。

核心作用

  • 服务端监听:在服务器端监听DNS端口(默认53),处理来自客户端的隧道请求。
  • 数据转发:作为代理,将解密后的数据转发至本地或远程的目标服务(如SSH端口)。
  • 区域配置:通过配置文件定义允许的客户端和服务列表。

常用命令

dns2tcpd -f -c /etc/dns2tcpd.conf
  • 含义:以后台守护进程模式启动服务,并指定配置文件路径。
  • 参数解析:
    • -f:在前台运行,便于调试(不加则通常在后台运行)。
    • -c /etc/dns2tcpd.conf:指定配置文件的位置。

3.iodine-client-start

iodine 是一款功能强大的DNS隧道工具,能够通过DNS协议传输IPv4数据包。它不仅可以传输TCP/UDP流量,还能建立虚拟专用网络(VPN)接口,使得客户端看起来就像直接连接到了服务端的局域网中。

核心作用

  • 全协议支持:支持传输TCP、UDP、ICMP等所有IP数据包,功能比简单的TCP隧道更强大。
  • NAT穿透:能够穿透大多数NAT设备和防火墙。
  • 虚拟网络:在客户端和服务端之间建立虚拟网卡(tap接口),分配私网IP地址。

常用命令

iodine -f 192.168.1.1 example.com
  • 含义:连接到IP地址为 192.168.1.1 的服务端,域名设置为 example.com

  • 参数解析 :

    • -f:在前台运行。
    • 192.168.1.1:服务端的公网IP地址。
    • example.com:用于隧道通信的域名。

4.miredo

miredo 是一个Teredo隧道客户端,用于在IPv4网络上连接IPv6孤岛。当本地网络仅支持IPv4但需要访问IPv6资源时,Miredo通过UDP封装IPv6数据包,经由Teredo中继服务器实现IPv6连通性。

核心作用

  • IPv6过渡:在缺乏原生IPv6支持的网络环境中提供IPv6连接能力。
  • UDP封装:利用UDP协议穿透NAT,建立IPv6隧道。
  • 自动配置:自动获取IPv6地址并配置路由表。

常用命令

miredo -d
  • 含义:以后台守护进程模式启动Miredo服务。

  • 参数解析:

    • -d:在后台运行(守护进程模式)。

5.proxychains4

工具总体介绍
proxychains4 是一个强制任何TCP连接通过代理服务器(如SOCKS4、SOCKS5、HTTP)的工具。它通过动态链接库预加载技术(LD_PRELOAD),拦截程序的网络请求,使其经由配置好的代理链路发出。

核心作用

  • 代理跳板:将任何支持TCP连接的工具(如nmap、curl、msfconsole)的流量通过代理服务器转发,隐藏真实源IP。
  • 多层代理:支持配置代理链(Proxy Chain),流量依次经过多个代理服务器,增强匿名性。
  • Tor集成:常用于与Tor网络结合,实现匿名化渗透测试。

常用命令

proxychains4 nmap -sT 192.168.1.1
  • 含义:强制nmap工具通过配置好的代理服务器扫描目标主机。

  • 参数解析:

    • proxychains4:调用proxychains工具。
    • nmap -sT:执行正常的nmap扫描命令(-sT表示TCP连接扫描)。
    • 192.168.1.1:目标IP地址。

6.proxytunnel

工具总体介绍
proxytunnel 专注于通过HTTP代理服务器建立TCP连接,特别是为了支持SSL/TLS加密连接。它常用于在受限网络中通过Web代理访问HTTPS网站或建立SSH连接。

核心作用

  • HTTP代理连接:通过HTTP CONNECT方法在代理服务器上建立隧道。
  • SSL支持:能够处理HTTPS流量,允许通过代理进行SSL握手。
  • SSH代理:常用于配置SSH客户端通过HTTP代理连接到远程服务器。

常用命令

proxytunnel -p proxy.example.com:8080 -d target.com:443 -a 8081
  • 含义:连接到代理服务器,将本地端口8081的流量通过代理转发到目标服务器的443端口。

  • 参数解析:

    • -p proxy.example.com:8080:指定代理服务器地址和端口。
    • -d target.com:443:指定最终目标地址和端口。
    • -a 8081:指定本地监听端口。

7.ptunnel

ptunnel 是一个ICMP隧道工具,能够将TCP连接封装在ICMP回显请求(Ping)数据包中传输。这在TCP/UDP端口被严格过滤,但允许Ping命令通过的网络环境中非常有用。

核心作用

  • ICMP隧道:利用Ping协议建立隐蔽的数据传输通道。
  • 防火墙规避:绕过仅允许ICMP流量的防火墙策略。
  • 基础TCP转发:支持将任意TCP端口的流量通过隧道传输。

常用命令

ptunnel -p 192.168.1.100 -lp 8080 -da 192.168.1.200 -dp 22
  • 含义:通过ICMP隧道将本地8080端口的流量转发到目标服务器的22端口。

  • 参数解析:

    • -p 192.168.1.100:指定隧道服务端的IP地址。
    • -lp 8080:本地监听端口。
    • -da 192.168.1.200:目标服务器IP地址。
    • -dp 22:目标服务器端口。

8.pwnat

pwnat 是一种特殊的NAT穿透工具,它利用某种“魔法”(基于UDP的特定技术)来穿透对称NAT设备。与传统的端口转发不同,它允许外部主机直接连接到位于NAT内部的主机,即使该NAT是限制最严格的对称型NAT。

核心作用

  • NAT穿透:实现对称NAT的穿透,允许外部直接访问内网主机。
  • UDP隧道:基于UDP协议构建穿透通道。
  • 反向连接:常用于内网渗透中,建立从公网到内网的直接Shell连接。

常用命令

pwnat -l 8080 -p 80
  • 含义:监听本地端口8080,并将其穿透NAT映射到外部的80端口。

  • 参数解析:

    • -l 8080:本地监听端口。
    • -p 80:外部请求的目标端口。

9.sslh

sslh 是一个SSH/SSL协议混杂端口监听器,它能够识别进入的连接是SSH还是HTTPS流量,并将其转发到相应的后端服务。这使得SSH和HTTPS服务可以共享同一个端口(通常是443),从而在限制SSH连接的网络环境中隐藏SSH服务。

核心作用

  • 端口复用:允许多个服务(如SSH和HTTPS)共享同一个端口。
  • SSH隐蔽:将SSH流量伪装成HTTPS流量,规避基于端口的审查。
  • 协议识别:智能分析入站连接的第一个数据包,判断其协议类型。

常用命令

sslh -o 127.0.0.1:443 -s 127.0.0.1:22
  • 含义:监听443端口,如果是HTTPS流量则转发给本地443,如果是SSH流量则转发给本地22。

  • 参数解析:

    • -o 127.0.0.1:443:指定HTTPS后端服务地址。
    • -s 127.0.0.1:22:指定SSH后端服务地址。

10.stunnel4

工具总体介绍
stunnel4 是一个通用的SSL加密隧道守护进程,它可以为不支持SSL的客户端和服务器添加SSL功能。它通过在本地端口监听并建立SSL连接,将数据加密后传输到远程服务器,实现安全的通信通道。

核心作用

  • SSL加密:为任意TCP服务(如SMTP、POP3、IMAP)提供传输层安全加密。
  • 协议增强:为旧版或不安全的协议添加现代加密支持。
  • 代理中继:作为SSL代理,中继加密流量。

常用命令

stunnel /etc/stunnel/stunnel.conf
  • 含义:启动stunnel服务并加载指定的配置文件。

  • 参数解析:

    • /etc/stunnel/stunnel.conf:主配置文件路径,定义了服务监听端口、连接目标及证书路径。

11.udptunnel

工具总体介绍
udptunnel 是一个将UDP流量封装在TCP连接中的工具。由于UDP是无连接的,且容易被防火墙丢弃,该工具通过建立TCP长连接来传输UDP数据包,从而保证数据的可靠传输和防火墙穿透。

核心作用

  • UDP over TCP:将不稳定的UDP流量封装在可靠的TCP流中传输。
  • 防火墙穿越:利用TCP连接穿透限制UDP流量的防火墙。
  • 流媒体/游戏流量转发:适用于需要稳定传输UDP数据的场景,如DNS区域传输、游戏流量转发等。

常用命令

udptunnel -s 53 -t 192.168.1.100:53
  • 含义:监听本地53端口(UDP),并通过TCP连接将数据转发到远程服务器的53端口。

  • 参数解析:

    • -s 53:本地监听的UDP端口。
    • -t 192.168.1.100:53:目标服务器的IP和端口。

拓展

image-20260131115852427

图片展示了Kali Linux系统中三个核心的渗透测试与红队操作工具metasploit-frameworkpowershell-empirestarkiller。它们在网络安全领域被广泛用于漏洞探测、后渗透控制和命令与控制(C2)管理,是专业安全人员进行红队演练和渗透测试的“三驾马车”。

1.metasploit-framework

Metasploit Framework(MSF)是全球最广泛使用的开源渗透测试框架,由Rapid7公司与开源社区共同维护。它提供了一个完整的环境,用于编写、测试和执行漏洞利用代码,覆盖了从信息收集、漏洞扫描到权限提升、后渗透攻击的全流程。

核心作用

  • 漏洞利用:集成数千个针对Windows、Linux、macOS等平台的漏洞利用模块(Exploits)。
  • 载荷生成:通过msfvenom生成各种格式的恶意载荷(Payloads),如EXE、APK、PHP等。
  • 后渗透控制:通过Meterpreter等高级载荷,实现文件操作、屏幕截图、键盘记录、权限迁移等。
  • 自动化与扩展:支持Ruby脚本扩展,可与其他安全工具(如Nmap、Nessus)集成。

常用命令

msfconsole
  • 含义:启动Metasploit的命令行交互界面,是使用该框架的入口。
  • 参数解析:
    • search:搜索特定漏洞或模块,如search ms17-010
    • use:加载指定模块,如use exploit/windows/smb/ms17_010_eternalblue
    • set:设置模块参数,如set RHOSTS 192.168.1.100
    • run:执行当前加载的模块。

2.powershell-empire

PowerShell Empire(简称Empire)是一个基于PowerShell的后渗透测试框架,专为红队操作设计。它支持无文件攻击,通过PowerShell脚本在目标系统内存中执行,无需在磁盘上留下痕迹,具有极强的隐蔽性。

核心作用

  • 无文件攻击:利用PowerShell在内存中执行恶意代码,绕过传统杀毒软件的文件扫描。
  • 凭证窃取:集成Mimikatz等工具,可从内存中提取Windows凭证(如NTLM哈希、明文密码)。
  • 横向移动:支持WMI、PSRemoting等协议,在内网中横向渗透其他主机。
  • 权限维持:提供多种持久化机制,如注册表项、计划任务等。

常用命令

powershell-empire server
  • 含义:启动Empire的服务端,用于接收和管理客户端的连接。
  • 参数解析:
    • listeners:配置监听器,定义C2通信的协议(如HTTP、HTTPS)和端口。
    • stagers:生成初始载荷(Stager),用于在目标主机上下载并执行完整代理。
    • agents:管理已连接的受控主机,执行命令、上传文件等。

3.starkiller

Starkiller是PowerShell Empire的图形用户界面(GUI)管理工具,由BC Security开发。它将Empire的命令行操作可视化,降低了使用门槛,使安全人员能够更直观地管理C2服务器、监听器、载荷和受控主机。

核心作用

  • 可视化管理:提供Web界面,集中管理Empire的所有功能,如创建监听器、生成载荷、查看受控主机。
  • 提高效率:通过图形界面快速执行命令、上传文件、运行模块,无需记忆复杂的命令行参数。
  • 协作支持:支持多用户同时操作,适合团队协作的红队演练。

常用命令

starkiller
  • 含义:启动Starkiller的Web服务,默认在本地浏览器中打开管理界面。
  • 参数解析:
    • --server:指定Empire服务端的地址和端口。
    • --username--password:设置登录Web界面的凭证。
    • --config:指定配置文件,预设监听器、载荷等参数。

二、Exfiltration

image-20260131120409384

图片展示了Kali Linux系统中两个关键的网络安全工具impacket-smbservernetcat。它们在渗透测试、内网横向移动和网络调试中扮演核心角色,分别专注于SMB协议模拟与通用网络通信。

1.impacket-smbserver

impacket-smbserver 是Impacket工具集中的一个Python脚本,用于快速启动一个模拟的SMB(Server Message Block)服务器。Impacket是一套处理网络协议的Python类库,广泛用于安全研究和渗透测试。

核心作用

  • 文件共享服务:模拟Windows SMB服务,允许客户端通过SMB协议访问共享文件夹。
  • 凭证捕获:在内网渗透中,常用于诱使目标主机尝试连接,从而捕获NTLM哈希或进行中继攻击。
  • 横向移动:配合其他Impacket工具(如wmiexec.pypsexec.py)实现无文件攻击或远程命令执行。

常用命令

impacket-smbserver -smb2support share_name /tmp/share
  • 含义:启动一个支持SMB2协议的SMB服务器,共享名为share_name,共享路径为/tmp/share
  • 参数解析:
    • -smb2support:启用SMB2协议支持,提高兼容性。
    • share_name:定义共享名称,客户端连接时使用。
    • /tmp/share:指定服务器上要共享的本地目录。

2.netcat

netcat(简称nc)是网络工具中的“瑞士军刀”,通过TCP或UDP协议读写数据,支持端口扫描、文件传输、反弹Shell等多种功能,是渗透测试和网络调试的必备工具。

核心作用

  • 端口扫描:快速检测目标主机开放端口。
  • 数据传输:在两台主机间建立连接并传输文件或命令。
  • 反弹Shell:构建反向Shell以实现远程控制。
  • 端口转发:实现本地或远程端口转发,绕过防火墙限制。

常用命令

nc -zv 192.168.1.100 22
  • 含义:扫描目标主机的22端口是否开放。
  • 参数解析:
    • -z:仅扫描端口状态,不建立连接。
    • -v:显示详细输出。
nc -l -p 4444
  • 含义:在本地监听4444端口,等待客户端连接,常用于接收反弹Shell。
  • 参数解析:
    • -l:监听模式。
    • -p 4444:指定监听端口。