ossim显示不了srcpip解决
一、 问题描述
打开Security Events
事件源ip和目的ip获取不到
打开具体事件
Source address 和 destination address 为0.0.0.0
事件详情中能找到源ip
二、 分析
查看显示源ip的web源码
url显示是base_qry_main.php,先打开它
ossim:/usr/share/ossim/www/forensics# vi base_qry_main.php
在此页面内查找HostReportMenu、base_qry_main.php等关键字无果
转而用find来找
ossim:/usr/share/ossim/www/forensics# find /usr/share/ossim/ -name "*" -exec grep '\”HostReportMenu' {} \; -print
执行后发现文件较多于是再过滤一下
ossim:/usr/share/ossim/www/forensics# for file in `find /usr/share/ossim/ -name "*" -exec grep '\”HostReportMenu' {} \; -print | grep '/usr/share/ossim/www/'`; do grep 'base_qry_main.php' ${file}; echo ${file}; done;
最后发现在/usr/share/ossim/www/forensics/base_qry_sqlcalls.php中。
打开此文件
srcip显示的是$current_sip的值,向上查找此变量
在第346行
$current_sip由$current_sip32通过函数baseLong2IP获得,$current_sip32为$myrow[]数组中某元素,看情况应该是从数据库中读取的记录集取得的行。继续往上查找myrow怎么获取。
第299行,myrow通过result的baseFetchRow方法获取,向上查找result
第180行,发现是执行的$sql然后获取到result。ok,我们把这个sql显示出来,加一句
echo $sql;
刷新日志显示的页面,查看sql内容
SELECT SQL_CALC_FOUND_ROWS acid_event.* FROM acid_event FORCE INDEX (timestamp) WHERE 1 ORDER BY timestamp DESC
表名是acid_event
进数据库看看
第一条的ip_src有值,通过timestamp找到我们关注的那条日志,发现ip_src是0,难怪web页面显示的是0.0.0.0,但为啥数据库中都是0。
这样的话,抓包看看是哪个程序在事件发生的时候写库。
Tcpdump监听,登录10.135.15.201
ossim:/usr/share/ossim/www/forensics# tcpdump -i lo -s 0 port 3306 -w /tmp/a.pcap
抓到之后查找操作acid_event表的语句
查看对应时间语句中插入的srcip仍然是0
查看srcport 33464对应的进程
ossim-server在写库
vi打开看是乱码,file一看是elf,有点杯具,要查看怎么写库的只能reverse了。从服务器上down下来ossim-server,先ultraedit打开看看
按ascii查找发现有操作acid_event的部分字串,应该就是它,不过一想要逆向那得搞到啥时候,就有点放弃了。
后来一想不对啊,ossim是开源的,开浏览器去官网下载源码。
到官网www.ossim.net找源码,发现源码
http://www.assembla.com/code/os-sim/git-2/nodes?rev=master
git clone git://git.assembla.com/os-sim.2.git
下载源码到本地
找一下哪些函数有操作acid_event
打开sim-organizer.c
#vi src/sim-organizer.c
发现2077行的sim_organizer_snort_event_update_acid_event会插入acid_event,和之前server中sql字串,抓包的sql一致,此函数接收的event参数(SimEvent *)最后会赋值给sql,
那么我们需要找到调用此函数的地方。
find一下,发现是sim-organizer.c自身会调用2894和2934行
向上寻找在哪个函数内,发现是sim_organizer_snort,传递event
find一下,寻找sim_organizer_snort的调用者,在306行
在函数sim_organizer_run内
查看event怎么得到
201行,定义
223行,通过sim_container_pop_event获得
find一下,ossim.container,发现在main.c中赋值
打开src/main.c,发现程序使用g_thread_create创建多个线程来跑应用,其中创建了一个线程
线程函数sim_thread_organizer,调用sim_organizer_run,这和上面我们发现event来源所在的函数一致。
继续看ossim.container怎么得到的。
通过sim_container_new函数得到,传递ossim.config参数,分析一下
simCmdArgs,是从ossim-server启动时,传递的参数.config传递的是使用-c选项后面的字串
ossim-server –c用来指定config.xml的位置
最后分析发现ossim.config是从/etc/ossim/server/config.xml中获取ossim的配置信息。
接下来看sim_container_new函数的作用,在src/sim-container.c中,经过分析发现,
ossim.container是获取各组件监听服务的配置和数据等信息。
接下来继续分析sim_container_pop_event函数,src/sim-conntainer.c,7120行
从队列中取出最近一个事件,查看container->_priv->events怎么得到
178行
补充:Web开发 , 其他 ,