Better Delivery. Better Exploits.

Better Delivery. Better Exploits.
Building an encoder for fun and
knowledge
Kits, who knows em?
One Step Behind
Analysts
Adapt
Discover exploits
Write specialized tools
Wait
Follow
Kit Creators
Adjust
Use/port exploits
Circumvent current tools
Attack
Lead
In Other Words
Kit Creators
 
US
THEM
Our Average Competitor
Lazy
Hardly a developer
Slow
Content
Not super technical
… you get the idea
Spark New Detections
Better Obfuscation
Split code across several files
Make use of 3
rd
-party libraries
Remove offline deobfuscation
Break automated scanners and parsers
Switch routines
Use browser features
… and lastly…
REMAIN
AGILE
MY
FRIENDS
Impersonate Good
Google
Evil
Variable Names
Creates:
vvVVVVVVVVVvvvvVVV
vvvvv
vvVVVVVVVVVvvvvVVV
VvvVVVVVVVVVVVVVVVVvvvv
Old and Abused
New and Improved
Can’t easily find/replace variable names
Certain letters make it extremely difficult to read the code
Long variables ensure variables will be contained within other variables
Easy to adjust and change
Thanks 2011-2462 0ay
Payload Masking
ASCII 
<3 
9,11,12,32
Old and Abused
New and Improved
Old and Abused
New and Improved
Blank spaces are harder to detect
Invisible characters make copy and paste scary
Represent the entire lower case alphabet with three unique characters
Easy to adjust and change
Preemptive Hooks
Dumping the Objects
Dumping the Browser
Double Hooking
Round One
Round Two
Clobbers hooks that would normally show data
For each round, functions are clobbered again
Payload for each hook can be adjusted – Example – slow recursion puts the browser
on life support
Bound by AJAX
Caller and Receiver
AJAX + Call Limit = 
Hell
HTTPS the site and no one
can inspect your AJAX sent
(of course they can’t see
the JS either)
Limit the calls on the AJAX
URL for that given key –
push over the count and
you get skewed returns
Scanners and Engines
don’t follow AJAX calls
Can’t remove it from the
live page
One-time delivery
Hidden in the second stage
Rapid One-time Instances
Server handler is
dynamically created
when user hits page
Request is made from
the encoder to delete
the handler in 10
seconds
Code runs before the
deletion
Except These
Old-school technique
(fixed on some engines)
Leverage jQuery since
most engines don’t
Throw working code in
the exception to
confuse
try {
 
$(); 
//save us jQuery
 
//nasty, nasty
} catch (e) {
 
//return dorked code
}
Comment Bombs
//{*/}{{{f}unc}ti{on(}){}}*/
try { //{*/}{{{f}unc}ti{on(}){}}*/
call(); } catch(e) {
//{*/}{{{f}unc}ti{on(}){}}*/
Results vary – Malzilla =>
Complete Evasion
If We Succeed,
What’s In Data?
}:-)
Needs Work
Chrome and Safari run fine!
No trace in the DOM
Ability to add tokens, swap the delivery URL, etc.
Delivering an obfuscated payload that makes
use of AJAX through AJAX causes issues
Firefox goes into a coma
IE 6 & 7 completely bomb and 8 crashes in the tab
Yes, IE Dies
Nothing to See Here
Modulus Encoding
Decodes depending on
page/browser attributes
One-to-one character mapping
Faulty execution when debugging
on JS sandbox websites
Can apply same techniques as
other encoders (var names,
try/catch, etc.)
Encode This
Hide in This
Own Browsers
Thanks 2011-4369 0ay
Lessons Learned
IE sucks for writing malicious JavaScript
Test after every change (even minor)
Version off builds
Check character encodings before building
All browsers are not built equal
Understanding and doing are two different
things
Stealing from APT attacks == great
Fork and Download
https://github.com/9b/doomsday_encoder/
Playground
Reverse Challenge
http://www.9bplus.com/redgift/direct.php
AJAX Delivery
http://www.9bplus.com/greengift/index.php?to
ken=#######
Rapid Instance
http://www.9bplus.com/bluegift/direct.php
DEMO
Conclusions
Attackers will upgrade (some already started
using AJAX)
We need to detect this now (browser
emulation, AJAX path following, 3
rd
-party
library awareness, etc.)
Chrome web store needs some chaos to fix
these issues (it’s been years)
Brandon Dixon
brandon@9bplus.com
www.9bplus.com
blog.9bplus.com
www.pdfxray.com
@9bplus
$$ 
GWU IS HIRING 
$$ 
GWU IS HIRING 
$$
$$ 
https://www.gwu.jobs/postings/7735 
$$
Slide Note
Embed
Share

