【网安攻防-01】信息收集与密码破解

100 阅读10分钟

本篇文章主要记录了作者学习以下内容的笔记:

  • 信息收集技术(Whois查询、DNS枚举、Google Hacking、Shodan)
  • 密码破解技术(密码破解基础、John the Ripper工具使用)

免责声明

以下所有关于黑客技术、病毒攻击、拒绝服务或任何其他计算机系统攻击手段的讲义、资料和讨论内容,仅用于教育目的。这些内容不得用于对任何计算机系统发起攻击或造成损害,也不以任何方式鼓励任何人从事此类行为。

本文所涉及的所有技术讨论仅供学习和研究使用。作者不对任何人使用这些信息用于非法用途负责。阅读本文即表示您同意不会将文中讨论或披露的任何技术手段用于实施网络攻击等违法行为。

本文遵循学术研究和技术交流的目的,拒绝为任何恶意行为提供指导。如有违法使用,使用者需自行承担所有法律责任。

密码猜测(Password Guessing)和密码破解(Password Cracking)

密码猜测密码破解
操作方式直接在线尝试登录系统离线破解密码哈希值
速度速度慢 - 受网络环境和系统响应限制速度快 - 不受网络和系统限制
网络流量会产生大量网络流量和系统日志不产生可疑的网络流量
风险风险高 - 可能触发账户锁定或拒绝服务更安全 - 不会触发账户锁定
隐蔽性容易被发现 - 管理员能从日志中发现异常登录行为难以被发现 - 需要先获取密码哈希值
成功率成功率低破解成功率高 - 可以使用字典、彩虹表等多种方法

信息收集

信息收集分为两大类,分别是主动信息收集 (Active Reconnaissance)和被动信息收集 (Passive Reconnaissance)

基本信息收集方法对比

类型被动信息收集主动信息收集
交互方式不直接接触目标直接与目标交互
隐蔽性
风险级别中-高
检测概率几乎无法被检测容易被检测, Network IDS (Intrusion and Detection System) 或服务器日志
信息深度相对表层较为深入
合规性基本合规需要授权

OSINT(开源情报)

OSINT是Open Source Intelligence(开源情报)的缩写,指的是通过公开可获取的信息源来收集和分析数据的方法。简单来说,就是利用各种公开渠道获取目标信息的技术。

主要信息来源包括:

  1. 搜索引擎
  • Google、百度、DuckDuckGo等通用搜索引擎
  • Shodan(专门搜索联网设备的搜索引擎)
  • Have I Been Pwned(检查邮箱账号是否遭遇数据泄露)
  1. 社交媒体平台
  • 领英(职业信息)
  • 微博/Facebook(个人信息)
  • Instagram(照片、位置信息)
  1. 专业网站
  • 域名注册商(可查询网站所有者信息)
  • GitHub(开发者代码库)
  • Pastebin(文本分享平台)

Google Dorking

Google搜索的高级操作符,可以帮助更精确地定位信息。

操作符说明示例
" " (引号)用于精确匹配短语"password file" - 只搜索完全匹配"password file"的结果
OR用于搜索多个关键词之一(必须大写)admin OR password - 搜索包含admin或password的页面
- (减号)用于排除某些关键词admin -login - 搜索包含admin但不包含login的页面
intitle:在页面标题中搜索intitle:admin - 搜索标题中包含"admin"的页面
inurl:在URL中搜索inurl:admin - 搜索网址中包含"admin"的页面
intext:在页面正文中搜索intext:password - 搜索正文中包含"password"的页面
site:限定在特定网站内搜索site:example.com password - 只在example.com域名中搜索
filetype:ext:搜索特定类型的文件filetype:pdf password - 搜索包含"password"的PDF文件

数据泄露查询工具

Have I Been Pwned?

Have I Been Pwned?是一个检查个人数据是否在数据泄露事件中被泄露的网站。

主要功能:

  • 检查邮箱是否出现在数据泄露中
  • 查看具体泄露的网站和时间
  • 提供API服务
  • 支持域名批量查询

Shodan

Shodan是一个专门用于搜索互联网连接设备的搜索引擎。它通过主动扫描互联网设备并抓取banner信息来工作。

