首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件网络安全

系统安全 | 邮件软件漏洞 | 安全基础 | 数字签名 | 攻防技术 | 病毒公告 | 病毒查杀 | ISA Server | 防火墙 |
首页 > 邮件网络安全 > 安全基础知识 > 宽带拨号连接密码恢复原理 > 正文
金笛邮件系统

宽带拨号连接密码恢复原理

出处:电脑报 作者:电脑报 时间:2005-2-19 13:45:00
简单三步解决企业垃圾邮件难题

编者按:在读者来信中,经常有朋友询问如何做一名成功的黑客或安全专家,如何才能找到好的安全技术学习方法。其实,除了掌握一些必备的基础知识和工具外,还要懂得编程等技术;另外攻防思路的养成和培训也是很重要的。因为技术可以通过努力学习而有所成就,但攻防的思维方式即使苦心钻研往往也无大的收获,就得多多借鉴高手的经验了。在本文中,作者通过对NT平台拨号连接密码恢复原理的研究,层层索引,步步入微的思维方法就值得推荐。

前段时间我的ADSL密码忘记了,但幸好还保存在拨号连接里面,于是我到网上找了些星号密码显示工具,可惜不起作用。后来找到一种名为Dialupass的工具,这家伙不负我所望,把密码给我还原出来了 (用的Dialupass v2.42,我的系统是Windows XP) 。抱着浓厚的兴趣,我决定深入研究。略有收获,愿与大家共享。

Dialupass星号密码显示之谜

看上去,Dialupass是非普通的星号密码显示工具,那它的原理是什么呢?上Google查了一番,没找到相关资料。一生气便抄起家伙——Windbg,准备把它大卸八块。郁闷的是,用Windbg加载后,密码就不能还原出来了,显示的是星号。换替补Ollydbg上场,情况依旧。怪了,莫非这小工具有Anti-Debug功能?当时只是一丝怀疑,因为实在不相信这样的小工具作者会花心思来保护。

小知识:

Windbg工具:

Windbg是微软开发的免费源码级调试工具。可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。

Anti-Debug技术:

Anti-Debug,即反跟踪技术。防止 Cracker 用 SoftICE 之类的调试器动态跟踪,分析软件。反跟踪技术一般是具有针对性的,即针对某种调试器的反跟踪,而不能防止所有的调试器跟踪。

在用S-ICE跟踪的过程中,发现有这么一个调用:GetProcAddress(xx, “IsDebugPresent”)。原来真的有Anti-Debug功能,好在比较简单。统计了一下,总共有五处进行了Anti-Debug检查。

OK,情况查明了,便换回Windbg来调试。在Windbg里面有这么一个断点可绕过Anti-Debug检测:bp KERNEL32!IsDebuggerPresent “g poi(esp);r eax=0;g”。

花了些时间跟踪了一下,把Dialupass恢复密码的流程都搞清楚了。这小程序猫腻还挺多的,总结如下:

1. 关键函数不直接调用,而是用LoadLibraryA和GetProcAddress来获取函数地址后再CALL;
2. 函数名是经过编码的,反汇编后看字符串是看不到的;
3. 关键地方一概用花指令来迷惑你和反汇编软件。

其实原理很简单,就是用rasapi32.dll里面的一些函数来获取拨号连接的一些信息,再用 ADVAPI32!LsaRetrievePrivateData 函数来获取密码。

关键字:LsaRetrievePrivateData和RasDialParams

