[Dailydave] reply summary

Jared DeMott demottja at msu.edu
Sat Sep 2 22:32:11 EST 2006


Jeremy Kelley wrote:
> Quoting Jeremy Kelley (jeremy at austin.ibm.com):
>   
>> I'm a little stumped writing an exploit for an ActiveX object and so I
>> figured I'd pester this list for a bit of help.
>>
>> My exploit works flawlessy when attached to the process in the
>> debugger.  Doesn't exec calc.exe when run w/o a debugger.
>>
>> Questions:
>>
>> 1) The heap is different when run under a debugger (thx HD for the
>> tip), but, I'm attaching the process with Olly _after_ it's already
>> running.  Windows doesn't do some whacked-out mojo and start using the
>> debug-heap on any heap allocations following, right?  I can't fathom
>> how that would work.
>>     
>
> No.  The heap does not magically change when attaching a debugger.
> All is right with the world.
>
>   
>> 2) What could cause the shellcode to execute flawlessly under a
>> debugger but not other times.  It's an exec - so I can't imagine the
>> process is dying before it's kickstarted calc.exe.. exec doesn't work
>> that way.
>>     
>
> Elves, Tom Cruise, or maybe Oprah Winfrey.  I'm not sure which, but I
> still hold that it's one of these.
>
> Apparently in the debugger, I was passing some exceptions off back to
> the app while others I wasn't (I'm not sure what I was doing with
> them, but well..) and that seemed to cause corruption on my stack
> _after_ my shellcode had started due to exceptions being thrown by
> functions called by my sc.
>
> The recommendations I received off list to my plea were quite helpful.
> Here's a summary:
>
> 1) use heap spraying.  
>  * Didn't do this.  Instead, we figured out what address we were at
>  * during runtime and made sure everything played nice.  It appears we
>  * were croaking in a mucked up exception handler at runtime, but in
>  * the debugger was sidestepping that one/giving it time to clean up
>  * things.  I have questions about the way that threads/exceptions
>  * work together that I'll be researching in the next few weeks.
>
> 2) set first instruction to int 3, then set runtime debugging
>  * In this instance, if the shellcode was hit, it was a munged copy of
>  * that shellcode and so INT 3 wasn't a viable option
>
> 3) make sure msvcrt is being loaded
>  * I was good here.  Thinking along these lines made me wonder what
>  * other dlls I could get loaded into the address space so that I had
>  * more fun to work with.
>
> 4) use \xeb\xfe (itty bitty jmp back) so you get an infinite loop
>  * This was invaluable when I was trying to find the state of the
>  * stack at the point the shellcode was finally being reached.
>
> I'm supposed to give a _shout-out_ at this point to rider, on my team,
> since he went w/o sleep for I don't know how long until he found that
> magic bit that made it all fall together.  If you ever need some
> really snazzy PowerPointFu, he's your guy.
>
> I'd like to say what we were attacking, but, well, I can't. I will say
> it's an activex that runs in IE.  The exploit now works completely
> reliably on w2k sp0-sp4 and wxp sp0,sp1.  WinXP sp2 is still being
>   
Remember stack protection and safeSEH for xpsp2.  I'm tell ya, give the
spraying a try -- it's simple and works well on IE.
> difficult, but it seems to work more than half time there.  All in
> all, it really is a tame vulnerability, but it really became one of
> those kinds of things where you're racing your team on because you
> want to be the first one to get it.  Literally, I was dreaming in hex
> at certain points because this drove me nuts.  Guess I'm admitting my
> lameness there... ;)
>
> That's my recap.  Thanks all for the great replies and help.  In
> particular, thanks for your patience to those who replied to me off
> list on multiple occasions.
>
> jeremy
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.immunitysec.com/pipermail/dailydave/attachments/20060902/fa1aa0ce/attachment.htm 


More information about the Dailydave mailing list