搜索操作符说明示例
country:按国家代码搜索country:HK - 搜索香港的设备
city:按城市搜索city:Beijing - 搜索北京的设备
title:搜索HTML标题内容title:"login page" - 搜索标题含login page的页面
html:搜索完整HTML内容html:"admin" - 搜索HTML中包含admin的页面
product:搜索产品名称product:nginx - 搜索nginx服务器
version:搜索产品版本version:1.14.1 - 搜索特定版本
hostname:搜索主机名或域名hostname:example.com - 搜索特定域名
net:搜索IP范围或子网net:192.168.1.0/24 - 搜索特定网段
os:搜索操作系统os:Windows - 搜索Windows系统
port:搜索特定端口port:80 - 搜索开放80端口的设备

whois

whois是用来查询互联网中域名的IP以及所有者等信息的传输协议。

概念说明示例
WHOIS查询域名和IP所有权的工具whois example.com
域名WHOIS查询域名注册信息whois google.com
IP WHOIS反向查询IP地址信息whois 8.8.8.8

主要查询信息包括:

  • 域名注册商
  • 名称服务器
  • 注册日期
  • 到期日期
  • 注册人信息
  • 管理员联系方式
  • 技术联系人

DNS域名系统

概念说明示例
DNS正向查询域名转换为IP地址host example.com
DNS反向查询IP地址转换为域名host 8.8.8.8
DNS区域传送获取某个区域的所有域名记录dig axfr domain.com @ns1.domain.com

host

# 查询域名的NS记录(域名服务器记录)
host -t ns example.com
# -t 指定记录类型
# ns 表示查询域名服务器记录

# 查询域名的MX记录(邮件服务器记录)
host -t mx example.com
# -t 指定记录类型
# mx 表示查询邮件服务器记录

Dig

# 查询NS记录
dig ns example.com
# ns 表示查询域名服务器记录

# 查询MX记录
dig mx example.com
# mx 表示查询邮件服务器记录

# 使用Google DNS进行查询,简化输出
dig @8.8.8.8 example.com +noall +answer +short
# @8.8.8.8 指定使用Google DNS服务器
# +noall 关闭所有输出
# +answer 显示答案部分
# +short 显示简化结果

常用工具介绍

CeWL

CeWL是一个专门用于生成密码字典的爬虫工具。它的基本功能包括:

  • 爬取指定网站的内容
  • 提取网页中的单词
  • 生成自定义的密码字典
  • 特别适用于定制化目标的密码破解

例: cewl -d 2 -m 5 -w docswords.txt https://example.com,

  • -d 2:爬取深度为2层
  • -m 5:最小单词长度为5个字符
  • -w docswords.txt:输出保存到docswords.txt文件
  • https://example.com: 目标网址

THC-Hydra

THC-Hydra是一个非常强大的密码暴力破解工具,主要用于在线密码猜测攻击。其名字来源于希腊神话中的九头蛇,象征着它可以同时进行多重攻击。

主要特点:

  • 支持多种协议:
    • Web相关:HTTP(S),FTP,SSH
    • 邮件相关:POP3,IMAP,SMTP
    • 数据库:MySQL,MSSQL,Oracle
    • 其他:RDP,VNC,Telnet等
  • 多线程并行:
    • 可以同时发起多个尝试
    • 能够加快密码猜测速度
    • 可以控制线程数量

THC-Hydra攻击案例

