国外14亿泄露数据下载及还原

simeon

     2018年6月10日freebuf发布了篇文章《14亿邮箱泄露密码明文信息查询网站惊现网络》(链接地址:http://www.freebuf.com/news/174410.html),声称其泄露的数据可以通过暗网网站(http://dumpedlqezarfife.onion.lu/)进行查询,后续通过网络获取其泄露文件的下载地址,历经千辛万苦,终于将数据下载到本地,通过研究,将其txt文件进行还原处理,并对其进行无效数据处理,去除空密码等操作。

1.1.1数据下载及分析

1.数据下载地址

1)二进制未压缩41G磁力下载链接地址

magnet:?xt=urn:btih:7ffbcd8cee06aba2ce6561688cf68ce2addca0a3&dn=BreachCompilation&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Fglotorrents.pw%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337

2)二进制压缩11G磁力下载链接地址

magnet:?xt=urn:btih:09250e1953e5a7fefeaa6206e81d02e53b5b374a&dn=BreachCompilation.tar.bz2&tr=udp://tracker.leechers-paradise.org:6969/announce&tr=udp://tracker.opentrackr.org:1337/announce&tr=udp://tracker.pirateparty.gr:6969&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.zer0day.to:1337/announce

2.数据库内容

该集合数据库中包含从Bitcoin、Pastebin、LinkedIn、MySpace、Netflix、YouPorn、Last.FM、Zoosk、Badoo、RedBox以及游戏平台(Minecraft和Runescape等)泄漏的数据,以及Anti Public,Exploit.in泄漏的凭证列表

1.1.2数据分析及处理

1.对下载文件进行解压

   breachcompilation.txt.7z进行解压,解压后数据在data目录,它是按照字母进行排序的,在解压根目录存在一些脚本文件,如图1所示,原始文件解压后45G,后面我又对该文件进行压缩处理,节约空间。

 

1解压文件

2.使用cat生成文件

  使用cat * >alla.txt类似命令,对每一个文件夹进行处理,然后生成多个txt文件。

3.文件格式

   通过notepad对该密码文件进行查看,发现数据为邮箱帐号及密码,使用“:”分隔数据字段。

4.创建数据库及表

1)在mysql中创建数据库14yidata

2)创建数据库表

alla表设置两个字段,email及password。

1.1.3数据库导入处理

1.txt文件导入到数据库

1)对a开头的数据进行处理

  通过cat对a文件夹进行处理,共生成alla.txtalla-l.txtalla-n.txt三个文件夹,其中alla-l.txtalla-n.txt是因为在a文件夹下存在子文件夹l及n。

2)执行导入

   Navicat for MySQL中分别执行以下语句进行导入,如图2所示,导入成功后,会显示受影响的行,该数据表示导入了多少条数据。

LOAD DATA LOCAL INFILE "d:/ok/alla.txt" INTO TABLE alla FIELDS TERMINATED BY ':';

LOAD DATA LOCAL INFILE "d:/ok/alla-l.txt" INTO TABLE alla FIELDS TERMINATED BY ':';

LOAD DATA LOCAL INFILE "d:/ok/alla-n.txt" INTO TABLE alla FIELDS TERMINATED BY ':';

 

2导入数据

2.查询存在特殊字符邮箱数据并保存

   mysql中执行:select *  from alla  where email like '%;%'  and password >''查询后,将查询结果保存为alla-ok.txt文件,如图3所示,使用notepad打开alla-ok.txt文件,在其中可以看到存在特殊字符,将空格替换为“:”

 

3处理特殊字符数据

3.删除存在特殊字符“;”及有密码的数据

执行语句:delete   from alla  where email like '%;%' and password >'',如图4所示,将alla表中存在“;”和密码的数据进行清洗,也即删除掉,前面已经保存了数据(alla-ok.txt)。

 

4删除特殊字符数据

 4.查询空密码

在处理数据库中发现存在很多空密码,执行查询:select * from alla  where password='',执行后,如图5所示,显示共有292672条数据。

 

5查询空密码

5.删除空密码

由于空密码没有什么用处,是废弃数据,需要进行删除处理,执行语句:

