自然人社工
人,是网络安全全流程中最大的弱点。针对人的攻击往往有出奇不意的效果。而想要利用人的弱点进行攻击,那么对目标的信息收集与了解就是非常重要的了。这篇文章记录了一些常用的用于对人进行身份信息收集的技术。这些技术常被用于溯源取证、社工攻击。
0x00 社工分析中的身份信息收集
关于人的社工分析有很多维度的信息都值得被关注。但不管怎样,开展身份信息社工工作往往都是从一些关于人的最基本的信息开始的,身份信息的收集过程就是尽可能使用有限信息关联出其他信息的过程。
这里,将关于人的信息,简单分为两大类。
第一类,基本信息。如:姓名,昵称,手机号码,邮箱地址,各类证件,社交账号。这类信息能在溯源中帮助确定人的身份。是人在进行社交过程中不可避免使用的信息,用来在社会中表明他的身份,是在社会中生活的名片。
第二类,其他信息。如:居住地、爱好、家庭状况、婚姻状态、职业。这类信息能帮助我们更好的了解一个人的生活习惯与生活状态,代表人的特点。在生成定制化的社工字典时很有用。
下面介绍常用到的信息收集方法。
1 搜索引擎关键字检索
最傻但往往最有效的办法,就是关键字搜索。但想要达到比较好的效果,依赖不少条件:
1.关键字不能过于过于大众化,可以选择多个与目标相关的关键字组合;
2.目标必须在互联网上有一定的活跃度;
3.尽量使用google、duckduckgo等国外搜索引擎。他们的屏蔽的网页与结果较少。
2 已注册网站查询
互联网上存在一类网站,这类网站旨在收集并存储用户的各种活动信息用以构建用户画像,或收集历次信息泄露事件中的数据库。这里先不讨论此类网站动机如何,是否真实有效,但一定程度上也给其他人提供了获得目标更多信息的方式。通过泛社工库查询,可以获得目标注册过的社交网站、甚至旧密码。
2.1 REG007
查询邮箱、手机号注册过哪些社交平台:www.reg007.com
2.2 手工查询
使用个网站的注册功能输入目标的邮箱地址或手机号,查看页面是否提示该邮箱、手机号被占用。
3 社工库查询
搭建社工库泄露用户隐私数据是犯法的。公网上很难找到,提供泄露数据细节的社工库,如果真的有,那么其动机也是值得高度怀疑的,使用时输入的信息极有可能被记录,用于溯源与黑吃黑。比较多的是一类脱敏后的网站,帮助用户查询自己的信息是否泄露。这两种方式都能帮助判断目标是否注册了某平台的账号。
3.1 泄露检查查询
网站名 | 地址 | 可查询项 |
---|---|---|
Firefox Monitor | https://monitor.firefox.com | 邮箱 |
HaveIBeenPwned | https://haveibeenpwned.com | 邮箱 |
Aleph | https://aleph.occrp.org/ | 名称、手机号码、邮箱 |
snusbase | https://snusbase.com/ | 邮箱、名称、IP、电话、哈希、密码 |
checkusernames | https://checkusernames.com/ | 名称 |
Intelligence X | https://intelx.io/ | 邮箱、IP、CIDR、比特币地址 |
dehashed | http://www.dehashed.com/ | 邮箱、用户名、IP |
IsLeaked | https://isleaked.com/ | 邮箱 |
KnowEm | https://knowem.com/ | 名称 |
3.2 社工库查询
4 姓名确认术
4.1 通过手机号确定姓名
1> 支付宝
当手机号绑定了支付宝且完成了实名认证时,通过支付宝转账功能可以查到对方的姓名。
如果对方的姓名只有两个字,只需手工猜出姓即可。
如果对方的姓名多于两个字,可以知道最后一个名,并通过枚举姓的方式确定到姓。
通过以上的方式,能保证在未实际转账的情况下获得姓名中的绝大部分。如果使用支付宝使用工商银行/网商银行进行转账,且转账成功,那么在银行app的查询明细中能看到姓名全称。
ps: 微信的“银行卡或手机号转账”也有相同的效果,但是开通微信手机号转账的人很少。
2> 钉钉
如果目标使用过钉钉,可以使用在钉钉内使用手机号搜索,可以直接查出用户名。
3> 社工库
4.2 百家姓频数表
鉴于有时需要用到姓名猜测,有一个关于姓的频数统计表还是蛮有作用的,能帮我们从高频到低频尽快的猜到正确的姓。
李 王 张 刘 陈 杨 赵 黄 周 吴 徐 孙 胡 朱 高 林 何 郭 马 罗 梁 宋 郑 谢 韩 唐 冯 于 董 萧 程 曹 袁 邓 许 傅 沈 曾 彭 吕 苏 卢 蒋 蔡 贾 丁 魏 薛 叶 阎 余 潘 杜 戴 夏 钟 汪 田 任 姜 范 方 石 姚 谭 廖 邹 熊 金 陆 郝 孔 白 崔 康 毛 邱 秦 江 史 顾 侯 邵 孟 龙 万 段 漕 钱 汤 尹 黎 易 常 武 乔 贺 赖 龚 文 庞 樊 兰 殷 施 陶 洪 翟 安 颜 倪 严 牛 温 芦 季 俞 章 鲁 葛 伍 韦 申 尤 毕 聂 丛 焦 向 柳 邢 路 岳 齐 沿 梅 莫 庄 辛 管 祝 左 涂 谷 祁 时 舒 耿 牟 卜 路 詹 关 苗 凌 费 纪 靳 盛 童 欧 甄 项 曲 成 游 阳 裴 席 卫 查 屈 鲍 位 覃 霍 翁 隋 植 甘 景 薄 单 包 司 柏 宁 柯 阮 桂 闵 欧阳 解 强 柴 华 车 冉 房 边 滕 晋 苑 邬 臧 畅 宫 来 苟 全 褚 廉 简 娄 盖 符 奚 木 穆 党 燕 郎 邸 冀 谈 姬 屠 连 郜 晏 栾 郁 商 蒙 计 喻 揭 窦 迟 宇 敖 糜 鄢 冷 卓 花 仇 艾 蓝 都 巩 稽 井 练 仲 乐 虞 卞 封 竺 冼 原 官 衣 楚 佟 栗 匡 宗 应 台 巫 鞠 僧 桑 荆 谌 银 扬
5 社交账号社工术
5.1 微信、支付宝
微信、支付宝直接在添加好友处搜手机号
5.2 QQ、快手、抖音、百度云网盘、京东、脉脉、网易云、微博
将手机号存入通讯录,然后在以下社交账号内开启通讯录同步,点添加/发现好友,获得对方社交账号。(需要开启应用访问通讯录权限)
5.3 搜索引擎关键词查找
在google、duckduckgo上搜索手机号
5.4 社工库
6 位置信息
6.1 时区
通过人的社交时间、语言、分享动态推断目标大致所在的时区。
6.2 精确位置
屌丝级:各类带有地理位置元数据的文件、keep、行者、朋友圈分享的位置记录
黑客级:欺骗用户安装能够实时获取GPS坐标的APP、诱导用户点击获取位置的链接
政府级:利用小区基站实现定位、利用信令漏洞定位
6.3 通过IP查地理位置
IP地理位置查询:https://qifu.baidu.com/?activeKey=SEARCH_IP
IP地址定位:https://www.ipuu.net
7 邮箱信息收集
显然的,腾讯系的邮箱基本都是以数字打头的,暴露了QQ号。
部分网易126,163邮箱以手机号命名,暴露了手机号。
部分邮箱以名称+数字命名,暴露了姓名。
7.1 收方回溯发方地址
查看邮件信件代码,标头内可以看到发送者的地址信息。
如果邮件表头内含有"X-Originating-IP:"的key值,value值即为发送者的IP。比较常见的QQ邮箱、126邮箱,都有本字段。
如果没有该字段,可以考虑标头内的Received字段。(多个Received字段时考虑最底部的,不一定有,有也不一定准)
7.2 发方写邮件探针
原理是通过在邮件内容中嵌入动态加载的外部图片,当收信人点开邮件时就会在图片服务器上留下IP。
具体方式是以源代码或文本模式写一封邮件,在邮件正文中嵌入图片html格式的图片链接。可以将图片自身的大小设的非常小,且将img字段设为不可见。这样攻击者打开邮件也无法感知。
<img src="http://n.sinaimg.cn/sinacn04/787/w440h347/20180725/5fc6-hftenia0102640.jpg" w="440" h="347" wh="1.27" alt="一组萌萌哒小猫咪表情包">
8 脱敏恢复
8.1 身份证号脱敏恢复
身份证号是的编排是有一定规律可循的。除了最后1位是校验位外,其余各位与出生地、出生日期、性别、出生编号系系相关,因此即使是经脱敏处理的身份证号,仍能通过程序分析的方式过滤出可能的身份证序列组合。
这里写了一个脱敏身份证恢复工具,支持对身份证后4、6位及身份证内生日的爆破。
8.2 手机号脱敏恢复
介绍怎么尽可能的恢复手机号的所有位数,但在此之前需要一定的知识介绍。
手机号码的11位是有规律可循的。
1-3位 | 4-7位 | 8-11位 |
---|---|---|
移动接入码 | 地区编码 | 用户号码 |
移动接入码
运营商类型 | 移动接入码 |
---|---|
电信 | 133 149 153 173 174 177 180 181 189 191 199 |
联通 | 130 131 132 145 146 155 156 166 167 171 175 176 185 186 |
移动 | 134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 195 198 |
虚拟运营商 | 162 165 167 170 171 |
移动接入码是由运营商去向工信部申请,由工信部统一颁发的,每颁发一次,都会发布一个《电信网号码资源使用证书》。通过下载历年的证书我们能获得不同号段的分配说明。这里有个问题,国家这些年一直在推携号转网,初衷是帮助用户能够自主切换号码的运营商,如果真的全面推展开,且大家的使用积极性很高的化,那移动接入码就不再能准确区分手机号码是哪家运营商的了,但从目前的结果来看,通过移动接入码来判断运营商归属仍然是一个高度有效的方法。
地区编码
地区编码的具体数值分配由各运营商管理,因此很难给出一个通用的结构组成。所幸,网上有人专门通过爬虫等方式收集了运营商的地区编码数据库。如下所示:
https://github.com/dannyhu926/phone_location
8.2.1 已知目标手机号前3后4位+城市
使用下面这个shell命令简单分析以下,可以发现,如果移动接入码固定的情况下,一个城市的前7位(移动接入码+地区编码)的可能性不超过5000,更普遍的情况下是可以控制在500以内的。
array=( 134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 195 198 130 131 132 145 146 155 156 166 167 171 175 176 185 186 133 149 153 173 174 177 180 181 189 191 199 )
for i in ${array[@]}; do cat phone_location.sql |grep "'$i'"|awk '{print $8}'|sort -nr | uniq -c|sort -nr|head -n 1; done
因此,这时,如果已知手机号前3后4位时,如果知道目标所处的位置将能极大的缩小目标号码的可能范围。结果的可能数<=5000。
8.2.2 已知目标手机号后4位+城市
使用下面的shell命令简单分析一下,可以发现,如果只知道目标所处的城市,那么前7位的可能性不超过20000。
clear;cat phone_location.sql |awk '{print $8}'|sort -nr|uniq -c |sort -nr|head -n 10
因此,总的来说这种情况下需要遍历的手机号可能不超过20000。
8.2.3 已知后4位
如果只知道后4位别的一概不知,则要尝试482049次,才能保证遍历到正确的目标号码。
clear;cat phone_location.sql |grep "INSERT"|grep "phone_location"|wc -l
9 其他
围绕得到的基本信息,可以在社交帐号内进行进一步的信息挖掘,获得其他信息。
9.1 字典定制化
理想情况下的一个人的互联网账户都要满足登录密码需要满足长度、复杂度、无意义、唯一性的要求,但实际操作起来这是几乎不可能的。
实际场景下对口令的选取往往围绕用户自身及周边的特点展开。如果信息收集的足够彻底,我们可以依据以下的信息,生成关键词根,通过词根间的组合填充,进而生成定制化字典。
{
"人":{
"拼音全称1":"chuanjianguo",
"拼音全称2":"ChuanJianguo",
"拼音简写1":"CJg",
"拼音简写2":"cjg",
"拼音全称3":"jianguo"
},
"生日":{
"生日全部1":"20210512",
"生日部分":"0512"
},
"电话": {
"手机号后6位":"123456",
"手机号后4位":"3456"
},
"学校":{
"学号":"123456",
"毕业或入学年份":"2021"
},
"sfz":{
"sfz后6位":"654321",
"sfz后4位":"4321"
},
"爱好/宠物":{
"关键字":"xiuer"
},
"公司":{
"name1":"Google",
"name2":"GG"
},
"其他":{
"通用词缀":"略"
}
}
9.2 口令哈希逆向查询
在线密文密码查询网站,有时能帮助我们得到明文密码。