启动MetasploitableKali虚拟机分别作为防守方和攻击方。这是一个典型的密码猜测场景:

  • 攻击方:使用Hydra尝试密码
  • 防守方:可以通过日志和流量监控发现攻击
  1. 创建测试账号并搭建一个有漏洞的FTP服务

    # 创建测试用户
    sudo adduser test0
    # 设置密码为123
    
    1.png

    FTP(File Transfer Protocol,文件传输协议)是一个用于在计算机网络上传输文件的标准网络协议。

    默认端口:21(控制)和20(数据)
    明文传输 - 不加密
    需要用户名和密码认证
    
  2. 准备工作

    # 查看目标IP地址
    ip addr
    
    2.png

    由此可知,防守方ip地址为192.168.232.129

    # 监控认证日志
    tail -f /var/log/auth.log
    

    通过日志,我们可以查看实时查看登录尝试、监控暴力破解攻击、发现可疑的登录活动以及追踪认证失败原因。

    3.png
  3. 使用xhydra进行密码猜测

    切换到Kali端。配置Hydra攻击如下:

    设置目标:Metasploitable2的IP地址
    选择协议:FTP
    设置用户名:test0
    密码字典:/usr/share/john/password.lst
    

    写成命令行的形式

    hydra -l {username} -P /usr/share/john/password.lst ftp://{ip address}
    
    4.png

    攻击完成,可以看到解析出密码123.

    在此过程中,可以通过sudo tcpdump -nn -i eth0 dst port 21监控21端口流量。

  4. 通过日志监控整个攻击过程

    防守端日志:

    5.png

    防守端日志关键信息:

    1. 群组创建 Feb 17 07:56:20 metasploitable groupadd[5547]: new group: name=test0, GID=1004 Feb 17 07:56:20 metasploitable useradd[5548]: new user: name=test0, UID=1004, GID=1004, home=/home/test0, shell=/bin/bash

    2. 攻击开始 Feb 17 08:09:32 metasploitable vsftpd: pam_unix (ftp:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=test0 rhost=192.168.232.128 显示了攻击特征:

      • 协议:vsftpd (FTP服务)
      • 目标账户:test0
      • 攻击源IP:192.168.232.128
      • 状态:authentication failure (认证失败)
      Feb 17 08:09:38 metasploitable last message repeated 46 times
      
      • 显示同样的失败尝试重复了46次

    攻击端日志:

    6.png
  5. 删除用户

实验结束后,需要删除防守端用于测试的用户。删除指令:

sudo deluser test0          # 只删除用户,保留家目录
sudo deluser --remove-home test0  # 同时删除用户和其家目录

JOHN THE RIPPER – Linux系统密码破解

  1. Linux系统密码文件位置
  • /etc/passwd
    • 所有用户可读
    • 包含用户基本信息:用户名、UID、GID、home目录、shell等
    • 格式:username:x:UID:GID:comment:home_directory:shell,其中x表示密码存在shadow文件中
  • /etc/shadow
    • 只有root可读
    • 存储加密后的密码信息
    • 包含:用户名、加密密码、密码修改时间、有效期等
    • 格式:username:encrypted_password:last_changed:min:max:warn:inactive:expire
  • 为什么要分开存放?
    • 安全性考虑:避免普通用户接触加密密码
    • 防止密码哈希被收集用于破解
  1. 加密算法标识
  • $1$ 表示使用MD5加密

  • $5$ 表示使用SHA-256加密

  • $6$ 表示使用SHA-512加密

    例如,当我输入sudo cat /etc/shadow后,显示的输出是 kali:$y$j9T$mnL009D1ldxBLjxgEtTE/$...:::,这说明我的系统用的是Yescrypt加密算法。其中, kali是用户名,j9T 是算法参数(成本因子),mnL009D1ldxBLjxgEtTE/是密码盐,紧随其后的才是实际的密码哈希值。密码盐的作用是防止彩虹表攻击,同时即使两个用户使用相同密码,由于盐不同,最终的哈希值也不同,从而增加破解难度。

  1. unshadow工具
  • 用于合并passwd和shadow文件
  • 命令unshadow passwd shadow > unshadowed.txt会将两个文件合并成一个文件
  • 因为john等密码破解工具需要同时获取用户信息和密码哈希,因此合并后格式便于密码破解工具处理
  • 分开存储是为了系统安全,合并是为了密码审计。这种操作应该只在安全测试环境使用
  1. John the Ripper (john)命令
  • john --wordlist=/usr/share/john/password.lst --rules unshadowed.txt
    • wordlist=/usr/share/john/password.lst:指定使用的密码字典文件, 字典包含常用密码列表 -rules:启用密码变形规则, 会对字典中的每个词进行变形。例如:将'o'变成'0', 添加数字到末尾,大小写变换等。
    • unshadowed.txt:之前用unshadow合并的文件
  • john --show unshadowed.txt显示已经破解的密码