根据Dialupass的原理,写了个类似的工具(完整的源代码x_dialupass.c可以从.net/src/x_dialupass.c">http://security.xici.net/src/x_dialupass.c获取)。后来用LsaRetrievePrivateData和RasDialParams做关键字,重新在Google搜索了一遍,找到一些类似的代码。

小提示:

参考资源①和②是俄罗斯人公布的演示代码,没有对LsaRetrievePrivateData返回的数据进行拆分用户名和密码。参考资源③是日本人公布的完整的应用程序的代码,可惜在对LsaRetrievePrivateData返回的数据进行拆分处理时存在BUG,导致有些情况下用户名和密码取得不正确。

①http://www.lwteam.ru/modules/ne ws/article.php?storyid=167
②http://www.wasm.ru/forum/index.php?action=vthread&forum=12&topic=4873
③http://homepage2.nifty.com/spw/software/rtrick/

后来发现Lsadump2 DUMP出来的数据里面包含了“LsaRetrievePrivateData”返回的数据。Lsadump2的原理大致如下:

1.插入一个线程到Lsass.exe进程;
2.打开LSA Policy database;
3.从注册表“HKLM\SECURITY\Policy\Secrets”中枚举子键;
4.LsarOpenSecret;
5.LsarQuerySecret。

进一步跟踪后发现,其实ADVAPI32!LsaRetrievePrivateData是通过NdrClientCall2发送RPC调用到Lsass.exe进程,Lsass.exe里面再调用LsarOpenSecret、LsarQuerySecret来完成获取拨号连接信息过程的(LsarOpenSecret里面有权限判断,非Admin组用户是没有权限来调用ADVAPI32!LsaRetrievePrivateData的)。

跟踪了一下LsarQuerySecret,发现它返回的数据其实是从注册表中读取。保存拨号连接信息的注册表键值为:“HKLM(HKEY_LOCAL_MACHINE的缩写)\SECURITY\Policy\Secrets\RasDialParams!SID#0\CurrVal”。

SID对应的是用户的String SID (“HKLM\SECURITY”这个键只有System有权限读写)。

LsarQuerySecret从注册表中读取出来数据后,接着调用LsapCrDecryptValue函数来解密,对于同一台机器来说,解密时用的KEY始终都是固定的,这个KEY在lsasrv.dll里面的变量名为_LsapDbSecretCipherKey。在Windows 2003里面,变量名不一样,对应的有两个,分别为LsapDbSecretCipherKeyWrite和LsapDbSecretCipherKeyRead,但这两个变量里面的数据是一样的。
LsapCrDecryptValue用的似乎是标准DES算法,解密时主要流程如下:

lsasrv!LsapCrDecryptValue→advapi32!SystemFunction005→advapi32!DecryptDataLength→advapi32!SystemFunction002→advapi32!DES_ECB_LM→advapi32!des

解密后,在“<<”标志处还有一个判断(如图所示)。

假如[esi+45h]为0的话(esi是LsarOpenSecret函数返回的Handle),它会把解密后的数据再进行一次加密,不管是Windows 2000还是Windows 2003,这时用的KEY始终都是固定为“SystemLibraryDTC”。

Lsadump2里面调用LsarOpenSecret得到的Handle,偏移0x45处值为1,所以LsarQuerySecret函数返回的就是解密后的数据了。

而在调用ADVAPI32!LsaRetrievePrivateData时,LsarOpenSecret返回的Handle偏移0x45处值为0x0,所以LsarQuerySecret返回的是解密后又加密的数据,所以在ADVAPI32!LsaRetrievePrivateData里面还有一个对应的解密过程。相应地,LsapCrEncryptValue加密的主要流程如下:
lsasrv!LsapCrEncryptValue→advapi32!SystemFunction004→advapi32!EncryptDataLength→advapi32!SystemFunction001→advapi32!DES_ECB_LM→advapi32!des

_LsapDbSecretCipherKey是如何产生的?

开始我以为在同一版本的Windows里面,_LsapDbSecretCipherKey是固定的,后来发现我错了。那么这个_LsapDbSecretCipherKey是如何产生的?流程如下:

1.调用ntdll!NtConnectPort打开 L“\Security\WxApiPort”;
2.调用ntdll!NtRequestWaitReplyPort得到一些数据;
ebp-40处为NtRequestWaitReplyPort返回的LPCMESSAGE:
kd> dd ebp-40
0006fcb8 00400028 00000002 000000dc 000000d8
0006fcc8  00000024 00000000 00000000 00000000
0006fcd8  00000001 00000010 00000010 fd317e3e
0006fce8  7e24e86d d12503d3 5f7d01a8 7665f528
kd> db ebp-14
0006fce4  3e 7e 31 fd 6d e8 24 7e-d3 03 25 d1 a8 01 7d 5f

3.将上述“ebp-14”处的0x10字节数据COPY到lsasrv.dll里面的_LsapDbSysKey变量。

_LsapDbSysKey在不同的机器上面(即使版本相同)都是不一样的。它是怎么产生的?有幸拜读了Flashsky的大作后(http://www.xfocus.net/articles/200306/550.html),我才明白这就是传说中的“SYSKEY”。用Flashsky的代码验证一下:

c:\>getsyskey
3e 7e 31 fd 6d e8 24 7e d3 03 25 d1 a8 01 7d 5f

跟踪系统启动过程,可知道“\Security\WxApiPort”是由Winlogon.exe进程创建的,然后Lsass进程通过这个LPC PORT从Winlogon进程获取SYSKEY,随后Winlogon进程会关闭这个LPC PORT。所以在系统启动完成之后,用Process Explorer等工具是看不到这个LPC PORT存在的,而且在Winlogon和Lsass进程空间都搜索不到上述SYSKEY。

4.从注册表“HKLM\SECURITY\Policy\PolSecretEncryptionKey”中读取出来一段数据,调用函数_LsapDbDecryptKeyWithSyskey,把它用_LsapDbSysKey来解密,_LsapDbSecretCipherKey就在解密完后的数据里面(LsapDbDecryptKeyWithSyskey函数做的其实就是MD5和RC4运算)。
从注册表中获取拨号连接密码

了解原理后,我们就可以直接从注册表里面来获取拨号连接中的密码等数据了。但有几个问题需要解决:

1.原料:“HKLM\SECURITY”键只有SYSTEM有权限读写。我们可以把代码插入到SYSTEM进程里面去运行,或者把这个键修改为ADMIN有权限读,或者提升本进程权限。

2.催化剂:如何获取_LsapDbSysKey解密用的函数,_LsapDbDecryptKeyWithSyskey为非导出函数。可以用Flashsky的代码来获取SYSKEY,利用公开的MD5和RC4库函数来解密。

直接从Lsass.exe进程里面搜索_LsapDbSecretCipherKey,它的结构如下:

typedef struct _LSA_BLOB {
DWORD cbData;
DWORD cbMaxData;
BYTE  pbData;
} LSA_BLOB;

pbData指向存储KEY的地址,KEY长度固定为0x10字节,即cbData和cbMaxData都是固定为0x10。所以从Lsass进程的空间里面搜索“\x10\x00\x00\x00\x10\x00\x00\x00”即可找到正确的KEY。结果可能会有多个,可以把所有搜索到的KEY都试一下,总有一个正确的。

3.工具:解密函数LsapCrDecryptValue为非导出函数,怎么办?或许可以根据特征码来搜索,但总觉得不太可靠。幸好,LsapCrDecryptValue调用的advapi32!SystemFunction005是导出函数。或者直接利用公开的DES库函数,自己来运算。

注:x_dialupass2.cpp中的代码演示了直接从注册表中读取数据并解密之的过程,完整的源代码可从http://security.xici.net/src/x_dialupass2.cpp获取。

,
相关文章 热门文章
  • XP/Vista双系统忘记密码 来看看如何破解
  • 方便易用的密码:电子邮件加密变得轻松如意
  • 通过邮箱破译网银密码窃财
  • 6.12 用户如何通过浏览器修改自己的邮箱密码
  • Exchange 2003 SP2更改用户的密码后为何还可以使用旧密码
  • 200元可破解任何邮箱密码? 专家称多半是骗钱
  • 随心所欲修改Vista密码过期提示
  • 实例证明 如何构建牢固可靠的密码
  • 老调重弹——你存储的密码做Hash了吗?
  • 网络上最常用的10个密码 Password居首
  • 密码革命 用自己的身体保护自己的秘密
  • Sql server数据库密码安全追踪和存储
  • 巧妙隐藏IP地址做网上“隐身”人
  • SYMANTEC NAV 9.0中文企业版的安装
  • Rapid Restore PC安装及使用步骤
  • DoS 拒绝服务攻击
  • 如何实现VPN使用脱离内部网络的IP地址
  • 关于卡巴斯基使用的个人经验综合
  • 常用端口对照详解
  • 免费端口监控软件Port Reporter
  • 宽带拨号连接密码恢复原理
  • 网络端口及其详解
  • 图解McAfee的使用方法
  • 网络安全技巧大全
  • 自由广告区
     
     
    WINMAIL 让您轻松架设邮件系统
    eqmail
    最新软件下载
  • IMail Server 10.01
  • ORF Enterprise Edition 4.2 正式版
  • WinWebMail 3.7.7.1 企业版
  • WinWebMail 3.7.7.1 标准版
  • GmailStore网络邮盘 3.1.7 简体中文版
  • POP Peeper&nbsp;3.2
  • GcMail 4.1.7.1
  • The Bat! Pro 4.0.18 多国语言特别版
  • Advanced Emailer 4.2 特别版
  • CheckMail 5.0.1 特别版
  • SPAMfighter Pro 6.2.41 多国语言版
  • Popcorn&nbsp;1.87
  • 今日邮件技术文章
  • koomail公共地址薄,帮网管省心省力
  • 用好koomail的多帐户签名管理
  • 解读垃圾邮件钟爱的十大名人
  • 如何在“奥运期间”轻松优化企业网络管理
  • 新现垃圾邮件攻击,矛头直指格鲁吉亚
  • 报告称29%网民曾被垃圾邮件吸引而购物
  • 解析垃圾邮件过滤机制 降低邮件误判率
  • OPPO手机玩机之E-mail设置方法
  • 传Android手机可能不支持微软Exchange..
  • 删除Vista部分协议 让vista网卡轻装上阵
  • 教你如何为Windows Vista添加内码输入法
  • 简单实用 用IIS打造自己的邮件服务器
  • 最新专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • 移动电子邮件专题
  • Apache James 专题
  • IMail Server 操作指南
  • ISA Server 2004 使用专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2007 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号