Delve into the world of exploit development with a focus on building an encoder for fun and knowledge. Discover the art of kits, understand the mindset of kit creators, and stay one step ahead of analysts. Learn about better obfuscation techniques, remain agile in your approach, and explore the nuances of variable names. Uncover the secrets of payload masking and ASCII transformations to level up your coding skills.

  • Exploit Development
  • Encoder Building
  • Obfuscation Techniques
  • Payload Masking
  • ASCII Transformations

Uploaded on Mar 05, 2025 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Better Delivery. Better Exploits. Building an encoder for fun and knowledge

  2. Kits, who knows em?

  3. One Step Behind Analysts Adapt Discover exploits Write specialized tools Wait Follow Kit Creators Adjust Use/port exploits Circumvent current tools Attack Lead

  4. In Other Words Kit Creators US THEM

  5. Our Average Competitor Lazy Hardly a developer Slow Content Not super technical you get the idea

  6. Spark New Detections

  7. Better Obfuscation Split code across several files Make use of 3rd-party libraries Remove offline deobfuscation Break automated scanners and parsers Switch routines Use browser features and lastly

  8. REMAIN AGILE MY FRIENDS

  9. Impersonate Good Google Evil

  10. Variable Names Creates: vvVVVVVVVVVvvvvVVV vvvvvvvVVVVVVVVVvvvvVVVVvvVVVVVVVVVVVVVVVVvvvv

  11. Can t easily find/replace variable names Certain letters make it extremely difficult to read the code Long variables ensure variables will be contained within other variables Easy to adjust and change Old and Abused New and Improved

  12. Thanks 2011-2462 0ay

  13. Payload Masking

  14. ASCII <3 9,11,12,32 Old and Abused New and Improved

  15. Blank spaces are harder to detect Invisible characters make copy and paste scary Represent the entire lower case alphabet with three unique characters Easy to adjust and change Old and Abused New and Improved

  16. Preemptive Hooks Dumping the Objects Dumping the Browser

  17. Double Hooking Round One Round Two Clobbers hooks that would normally show data For each round, functions are clobbered again Payload for each hook can be adjusted Example slow recursion puts the browser on life support

  18. Bound by AJAX

  19. Caller and Receiver

  20. AJAX + Call Limit = Hell HTTPS the site and no one can inspect your AJAX sent (of course they can t see the JS either) Limit the calls on the AJAX URL for that given key push over the count and you get skewed returns Scanners and Engines don t follow AJAX calls Can t remove it from the live page One-time delivery Hidden in the second stage

  21. Rapid One-time Instances Server handler is dynamically created when user hits page Request is made from the encoder to delete the handler in 10 seconds Code runs before the deletion

  22. Except These Old-school technique (fixed on some engines) Leverage jQuery since most engines don t Throw working code in the exception to confuse try { } catch (e) { //return dorked code } $(); //save us jQuery //nasty, nasty

  23. Comment Bombs //{*/}{{{f}unc}ti{on(}){}}*/ try { //{*/}{{{f}unc}ti{on(}){}}*/ call(); } catch(e) { //{*/}{{{f}unc}ti{on(}){}}*/ Results vary Malzilla =>

  24. Complete Evasion If We Succeed, What s In Data?

  25. Needs Work Chrome and Safari run fine! No trace in the DOM Ability to add tokens, swap the delivery URL, etc. Delivering an obfuscated payload that makes use of AJAX through AJAX causes issues Firefox goes into a coma IE 6 & 7 completely bomb and 8 crashes in the tab

  26. Yes, IE Dies

  27. Nothing to See Here

  28. Modulus Encoding Decodes depending on page/browser attributes One-to-one character mapping Faulty execution when debugging on JS sandbox websites Can apply same techniques as other encoders (var names, try/catch, etc.)

  29. Encode This

  30. Hide in This

  31. Own Browsers

  32. Thanks 2011-4369 0ay

  33. Lessons Learned IE sucks for writing malicious JavaScript Test after every change (even minor) Version off builds Check character encodings before building All browsers are not built equal Understanding and doing are two different things Stealing from APT attacks == great

  34. Fork and Download https://github.com/9b/doomsday_encoder/

  35. Playground Reverse Challenge http://www.9bplus.com/redgift/direct.php AJAX Delivery http://www.9bplus.com/greengift/index.php?to ken=####### Rapid Instance http://www.9bplus.com/bluegift/direct.php

  36. DEMO

  37. Conclusions Attackers will upgrade (some already started using AJAX) We need to detect this now (browser emulation, AJAX path following, 3rd-party library awareness, etc.) Chrome web store needs some chaos to fix these issues (it s been years)

  38. $$ GWU IS HIRING $$ GWU IS HIRING $$ Brandon Dixon brandon@9bplus.com www.9bplus.com blog.9bplus.com www.pdfxray.com @9bplus $$ https://www.gwu.jobs/postings/7735 $$

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#