Hi Risto,

seems I got this to be working and receive one correlate message with whole
info i needed. Thanks a lot for your help.

*Raw log:*
type=SYSCALL msg=audit(1479718141.164:570635): arch=c000003e syscall=59
success=yes exit=0 a0=c9b1a0 a1=c9b880 a2=c9b270 a3=7ffdbf1ac860 items=3
ppid=26962 pid=26963 auid=1003 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0
sgid=0 fsgid=0 tty=pts0 ses=72 comm="lesspipe.sh" exe="/usr/bin/bash"
key=(null)
type=EXECVE msg=audit(1479718141.164:570635): argc=3 a0="/bin/sh"
a1="/usr/bin/lesspipe.sh" a2="sec.log"
type=CWD msg=audit(1479718141.164:570635):  cwd="/var/log"
type=PATH msg=audit(1479718141.164:570635): item=0
name="/usr/bin/lesspipe.sh" inode=25322516 dev=ca:01 mode=0100755 ouid=0
ogid=0 rdev=00:00 objtype=NORMAL
type=PATH msg=audit(1479718141.164:570635): item=1 name="/bin/sh"
inode=25168137 dev=ca:01 mode=0100755 ouid=0 ogid=0 rdev=00:00
objtype=NORMAL
type=PATH msg=audit(1479718141.164:570635): item=2
name="/lib64/ld-linux-x86-64.so.2" inode=1813292 dev=ca:01 mode=0100755
ouid=0 ogid=0 rdev=00:00 objtype=NORMAL

*Correlated log:*
*type=SYSCALL msg=audit(Mon Nov 21 08:49:01 2016:570635): arch=x86_64
syscall=execve success=yes ppid="less" pid="26963" auid="<username>"
uid="root" gid="root" euid="root" suid="root" fsuid=0 egid="root"
sgid="root" fsgid=0 tty=pts0 comm="lesspipe.sh" exe="/usr/bin/bash"
key=(null) cwd="/var/log" obj_name="/usr/bin/lesspipe.sh"
full_command="/bin/sh /usr/bin/lesspipe.sh sec.log"*


My whole SEC correlation rule:

# ---- Rule 1
# This rule for SYSCALL hash generating
# Next, we want to load the hashes at start, restart, soft restart (so that
we can modify the file and send SEC an SIGHUP)
type=Single
desc=Load hashes for SYSCALLs at STARTUP
ptype=RegExp
continue=TakeNext
pattern=SEC_STARTUP|SEC_RESTART|SEC_SOFTRESTART
context=SEC_INTERNAL_EVENT
action=lcall %syscalls -> ( sub { %SyscallHashes = (); @syscalls =
split(/\n/,`/bin/ausyscall --dump`); shift @syscalls; \
foreach (@syscalls) { my ($key, $val) = split(/\s+/, $_);
$SyscallHashes{"$key"} = $val; }; return %SyscallHashes; } )


# # ---- Rule 2
# # This rule for User hash generating
# # Next, we want to load the hashes at start, restart, soft restart
type=Single
desc=Load hashes for UIDS at STARTUP
ptype=RegExp
continue=TakeNext
pattern=SEC_STARTUP|SEC_RESTART|SEC_SOFTRESTART
context=SEC_INTERNAL_EVENT
action=lcall %uids -> ( sub { %UsersHashes = (); open(PASSWD_FILE,
"</etc/passwd"); \
while (<PASSWD_FILE>) { my @user = split /:/; $UsersHashes{"$user[2]"} =
$user[0]; }; return %UsersHashes; } )

# # ---- Rule 3
# # This rule for Group hash generating
# # Next, we want to load the hashes at start, restart, soft restart
type=Single
desc=Load hashes for GIDS at STARTUP
ptype=RegExp
continue=TakeNext
pattern=SEC_STARTUP|SEC_RESTART|SEC_SOFTRESTART
context=SEC_INTERNAL_EVENT
action=lcall %guids -> ( sub { %GroupHashes = (); open(GROUP_FILE,
"</etc/group"); \
while (<GROUP_FILE>) { my @group = split /:/; $GroupHashes{"$group[2]"} =
$group[0]; }; return %GroupHashes; } )


# ---- Rule 4
# type=SYSCALL msg=audit(1479282146.936:22853): arch=c000003e syscall=59
success=yes exit=0 a0=71e670 a1=721da0 a2=726530 a3=7ffe9b6741c0 items=2
ppid=16512 pid=16575 auid=1003 uid=1003 gid=1003 euid=0 suid=0 fsuid=0
egid=1003 sgid=1003 fsgid=1003 tty=pts3 ses=16 comm="sudo"
exe="/usr/bin/sudo" key=(null)
# type=BPRM_FCAPS msg=audit(1479282146.936:22853): fver=0
fp=0000000000000000 fi=0000000000000000 fe=0 old_pp=0000000000000000
old_pi=0000000000000000 old_pe=0000000000000000 new_pp=0000001fffffffff
new_pi=0000000000000000 new_pe=0000001fffffffff
# type=EXECVE msg=audit(1479282146.936:22853): argc=2 a0="sudo" a1="-s"
# type=CWD msg=audit(1479282146.936:22853):  cwd="/home/nikolay.srebniuk"
# type=PATH msg=audit(1479282146.936:22853): item=0 name="/usr/bin/sudo"
inode=25166426 dev=ca:01 mode=0104111 ouid=0 ogid=0 rdev=00:00
objtype=NORMAL
# type=PATH msg=audit(1479282146.936:22853): item=1
name="/lib64/ld-linux-x86-64.so.2" inode=1813292 dev=ca:01 mode=0100755
ouid=0 ogid=0 rdev=00:00 objtype=NORMAL

