[26075] in bugtraq

home help back first fref pref prev next nref lref last post

Re: UnBodyGuard a.k.a Bouncer (Solaris kernel function hijacking)

daemon@ATHENA.MIT.EDU (noir sin)
Sat Jul 6 14:09:55 2002

Date: Fri, 5 Jul 2002 16:07:53 -0700 (PDT)
From: noir sin <noir@olympos.org>
To: Dave Aitel <dave@immunitysec.com>
Cc: <bugtraq@securityfocus.com>
In-Reply-To: <1025885236.8003.146.camel@localhost.localdomain>
Message-ID: <Pine.LNX.4.33.0207051534350.901-100000@juneof44.hoover>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII

>
> Well, BG 1.0 Free Demo (http://www.immunitysec.com/bodyguard.html) does
> do the dereference. E.G. It checks the system call code itself, not the
> sysent32 table. So theoretically adding exece to BodyGuard's checksum
> table _would_ catch this method, at least for the moment. :> (I'll try
> this later today to make sure.) Did you check to see if you could do the
> same trick to stat64?

yes, you are right. I have a misunderstanding on the checksum issue
and it makes a lot of sense and is a good idea to do checksum on the
function level.

Still the fundamental problem is bodyguard is also trusting a subverted
kernel, this means that any internal kernel function is being used by bodyguard
could be changed in a way that it will detect bodyguards existence and
feed false information or even change bodyguard itself ... for example
ddi_enter_critical or mod_install can be hooked in away that it will do a
kobj_getsymvalue() one or more exported symbols of bodyguard
(myverify, md5_XXXXXX, verify_syscalls...) and if the symbol/s resolve
it will patch that function with a  "return TRUE" instruction ... ;-)
ofcourse patching must be done at the entry point somewhere, most likely
the first instruction ....

primary_inhouse_kernel_function_used_by_bodyguard()
{
	.....
if(kobj_getsymvalue(verify_syscalls,1)){
	do page protection manipulation
	patch the proper place with "return TRUE" of the verify_syscalls()
	!! this will make verify_syscalls return TRUE meaning no problems
	}
....
	do the realstuff ...
}

this will render any kernel integrity level checker useless. solution
is simple integrity checkers have to be stealh to like their counterparts
(backdoors)

> spend in the game - something they didn't have until Monday :>.
yes, this is indeed a good product but needs stealthness like the kernel
level backdoors.

> 2. slightly different executables for each customer
sounds promissing, this must be the main motive!


later,
noir


home help back first fref pref prev next nref lref last post