Computer Security
[EN] securityvulns.ru
no-pyccku



Related information

  Sun Solaris LD_AUDIT privilege escalation

  Re: [Full-disclosure] Solaris 9/10 ld.so fun

  [Full-disclosure] Solaris 9/10 ld.so fun

From:petefran_(at)_gmail.com <petefran_(at)_gmail.com>
Date:17.07.2005
Subject:Solaris Runtime Linker - Exploit Detection

This is a demonstration of exploit detection using the Solaris
implementation of C2 Auditing (BSM) to detect the system has been
compromised.  Of course , it helps to be logging locally as well to a
secure central log server or protected media.

This was tested on an unpatched Solaris 10 Sparc system.

References:
http://www.securityfocus.com/bid/14074
http://sunsolve.sun.com/search/document.do"assetkey=1-26-101794-1
 Sun Document ID: 101794

C2 (BSM) Detection of Exploit

 Start of BSM Trace

 Comment: I am an unprivileged user here. Audit userid/groupid is
pete:pete.  
 Effective userid/groupid is pete:pete.

header,81,2,setpgrp(2),,megadeth.metalrock.ripnet,2005-07-02 18:44:46.576
-05:00
 subject,pete,pete,pete,pete,pete,1400,4075230069,8199 196630
whitesnake-2.metalrock.ripnet
 return,success,1400

 Comment: I run "ping" (which is setuid root) Note the value of the
"LD_AUDIT" environment variable.  This is the "Red Flag".  LD_AUDIT should
not be set at all on a normal system.
LD_AUDIT redirects program execution to the vulnerable library, created
by an unprivileged user.

header,976,2,execve(2),,megadeth.metalrock.ripnet,2005-07-02 18:44:46.598
-05:00
 path,/usr/sbin/ping
 attribute,104555,root,bin,136,3003,0
 exec_args,1,ping

exec_env,20,MANPATH=/usr/dt/man:/usr/man:/usr/openwin/share/man:/usr/sfw/man:
/opt/sfw/man:
 /usr/local/man:/opt/SUNWppro/man:/opt/ipf/man,TERM=xterm,
 SHELL=/bin/bash,SSH_CLIENT=192.168.150.254 32799
22,OLDPWD=/users/pete/ShellCode,

SSH_TTY=/dev/pts/5,USER=pete,MAIL=/var/mail//pete,PATH=/bin:/usr/bin:/usr/sbin:
/sbin:/usr/ucb:

/etc:/usr/dt/bin:/usr/openwin/bin:/usr/ccs/bin:/usr/sadm/bin:/usr/sadm/admin/bin:


/usr/sfw/bin:/usr/sfw/sbin:/opt/sfw/bin:/opt/sfw/sbin:/usr/proc/bin:
/opt/SUNWppro/bin:

/usr/local/bin:/usr/local/sbin:/opt/PGPcmdln:.,PWD=/users/pete/ShellCode/danger,

 JAVA_HOME=/usr/java,EDITOR=vi,TZ=US/Central,SHLVL=1,HOME=/users/pete,

LD_AUDIT=/users/pete/danger/break-sec.so,LOGNAME=pete,SSH_CONNECTION=192.168.150.
254
32799
 192.168.1.10 22,DISPLAY=localhost:10.0,_=/usr/sbin/ping
 path,/lib/ld.so.1
 attribute,100755,root,bin,136,3162,0

 Comment: The effective userID is now root; this is to be expected as
ping is a setuid root program. However, the program should exit immediately.

subject,pete,root,pete,pete,pete,1433,4075230069,8199 196630
whitesnake-2.metalrock.ripnet
 return,success,0
 header,108,2,old setuid(2),,megadeth.metalrock.ripnet,2005-07-02
18:44:46.606 -05:00
 argument,1,0x0,uid
 subject,pete,root,pete,root,pete,1433,4075230069,8199 196630
whitesnake-2.metalrock.ripnet
 use of privilege,successful use of priv,proc_setid
 return,success,0

 Comment: This is where the program execution is redirected to the
exploit library via the
 LD_AUDIT environment variable. A shell is executed (/bin/ksh).
 The effective userID and groupID is still root and the user pete has a
root shell.

header,198,2,execve(2),,megadeth.metalrock.ripnet,2005-07-02 18:44:46.608
-05:00
 path,/usr/bin/ksh
 attribute,100555,root,bin,136,330,0
 exec_args,1,/bin/ksh
 exec_env,0,path,/lib/ld.so.1
 attribute,100755,root,bin,136,3162,0
 subject,pete,root,pete,root,pete,1433,4075230069,8199 196630
whitesnake-2.metalrock.ripnet
 return,success,0
 header,99,2,fork1(2),,megadeth.metalrock.ripnet,2005-07-02 18:44:46.616
-05:00
 argument,0,0x59a,child PID
 subject,pete,root,pete,root,pete,1433,4075230069,8199 196630
whitesnake-2.metalrock.ripnet
 return,success,0

 End of BSM Trace

 An unprivileged user has now circumvented the security of the system.  
 The user has root shell and has full control of the system!

 BSM enabled the detection of this compromise by logging the following
combination of events:
 1. Detecting the "LD_AUDIT" environment variable being set by an
unprivileged user.
 2. Detecting the execution of a setuid root program (ping) by an
unprivileged user (normally ok).
 3. Detecting the string "use of privilege,successful use of
priv,proc_setid"
 4. Detecting the immediate execution of a shell as the effective user id
"root" by the unprivileged user.

 The non-default BSM policies that must be enabled are "argv", and
"arge".  The "ex" BSM flag must also be set.
 This configuration logs program arguments and the environment in which
the program is
 executing respectively.  The "arge" policy enabled the discovery that
"LD_AUDIT" environment
 variable was set inappropriately, which simplifies the analysis.

Conclusion

If a Solaris administrator configures BSM appropriately, there ARE
"reliable symptoms that would indicate the described issue has been
exploited to gain elevated privileges", which is contrary to what Sun
Document ID: 101794
states in the "Symptoms" section.  I have informed  SUN Sun of this
information.

About | Terms of use | Privacy Policy
© SecurityVulns, 3APA3A, Vladimir Dubrovin
Nizhny Novgorod

 
 



Rating@Mail.ru
test server