delete   from alla  where password='' ,如图6所示,删除292672条数据记录。

 

6删除空密码数据

6.查询特殊字段“;”密码并导出文件

   在导入的数据库表alla中,存在一些特殊字符,其email名称跟密码通过进行分割,如图7所示,执行查询select *  from alla  where email like '%;%',这些数据不便于查询,需要进行处理。

 

7查询特殊字符“;” 存在的数据

7.导出特殊字符“;” 存在的数据

Navicat for MySQL查询处理完毕后,如图8所示,单击导出向导,根据其提示进行即可,将存在特殊字符的数据记录全部导出道d:\ok\ok\1.txt文件。

 

8将所有特殊字符数据记录导出到1.txt文件

8.合并导出特殊字符和密码的字段表及后导出的密码表

1)替换字符

  使用notepad打开1.txt文件,查找目标“;”,将其替换为“:”,如图9所示,选择全部替换即可。

 

9替换特殊字符记录

2)合并数据

   alla-ok.txt中的数据复制到1.txt文件中。

8.去除行尾空白字符

   前面进行查询及处理的数据存在空白字符,需要通过UltraEdit编辑器对1.txt文件去除行尾空白字符,单击“格式”-“删除行尾空白字符即可,如图10所示。

 

10去除行尾空白字符

9.重新导入特殊字符处理的表

将处理后的数据文件1.txt导入数据库,执行语句:

LOAD DATA LOCAL INFILE "D:/ok/ok/1.txt" INTO TABLE alla FIELDS TERMINATED BY ':';

如图11所示,将存在问题的数据记录重新导入数据库中。

 

11重新导入数据库中

10.将前面所有查询处理保存

   alla处理结果表进行重命名,例如alla_ok,按照顺序,对前面的查询处理进行编号,对后续数据进行处理。直至将所有数据处理完毕,对所有文件处理完毕后,实际数据数为1387009672条。

11.如果有兴趣可以利用14亿数据进行大数据学习

   推荐一个对14亿数据的处理及分析站点:https://github.com/philipperemy/tensorflow-1.4-billion-password-analysis

1.1.5总结及探讨

1.文本文件导入数据库语句总结

   很多时候泄露的数据为txt文件,需要对其进行处理,将txt文件中的数据导入数据库,方便进行查询等处理。

1)将文本文件导入mysql数据库

LOAD DATA LOCAL INFILE "d:/ok/alla-n.txt" INTO TABLE alla FIELDS TERMINATED BY ':';

2)查询存在特殊字符及密码的数据,并保存

select *  from alla  where email like '%;%'  and password >''

3)对上面的数据进行替换处理

空格替换成:

4)删除存在特殊字母“;”及有密码的数据

delete   from alla  where email like '%;%' and password >''

5)查询空密码

select * from alla  where password=''

6)删除空密码

delete   from alla  where password=''

7)查询特殊字段“;”密码并导出文件

select *  from alla  where email like '%;%'  

8)对导出文件进行替换处理“;”替换为“:”

9)合并导出特殊字符和密码的字段表及后导出的密码表

10)去除行尾空字段

11)重新导入特殊字符处理的表

LOAD DATA LOCAL INFILE "D:/ok/ok/1.txt" INTO TABLE alla FIELDS TERMINATED BY ':';

2.数据库去重处理

  在本次处理中未对数据进行去重处理,由于数据量比较大,进行去重处理后,感兴趣的朋友可以将所有txt文件cat成一个文件,使用sort进行去重处理。其命令为:

sort -u all.txt >allnew.txt

3.在线查询

互联网上有一些密码及邮箱在线查询网站:

https://pwdquery.xyz/:输入邮箱,隐藏部分的泄露密码

https://verify.4iq.com/:输入邮箱,自动将泄露密码发送到邮箱上

https://haveibeenpwned.com/Passwords:输入密码,确认是否泄露

参考文章:

https://shui.azurewebsites.net/2017/12/31/breachcompilation-1-4-billion-password/

对攻防技术感兴趣的朋友可以订阅本人撰写的付费专栏:sqlmap从入门到精通