Re: BSM, SSH, and Session ID

Jalex <[email protected]> Fri, 26 Jan 2007 20:03:04 -0500
Newsgroups gmane.comp.security.sun
Message-ID <[email protected]>
Solaris BSM makes more sense.  I didn't realize it was the praudit xml 
output.

Are you logging in as root through ssh or is that just the way it is 
logging it?

I can't recall how Sun SSH on Solaris 9 behaves but recent versions of 
Sun SSH/OpenSSH should fork off before the login because the sshd 
process that a user is connected to after authentication runs with their 
privileges, not root's.  It should always be a different session, even 
if the user login is root.

Are you just auditing the root user?

>> Crist J. Clark wrote:
>>> I am trying to write a script that does the following:
>>>
>>> 	1) Finds all root logins and su's to root.
>>> 	2) Tracks all commands run after that login.
>>> 	3) Associates each command with its login.
>>>
>>> Sounds easy, huh? Devil's in the details.
>>>
>>> Current method of attack is to find all of the su's and logins,
>>> and save the session ID. Then I can go through and pick out the
>>> 'exec' events with that session ID and run as root. My old
>>> method was to follow all of the forks from a login. It was not
>>> pretty, but seemed to work most of the time. I thought following
>>> session IDs would be more robust and less error prone.
>>>
>>> But I have a audit trail here that is confounding my best
>>> efforts. What we have is a "forced" SSH command. There are a
>>> few problems with the trail. First, it looks like it starts
>>> forking children before the login. Second, the login has a
>>> different session ID than its children. I'm a bit confused
>>> about what is going on here. Here's the audit trail. It's in
>>> XML format. I find that easier to read with the labels.
>>>
>>> What's killing me is that the login (the 'login - ssh' event)
>>> has a different session ID that its children (the 'exec(2)'
>>> of 'ksh -c /etc/security/sox_baseline'). Bug? Feature? Do I
>>> need to revert to my old method? This is Solaris 9 using
>>> the Sun SSH daemon.
>>>
>>>
>>> <?xml version='1.0' encoding='UTF-8' ?>
>>> <?xml-stylesheet type='text/xsl' 
>>> href='file:///usr/share/lib/xml/style/adt_record.xsl.1' ?>
>>>
>>> <!DOCTYPE audit PUBLIC '-//Sun Microsystems, Inc.//DTD Audit V1//EN' 
>>> 'file:///usr/share/lib/xml/dtd/adt_record.dtd.1'>
>>>
>>> <audit>
>>> <file time="Thu Jan 11 10:46:19 PST 2007" msec="0"></file>
>>> <record version="2" event="vfork(2)" time="Thu Jan 11 10:46:19 PST 2007" 
>>> msec="731">
>>> <argument arg-num="0" value="0x5e02" desc="child PID"/>
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24065" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="execve(2)" time="Thu Jan 11 10:46:19 PST 2007" 
>>> msec="732">
>>> <path>/usr/bin/sh</path>
>>> <attribute mode="100555" uid="root" gid="root" fsid="136" nodeid="8469" 
>>> device="0"/>
>>> <exec_args><arg>sh</arg><arg>-c</arg><arg>/usr/bin/locale -a
>>> </arg></exec_args>
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24066" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="fork(2)" time="Thu Jan 11 10:46:19 PST 2007" 
>>> msec="741">
>>> <argument arg-num="0" value="0x5e03" desc="child PID"/>
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24066" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="execve(2)" time="Thu Jan 11 10:46:19 PST 2007" 
>>> msec="764">
>>> <path>/usr/bin/locale</path>
>>> <attribute mode="100555" uid="root" gid="bin" fsid="136" nodeid="347411" 
>>> device="0"/>
>>> <exec_args><arg>/usr/bin/locale</arg><arg>-a
>>> </arg></exec_args>
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24067" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="exit(2)" time="Thu Jan 11 10:46:19 PST 2007" 
>>> msec="800">
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24067" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="exit(2)" time="Thu Jan 11 10:46:19 PST 2007" 
>>> msec="801">
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24066" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="fork(2)" time="Thu Jan 11 10:46:21 PST 2007" 
>>> msec="548">
>>> <argument arg-num="0" value="0x5e04" desc="child PID"/>
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24065" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="auditon(2) - get audit state" time="Thu Jan 11 
>>> 10:46:21 PST 2007" msec="557">
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24065" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="getaudit_addr(2)" time="Thu Jan 11 10:46:21 PST 
>>> 2007" msec="557">
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24065" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="auditon(2) - get audit policy flags" time="Thu 
>>> Jan 11 10:46:21 PST 2007" msec="557">
>>> <subject audit-uid="root" uid="root" gid="root" ruid="root" rgid="root" 
>>> pid="24065" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="login - ssh" time="Thu Jan 11 10:46:21 PST 
>>> 2007" msec="568">
>>> <subject audit-uid="root" uid="root" gid="other" ruid="root" rgid="other" 
>>> pid="24065" sid="3603920788" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="fork(2)" time="Thu Jan 11 10:46:21 PST 2007" 
>>> msec="583">
>>> <argument arg-num="0" value="0x5e05" desc="child PID"/>
>>> <subject audit-uid="root" uid="root" gid="other" ruid="root" rgid="other" 
>>> pid="24068" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="execve(2)" time="Thu Jan 11 10:46:21 PST 2007" 
>>> msec="598">
>>> <path>/usr/bin/ksh</path>
>>> <attribute mode="100555" uid="root" gid="bin" fsid="136" nodeid="42497" 
>>> device="0"/>
>>> <exec_args><arg>ksh</arg><arg>-c</arg><arg>/etc/security/sox_baseline
>>> </arg></exec_args>
>>> <subject audit-uid="root" uid="root" gid="other" ruid="root" rgid="other" 
>>> pid="24069" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>>> <record version="2" event="execve(2)" time="Thu Jan 11 10:46:21 PST 2007" 
>>> msec="614">
>>> <path>/etc/security/sox_baseline</path>
>>> <attribute mode="100755" uid="root" gid="other" fsid="136" nodeid="64371" 
>>> device="0"/>
>>> <exec_args><arg>/bin/sh</arg><arg>/etc/security/sox_baseline
>>> </arg></exec_args>
>>> <subject audit-uid="root" uid="root" gid="other" ruid="root" rgid="other" 
>>> pid="24069" sid="3539585011" tid="11953 196630 spa.example.com"/>
>>> <return errval="success" retval="0"/>
>>> </record>
>