关于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+1B317D98 ; FUN_1A6A6+B5217D98 17D98 var_38 = dword ptr -