关于DeviceLock的工作原理分析报告
来公司的第一件工作就是分析DeviceLock的工作原理。其间遇到了一些困难,现在稍微做个小结,为以后的工作,做好准备。
首先来说DeviceLock是一个SmartLine Inc的一款产品,用于数据保护,当拥有了电脑或者域的管理员权限后可以对软驱、光驱和其他移动的媒体的访问进行控制。而且还支持WiFi、蓝牙、USB、FireWare、串并口等多种接口。不用任何硬件,单纯靠软件来实现这一切。
一、这个软件主要有六个目标:
1、DeviceLock有网络管理员来管理谁有权力访问当地设备(软驱、光驱、DVD驱动器、ZIP驱动器、USB设备、FireWire、红外线、串口和并口、磁带机、WiFi、蓝牙适配器等等)
2、当安装了DeviceLock后管理员有权力控制软驱、光驱和其他设备,包括控制一周七天的任何时候的访问权限。
3、还可以控制移动设备。
4、DeviceLock还可以抵御通过移动设备传播的病毒、木马和其他恶意代码的攻击。
5、DeviceLock还可以保护磁盘有意或无意的格式化。
6、DeviceLock可以通过用户来设置不同的权限。
7、网络管理员可以可以刷新存储设备的缓存。
DeviceLock由两个部分组成,Service和Manager。一个实现核心的访问控制,一个实现界面设置。
二、具体看看其安全功能是如何实现的,
DeviceLock Manager
| |
| |
RPC
| |
| |
Security Support Provider Interface(SSPI)
|
|
|
NT LAN Manager SSP
|
|
|
DeviceLock Service
(Client Impersonation)---Local Security Authority Authentication---Input Data Verification
|
|
|
Windows NT Domain Active Directory
通过SSPI、NT LAN Manager SSP、Local Security Authority Authentication来建立安全检查机制。Manager可以设置配置这些SSPI。
USER's Process
Access Token(USE ID、Group IDs)---------Security Descriptor 软驱
|
|-----Security Descriptor 硬盘
|
|-----Security Descriptor 光驱
|
|-----Security Descriptor USB设备
......
通过检查在USER's Process的Access Token当中的ID和各个设备的Security Descriptor比较可以控制访问权限。
三、我的工作的展开
1、在完成安装后,达到三个值得注意的目标文件:
DLManager.exe 295 KB
DLService.exe 160 KB
dluni.dll 3.00 KB
2、通过资源提取的工具在DLService.exe里面提取两个文件,可以使用EZ Extract Resource、eXeSc等等好多工具来完成这个工作。之后提取出来的文件我命名为:
DLService_exe_0 64.6 KB
DLService_exe_1 1.80 KB
通过分析关键的问题在DLService_exe_0而后者好像是个关于help的文件。
3、下面就是具体工作使用IDA Pro来反汇编目标代码。这个文件是个驱动的文件格式(就是.sys)使用VC来写的,但是也只能分析代汇编代码的层次。
最后还是没有突破这一层,没有拿下。
在分析的时候具体有几个办法:分析API函数、从start函数开始跟踪、具体分析某几个可能的核心函数等等。
在IDA Pro当中有一些工具是很有用的,比如:
图形分析,显示改函数在代码当中所处的位置,有好几种方式,非常实用。
指令的跳转很方便。
可以对分析完成的函数重命名,有提示作用。
碰到的困难有:
分析量大,难以抓重点,但是可以参考API函数。
我估计有些无用的代码干扰视线。
对于代码当中的常量和变量的作用难以分析。
UnDocument的东西。
分析了好多函数会发现都是操作处理数据,但是不知其中的核心问题。
四、我下面附一个我详细分析的一段代码来看看:
----------------------------------------------------------------------------------------------------------------------
17D98 FUN_17D98 proc near ; CODE XREF: FUN_17B04+1B3
17D98 ; FUN_1A6A6+B52
17D98
17D98 var_38 = dword ptr -