0X01
一直对D盾检测账号克隆的功能感到好奇,终于跟着老师傅的教程手把手学会了怎么用IDA,OD配合去逆向分析。
D盾有一项功能是账号克隆:
通过StudyPe查看,使用了NetUserEnum相关的函数
通过查看msdn的例子:
https://docs.microsoft.com/zh-cn/windows/desktop/api/lmaccess/nf-lmaccess-netuserenum
大致可以知道这些函数是怎么使用。
0x02
OD调试
按ctrl+g输入NetUserEnum
按F2下断点
按F9运行,点击D盾克隆账号检测
Od命中断点,记录下返回地址
0x03
IDA配合
Ok,上ida,按g键,输入地址:0051158B
往上翻,查看函数头(地址为5114A4):
分析sub_5114A4函数。
//32 此结构在系统有异常的情况下NetUserEnum 将失败返回2221状态值
typedefstruct _USER_INFO_3 {
LPWSTR usri3_name; 0
LPWSTR usri3_password; 4
DWORD usri3_password_age; 8
DWORD usri3_priv; C
LPWSTR usri3_home_dir; 10
LPWSTR usri3_comment; 14
DWORD usri3_flags; 18
LPWSTR usri3_script_path; 1C
DWORD usri3_auth_flags; 20
LPWSTR usri3_full_name; 24
LPWSTR usri3_usr_comment; 28
LPWSTR usri3_parms; 2C
LPWSTR usri3_workstations; 30
DWORD usri3_last_logon; 34
DWORD usri3_last_logoff; 38
DWORD usri3_acct_expires; 3C
DWORD usri3_max_storage; 40
DWORD usri3_units_per_week; 44
PBYTE usri3_logon_hours; 48
DWORD usri3_bad_pw_count; 4C
DWORD usri3_num_logons; 50
LPWSTR usri3_logon_server; 54
DWORD usri3_country_code; 58
DWORD usri3_code_page; 5C
DWORD usri3_user_id; 60
DWORD usri3_primary_group_id; 64
LPWSTR usri3_profile; 68
LPWSTR usri3_home_dir_drive; 6C
DWORD usri3_password_expired; 70
}USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;
权限问题
读取F值。
F值二进制流30h偏移是 关联的 user_id
Bin搜索了一下 f值的含义:
http://www.beginningtoseethelight.org/ntsecurity/index.htm
关键字符串:
0x04
这样一来,检测逻辑就清楚了:
0x05
逆向大法好,通过OD和IDA的配合调试分析,学习了D盾判断账号克隆功能实现的逻辑,当然,最关键的是在掌握了逆向的思维和方法。