type=Single
ptype=RegExp2
pattern=^(type=SYSCALL msg=audit\(([\d:.]+)\):.*)\ntype=CWD
msg=audit\(\2\):\s+(.*)
desc=generate a synthetic event for normalized auditd message
action=event CORRelated $1 $3 execve="none"

type=Single
ptype=RegExp3
pattern=^(type=SYSCALL msg=audit\(([\d:.]+)\):.*)\ntype=EXECVE
msg=audit\(\2\):\s+argc=\d+\s+(.*)\ntype=CWD msg=audit\(\2\):\s+(.*)
desc=join two last lines if input buffer if their IDs are identical
action=event CORRelated $1 $4 execve="$3"

# Correlate messages type=PATH with fields item=(1|0);
objtype=(CREATE|NORMAL|UNKNOWN)
type=Pair
ptype=RegExp
pattern=^CORRelated type=SYSCALL msg=audit\((\d+\.\d+):(\d+)\): arch=(\w+)
syscall=(\d+) success=(\w+).+?ppid=(.+?) pid=(.+?) auid=(\d+) uid=(\d+)
gid=(\d+) euid=(\d+) suid=(\d+) fsuid=(\d+) egid=(\d+) sgid=(\d+)
fsgid=(\d+) tty=(\w+) ses=\d+ comm="(.+?)" exe="(.+?)" key=\((.+?)\)
cwd="(.+?)" execve="(.*)"
varmap= time=1; event_id=2; arch=3; syscall=4; success=5; ppid=6; pid=7;
auid=8; uid=9; gid=10; euid=11; suid=12; fsuid=13; egid=14; sgid=15;
fsgid=16; tty=17; comm=18; exe=19; key=20; cwd=21; execve=22
desc=wait for PATH event for $+{time} $+{event_id}
action=event $+{time} $+{event_id} $+{execve}
ptype2=RegExp
pattern2=^type=PATH msg=audit\($+{time}:$+{event_id}\): (?:item=1
name="(?<obj_name>.+?)".*objtype=CREATE|item=0 name="(?<obj_name>.+?)".*
objtype=NORMAL)
desc2=PATH event seen %1:%2
action2=lcall %cur_scall %4 -> ( sub { if($SyscallHashes{$_[0]}){return
$SyscallHashes{$_[0]};} return $_[0];} ); \
lcall %cur_time  %1  -> ( sub { my $human_time = scalar localtime($_[0]);
return $human_time; } ); \
lcall %cur_arch  %3  -> ( sub { if($_[0]='c000003e'){return 'x86_64';}
return 'x86';} ); \
lcall %cur_scall %4  -> ( sub { if($SyscallHashes{$_[0]}){return
$SyscallHashes{$_[0]};} return $_[0];} ); \
lcall %cur_ppid  %6  -> ( sub { my $id = qx(ps -p $_[0] -o comm=); chomp
$id; if ($id){return $id}; return $_[0];} ); \
lcall %cur_auid  %8  -> ( sub { if($UsersHashes{$_[0]}){return
$UsersHashes{$_[0]};} return $_[0];} ); \
lcall %cur_uid   %9  -> ( sub { if($UsersHashes{$_[0]}){return
$UsersHashes{$_[0]};} return $_[0];} ); \
lcall %cur_euid  %11 -> ( sub { if($UsersHashes{$_[0]}){return
$UsersHashes{$_[0]};} return $_[0];} ); \
lcall %cur_suid  %12 -> ( sub { if($UsersHashes{$_[0]}){return
$UsersHashes{$_[0]};} return $_[0];} ); \
lcall %cur_gid   %10 -> ( sub { if($GroupHashes{$_[0]}){return
$GroupHashes{$_[0]};} return $_[0];} ); \
lcall %cur_egid  %14 -> ( sub { if($GroupHashes{$_[0]}){return
$GroupHashes{$_[0]};} return $_[0];} ); \
lcall %cur_sgid  %15 -> ( sub { if($GroupHashes{$_[0]}){return
$GroupHashes{$_[0]};} return $_[0];} ); \
lcall %cur_exec  %22 -> ( sub { print("execve", $_[0], "\n"); if($_[0] ne
'none'){ my @args = split(/ /, $_[0]); \
foreach my $arg (@args){ ($arg) = ($arg =~ /a[0-9]+="?(.*?)"?$/);if ($arg
=~ m/[A-Z0-9]+/) \
{ $arg = pack("H*", $arg);};}; my $comm = join " ", @args; return $comm; };
\
return 'no_command';};); \
tcpsock 127.0.0.1:1515 type=SYSCALL msg=audit(%cur_time:%2): arch=%cur_arch
syscall=%cur_scall success=%5 ppid="%cur_ppid" pid="%7" auid="%cur_auid"
uid="%cur_uid" gid="%cur_gid" euid="%cur_euid" suid="%cur_suid" fsuid=%13
egid="%cur_egid" sgid="%cur_sgid" fsgid=%16 tty=%17 comm="%18" exe="%19"
key=(%20) cwd="%21" obj_name="$+{obj_name}" full_command="%cur_exec"%.cr%.nl
window=10

Regards,
Nikolay
------------------------------------------------------------------------------
_______________________________________________
Simple-evcorr-users mailing list
Simple-evcorr-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to