type
status
date
slug
summary
tags
category
icon
password
最后编辑时间
Mar 11, 2025 08:09 AM
漏洞编号
No.
同步状态
状态
Author
0. EventLog Analyzer简介1. DLL文件2. 格式文件3. IDEA反编译4. 审核日志5. SQL注入测试6. 开启审计日志7. 策略相关事件id列表8. 总结9. Oracle数据库10. 后话
0. EventLog Analyzer简介
EventLog Analyzer是卓豪旗下一款安全信息和事件管理(SIEM)软件,用于实时监控网络设备、应用程序和操作系统的日志数据。它能够自动化地处理日志数据,并生成报告,以帮助安全管理员及时检测和响应潜在的威胁。EventLog Analyzer还可以分析日志数据,识别内部和外部威胁,并提供警报和通知,以支持快速响应和修复。此外,它还能够跟踪符合法规要求的日志记录,并生成符合各种合规性标准的报告。
本文是对其数据库日志模块功能实现的简单分析,在想要实现类似功能的时候可以作为参考。
1. DLL文件
首先从进程中定位到一个可疑的收集日志进程
SysEvtCol.exe
,从名字上看应该是日志收集的exe,位置:但是从其调用的dll来看,一时间没有有效发现
往上回看其父进程
先筛除系统dll,排查EA自带的可疑dll。从名字上看发现一个
importLog.dll

查看引用的dll,很明显看到有
ADVAPI32.dll
的相关eventlog函数
通过导出的函数名猜测此部分是获取sa用户服务的EventLog

接着注意到AdventnetOper.dll ,进一步查看发现有许多注册表键值和环境变量之类的增删改查函数,结合导出函数名猜测是操作注册表部分


2. 格式文件
将
SysEvtCol.exe
导入IDA
在
../logs
目录中打开 eventlog.txt

从 winLogs 内容上看猜测是EA向其数据库获取EVENTLOG内容的查询日志

根据parserLogs的记录查看MSSQL.xml

明显是解析EVENTLOG日志中MSSQL的格式文件

应该是软件先获取到所有的EVENT日志,存进pgsql数据库后,通过不同的xml格式文件分类提取到前端
3. IDEA反编译
- 文件夹导入idea反编译
根据
importLog.dll
的 Export
定位到文件\ManageEngine\EventLog_Analyzer\EventLog Analyzer\lib\EventLogService.jar!\com\adventnet\sa\server\imp\ImportEvtLogs.class

native
方法引用了本地库,猜测关键的导入 event 操作还是在 importLog.dll
中- 将
importLog.dll
导入ida

cpp编译的dll

调用了
ADVAPI32.dll
中相关的EventLog函数microsoftlearn用法:https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-readeventloga
4. 审核日志
默认审核日志是关闭的,可在ssms中开启

此处被写入了应用程序日志,日志记录如下

相关的注册表位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security\MSSQL$<InstanceName>$Audit\EventSourceFlags
,此值为0时,不允许通过多个服务器审核事件向SQL Server安全日志写入取出eventLog写入文件

5. SQL注入测试

注入时间是 17:29
审计日志中记录了对应的查询语句

有对应的事件,但是没有sql攻击报表(即没有识别出为sql注入)


跑sqlmap进行测试,时间 11:14

应用程序日志中均有记录

后端也正常收集

但sql注入报表(预定义报表)部分没有数据

编辑不了预定义报表,也无法查看预定义报表的内容。
自定义一个简单的报表测试,内容为
数据库查询语句中包含CASE WHEN字符
,选择设备为本机器,默认日志来源是windows eventlog


可推测预定义报表的来源也是默认的
windows eventlog
,但是由于内置规则没识别出注入语句,调整payload后再次测试sql,特征明显,有闭合单引号有注释符,时间 16:10

修改一下自定义报表条件

自定义报表可识别

推测:根据内置/自定的规则从eventlog中筛选出sql注入事件
6. 开启审计日志
eventlog详情如下,
eventid:33205
,通过JDBC连接数据库开启审核和审核策略审核事件: audit_schema_version:1
event_time:2022-11-30 06:51:16.3535404
sequence_number:1
action_id:AUSC
succeeded:true
is_column_permission:false
session_id:53
server_principal_id:1
database_principal_id:0
target_server_principal_id:0
target_database_principal_id:0
object_id:0
user_defined_event_id:0
transaction_id:0
class_type:A
duration_milliseconds:0
response_rows:0
affected_rows:0
client_ip:192.168.249.217
permission_bitmask:00000000000000000000000000000000
sequence_group_id:00000000-0000-0000-0000-000000000000
session_server_principal_name:sa
server_principal_name:sa
server_principal_sid:01
database_principal_name:
target_server_principal_name:
target_server_principal_sid:
target_database_principal_name:
server_instance_name:DESKTOP-1P14TIC
database_name:
schema_name:
object_name:
statement:
additional_information:<action_info xmlns="http://schemas.microsoft.com/sqlserver/2008/sqlaudit_data"><session><![CDATA[ME_LOG3609eba5bb3_96a5_488a_86de_7da88d6bcddd$A]]></session><action>event enabled</action><startup_type>manual</startup_type><object><![CDATA[audit_event]]></object></action_info>
user_defined_information:
application_name:jTDS
connection_id:9F7DA3E0-7681-433F-B490-75CFB8F976AA
data_sensitivity_information:
host_name:DESKTOP-1P14TIC
开启审核sql语句
新建审核策略sql语句
审核策略相关sql语句
7. 策略相关事件id列表
共45个id,
8. 总结
开启审计日志存入EventLog(Application)—定时备份该日志—定时读取到前端显示—前端自定义报表/告警规则
9. Oracle数据库
创建数据库:
密码:Oracle19


直接创建用户的话会遇到公用用户名或角色名无效的问题,首先需要进行切换容器等操作
之后新建用户
注:连接的时候需要使用用户名为
OT AS SYSDBA
审计日志开启
审计日志关闭
登录日志
其他审计策略
10. 后话
第一次做此类逆向的工作,过程中技术不够专业,逻辑不够清晰,分析程度较浅,可能也忽略了很多关键点,此文仅作记录。
- 作者:3R1C
- 链接:https://notion-3r1c.vercel.app/article/126
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。