引言
今天,我要和大家分享一个有趣但需要谨慎对待的话题:如何利用Google Hacking和简单的Bash脚本批量收集邮箱地址。这个技术既可用于合法的市场营销和数据分析,也可能被恶意利用于垃圾邮件和钓鱼攻击。本文仅供安全研究和防御目的,请勿用于非法用途。
Google Hacking简介
Google Hacking(也称为Google Dorking)是一种高级搜索技术,通过特定的搜索语法找出Google索引的敏感信息。
基本语法示例
intext:@"yahoo|gmail|hotmail".com filetype:txt site:.us
这个搜索语句可以找到:
-
包含特定邮箱域名的文本 -
限定文件类型为txt -
限定网站域名为.us
Google Custom Search API使用
1. 获取API访问凭证
-
访问Google Cloud Console -
创建新项目 -
启用Custom Search API -
生成API密钥
2. 配置搜索引擎
-
访问https://programmablesearchengine.google.com/ -
创建新的搜索引擎 -
获取搜索引擎ID (cx)
3. API调用示例
# 基本API调用
curl "https://www.googleapis.com/customsearch/v1?key=YOUR_API_KEY&cx=YOUR_CX&q=YOUR_QUERY"
# 带参数的API调用
curl "https://www.googleapis.com/customsearch/v1?key=YOUR_API_KEY&cx=YOUR_CX&q=YOUR_QUERY&num=10&start=1"
4. 重要参数说明
-
key: API密钥 -
cx: 搜索引擎ID -
q: 搜索查询 -
num: 每页结果数(最大10) -
start: 起始结果索引 -
fileType: 文件类型过滤 -
siteSearch: 站点限制
自动化收集脚本
基础版本脚本
#!/bin/bash
# 设置搜索字符串
SEARCH="intext:@"yahoo|gmail|hotmail".com filetype:txt site:.us"
# 获取结果页数
PAGECNT=$(curl -s "https://www.googleapis.com/customsearch/v1?q=$SEARCH&key=[API_KEY]&cx=[CX]&start=1" | jq -r '.queries.nextPage[0].startIndex')
echo"总页数: $PAGECOUNT"
# 遍历所有页面收集URL
for i in $(seq 1 $PAGECNT)
do
curl -s "https://www.googleapis.com/customsearch/v1?q=$SEARCH&num=10&key=[API_KEY]&cx=[CX]&start=$i" |
jq -r '.items[].link' >> links.txt
done
# 从URL中提取邮箱
for link in $(cat links.txt)
do
curl -s $link | grep -E -o '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}' >> emails.txt
done
增强版功能
#!/bin/bash
# 添加多线程支持
MAX_THREADS=10
# 添加邮箱验证函数
verify_email() {
local email=$1
# 基本格式验证
if [[ $email =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$ ]]
then
echo"[+] 有效邮箱: $email"
echo$email >> valid_emails.txt
fi
}
# 主函数
main() {
# 代码实现
}
main "$@"
防御策略
1. 邮箱保护措施
-
使用Plus Addressing技术 -
示例:[email protected] -
便于追踪邮箱泄露来源
2. 网站管理员防御
# Apache配置示例 # 阻止直接访问敏感文件 <FilesMatch ".(txt|log|csv)$"> Order deny,allow Deny from all </FilesMatch>
3. 安全最佳实践
-
定期检查信息泄露 -
实施robots.txt控制 -
使用验证码防止自动化收集 -
对外显示邮箱进行混淆
实战技巧
1. Google Hacking高级语法
# 基础搜索 intext:@domain.com filetype:txt # 高级搜索示例 site:target.com filetype:xls | filetype:xlsx | filetype:csv intext:"email" intitle:"index of" intext:"@gmail.com" inurl:admin filetype:txt intext:"@"
2. API 调用优化
#!/bin/bash
# API配置
API_KEY="YOUR_API_KEY"
CX="YOUR_CX"
DELAY=2 # 延迟秒数,避免超过配额
# 函数:处理API响应
handle_response() {
local response=$1
if [[ $response =~ "error" ]]; then
echo"[-] API错误: $response"
return 1
fi
return 0
}
# 函数:API调用
make_api_call() {
local query=$1
local start=$2
# URL编码查询字符串
encoded_query=$(echo$query | jq -sRr @uri)
# 发起API请求
response=$(curl -s "https://www.googleapis.com/customsearch/v1?key=$API_KEY&cx=$CX&q=$encoded_query&start=$start")
# 处理响应
handle_response "$response"
# 提取链接
echo$response | jq -r '.items[].link'
# 延迟避免超限
sleep $DELAY
}
3. 结果分析和过滤
# 提取特定域名邮箱
grep -E '@specific-domain.com' emails.txt
# 统计域名分布
cat emails.txt | cut -d@ -f2 | sort | uniq -c | sort -nr
# 检查邮箱格式
grep -E '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$' emails.txt
API使用注意事项
-
配额限制
-
免费版每天100次查询 -
付费版可提升限额 -
建议实现请求延迟
-
错误处理
# API错误检查
if [[ $(echo$response | jq -r '.error.code') == "403" ]]; then
echo"配额超限或认证错误"
exit 1
fi
-
最佳实践
-
实现请求重试机制 -
保存中间结果 -
做好异常处理 -
遵守API使用条款
总结
本文介绍的技术展示了Google Hacking和Google API的强大功能,但也暴露了企业信息安全的潜在风险。建议:
-
及时检查信息泄露 -
实施有效的防御措施 -
培训员工安全意识 -
定期进行安全审计 -
合理使用API资源
我是V浪,欢迎关注"HW安全之路",我们下期再见!
特别提醒:
-
文中技术仅供学习研究,切勿用于非法用途 -
使用API时请遵守Google服务条款 -
注意保护收集到的数据,防止二次泄露
原文始发于微信公众号(HW安全之路):为什么你的企业邮箱总是收到钓鱼邮件?Google Hacking揭秘背后真相
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论