Java架构师系列

黑客是怎么知道你的密码的

2019-06-19  本文已影响0人  Java架构师CAT

从事Java已经5年,目前在某互联网公司做就Java系统架构师,每天都会写一些技术文章,感兴趣的同事请关注我,谢谢。

在踏入网络安全领域之前,我也和周围的很多人一样很奇怪,键盘上的组合这么多,黑客是怎么知道我的密码的。其实这一切就是这么简单。

首先,要声明,我不是黑客啊,不要误会,从不干任何违法的事。然后再说一下,任何的防护都是有漏洞的,无数的大佬已经用行动证明了世界上没有不透风的墙,安全永远只是相对的。下面是一些常用的破解密码的方法。

破解方法1:拼手气

专业地来讲,应该叫暴力破解,这也是非常常用,有效而且技术含量相对较低的一种方法。说白了,就是比谁输密码的速度快,而且你完全可以手动输入,所以我说技术含量较低嘛。从理论上讲,你把所以的字母和数字的组合全都试一遍绝对能找到正确的密码。这样你肯定会说了,这我要试到哪一年啊!当然对于程序员来说,可以写一个程序来代替你输密码。现代计算机的计算速度基本都能达到每秒几十亿次,看起来好像很快的样子。但是,不要忘了,这只是计算速度,而不是输入密码的速度。

比如,以一个用来暴破压缩包密码的小程序为例。

import zipfile 

import time 

import threading 

start = time.time()

# 判断线程是否需要终止

flag = True 

def extract( password, file):

try:

password = str(password)

file.extractall(path='.', pwd=password.encode('utf-8'))

print("密码是:{}".format(password))

end = time.time()

print("花费时间:{}".format(end-start))

global flag 

# 成功解压其余线程停止

flag =False

except Exception as ex :

print(ex)

def do_main():

file = zipfile.ZipFile("test.zip",'r')

# 读取字典

data =[]

f = open("pass.txt","r")

line =f.readline()

line = line[:-1]

while line:

line = f.readline()

line = line[:-1]

data.append(line)

# 开始暴破

for n in data:

if flag is True:

a = threading.Thread(target=extract, args=(n, file))

a.start()

a.join()

if __name__ == '__main__':

do_main()

以下是结果:

我的字典内容是数字0到99999,而正确的密码是144,也就是说,从0跑到144,用了大概8秒(配置高的电脑会跑得更快一些,这主要和CPU有关系,建议使用i7的处理器,当然你也可以用超级计算机,像什么天河,神威啥的)。这好像和每秒几十亿次速度完全不相符啊!不过这个速度也比人手动输入快了不知道多少倍了,但是以这个速度来遍历所有的数字加字母的组合,所需要的时间至少是以亿年为单位。所以光靠瞎猜计算机也帮不了你。

不过当计算机遇上统计学,会产生什么美妙的反应呢?

这张图包含了2018年世界最差的100个密码中的25个,其中123456已经连续五年蝉联第一了。看看这里面有没有你的密码呢?我想要说的是,黑客在暴破密码之前都会对目标做一些侦察来确定密码可能出现的范围,把可能的值存到一个字处理文件里,一般都是txt文件,这个txt文件就是字典。然后他再利用程序来一个一个地尝试字典里的密码。你可能会说了,这也不能保证一定就能破解出密码啊,如果我的密码不在他的字典里怎么办?对,是这样的。但是对于黑客来说,概率性攻击往往比准确性攻击更有价值,比如有10万个目标,即使成功率只有10%,那也能拿下1万个目标,这一万个目标中还是很有可能包含一些有钱的大佬的,所以收益还是很客观的。如果你费劲心思去攻击一个穷逼,即使成功了也没啥价值。

破解方法2:撞库

听起来好像很高大上的,其实原理很简单。我就用一个小故事来说明这其中的原理吧。比如说,你想干倒一个大佬,从正面硬刚,你无论如何都不是他的对手,但是可以干倒他的武器被一个菜鸡所掌握住了。所以,干倒这个这大佬最好的办法就是先干倒这个菜鸡,然后从他那儿得到干倒大佬的武器,最后再干倒大佬。利用这个原理,黑客会先攻击一些小的网站,拿到一大批的账号和密码,然后用来在像支付宝这样的平台上登陆,往往会有很多可以登上去。这利用的就是人们为图方便,把各种密码都设成一样的心理。在这里提醒大家,和钱有关的密码一定要单独设置,千万不要和别的密码重复,否则很容易被撞库攻击。

参考事件:http://tech.qq.com/a/20160202/059536.htm

破解方法3:利用漏洞

之前讲了一大堆是不是觉得都不太靠谱。如果说,之前的方法都是要靠一些“运气”的话,那么利用漏洞就是靠真本事了。打一个简单的比方,武侠小说里武林高手不管有多么的厉害,都有自己的死穴,如果你能攻击到他的死穴那他就是必死无疑了。但是,他的死穴在哪里呢?如何找呢?这就是你自己的本事了。对于对手来说,他肯定也会有意地去隐藏自己的死穴,这也会对我们的攻击造成了很大的困难。

举个简单的例子,我们使用的WiFi包含了很多种加密方式,打开手机,这里有五种加密方式,我们现在常用的是WPA或者是WPA2,但在比较久以前是WEP的天下。这种加密方式非常不安全,很容易被破解,现在看来已经没有哪一户人家的WiFi还用这样的加密方式了。当年kali Linux的前身backtrack Linux就是靠着破解WEP的高效性而普及开来的。注意,这和你设置的密码复杂程度没有任何的关系,不管多么复杂的密码,只要你捕获到足够的数据包都能破解,用时非常短。

破解方法4:买通内部人员

看到这儿你肯定会说,我靠,这算什么方法?不要看不起这种方法,最坚固的堡垒往往是从内部攻破的。当违法带来的利润高于成本的时候就有人会铤而走险。美国曾经就买通过敌对国的内部人员,让其携带带有病毒的U盘进入其军事设施,然后,呵呵,敌人就嗝屁了。所以一个系统内部最怕的就是出现内鬼。

有没有觉得茅塞顿开呢,是不是突然燃起了学习网络安全的激情了呢?当年我是看了一部关于黑客的电影才选择入坑的。但是,对于某些涉世未深的青少年来说,我想提醒一下,不要去干一些你认为很好玩的事,千万不要。技术是没有错的,错的永远是运用它的人。

从事Java已经5年,目前在某互联网公司做就Java系统架构师,每天都会写一些技术文章,感兴趣的同事请关注我,谢谢,同时,需要架构师资源的可以在下方评论或私信我黑客Java

java。

上一篇下一篇

猜你喜欢

热点阅读