SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
On non-existent 0-days, stable
binary exploits and user interaction


                         Alisa Esage
              Esage Lab // ООО ЦОР
GOAL

NEED SOME 0-DAY REMOTE EXPLOITS*
FOR TOP SOFTWARE/OS, FAST
How they do it
• Target memory corruption
• X% fuzzing + Y% static analysis
   – Only combination is viable
   – Other approaches are inmature
• Fuzzing: massive overhead
   –   Set up a framework
   –   Develop patterns/heuristics !!
   –   Take machine time
   –   Analyze crash dumps !
   –   Exploit, bypass DEP/ASLR/Sandbox !!!
• Perspective
   – protections harden
   – need more and more time to succeed
   – and resources to begin with
Perspective vectors
• By-design vulnerabilities
  – E.g. DLL Hijacking, UI redressing,
    LD_LIBRARY_PATH…
• Sandbox bypass for complex systems
  – E.g. JAVA: bypass SecurityManager -> full
    privileges for unsigned applet -> win
• Certificates
  – E.g. Adobe PDF: signed document -> trusted
    document -> full-privileged JavaScript -> win
Why DLL Hijacking?
• Test hacking skills!
   – Succeed with a blind alley before hitting the highway
• Looks easy
   – Plenty of previous research, e.g. binaryplanting.com
   – Interns must do research, too
• Real world targetted attacks: CVE-2011-1980, CVE-2011-
  1991, CVE-2011-2100
   – They work
• MS12-046 vbe6.dll
   – They still exist!
• OS behaviour undocumented
   – There is place for research
Research focus
• Top, clean platforms
  –   Windows 7
  –   Windows XP
  –   Office 2010
  –   Office 2007
  –   Adobe Acrobat/Reader
• Find a new remote delivery vector
  – Not a “.dll” in e-mail attachment
  – Not a “.dll” in a network share
• Find something yet unfound
Tech recap
• Exe -> dll by relative path
• DLL Search Order
• Current Directory (CD) – MS DOS rudiment
• Default: app path
• File open: file path
• Some other changes
• Exploitation profit: Bypass restrictions, LPE,
  RCE
• Vectors: local, local network, client-side
Advantages
• 100% stable exploit
• 100% silent execution on non-supported
  targets
• Very little overhead
• No mess with protections
• ! Not fixable globally with simple measures
  like DEP/ASLR
  – Only developers education can help
  – Will reappear in new software forever
Challenges
• Search
  – “Trivial => already found” myth
• Exploitation
  – Nobody ever tried to manipulate CD
• User interaction
  – Triggered by clicking menus… now what?
• Masking / delivery
  – Document + DLL binding looks suspicious
Arguing myths

NONEXISTENT?
7500+ missing Windows DLLs
20+ Mb filtered log per app
Arguing myths

NOT EXPLOITABLE?
Good!
Not so good
Goal: manipulate CD
CD internals
•   0:005> dt _PEB @$peb -r
•   ntdll!_PEB
•   ...
•      +0x010 ProcessParameters : 0x00020000 _RTL_USER_PROCESS_PARAMETERS
•      ...
•         +0x024 CurrentDirectory : _CURDIR
•          +0x000 DosPath       : _UNICODE_STRING "C:Documents and SettingshMy Documents"
•          +0x008 Handle       : 0x00000b50 Void
•
•   // получение адреса CurrentDirectory (первый dword - размеры, второй – указатель на строку)
•   0:005> dd poi(@$peb+0x010)+0x024
•   00020024 02080052 00020290 00000b50 01840182
•   00020034 00020498 006e006c 0002061c 00740072

•   // проверка адреса CD
•   0:005> du 0x20290
•   00020290 "C:Documents and SettingshMy D"
•   000202d0 "ocuments"
•
•   // точка останова
•   0:005> ba w 4 0x20290
CD internals - 2
• MSDN: “it is the directory in which the active application started,
  unless it has been explicitly changed“ – actually no
• Way of starting an app affects CD
    –   App exec default: app dir
    –   App exec: SoftwareMicrosoftWindowsCurrentVersionApp Paths
    –   Exec by lnk: lnk dir
    –   Document open: document dir
    –   CreateProcess(): lpCurrentDirectory
• CD set internally by some API
    – GetOpenFileName() / GetSaveFileName()
    – FindFirstFile() / FindNextFile() (presumably)
• Many file system APIs depend on CD
    – So developers call SetCurrentDirectory() every now and then
So…?
Local exploitation
• Bypass restrictions/LPE: place exploit DLL
  into unrestricted location
• Consider %PATH%
PATH FTW
Remote exploitation
• Just open a document (the lucky case)
• Make user Open/Save/Import/Export files, then
  trigger
• Or automate file operations with a script
• Induce an app state with CD changed by
  developer
• Set CD explicitly
• Find an app that CreateProcess()-es vulnerable
  app with good CD
Arguing myths

EXPLOIT DLL TOO OBVIOUS?
No hiding
A needle in the haystack
Torrents
Browser UI redressing
• IE9 on Windows 7
• Context: Local directory, network shared
  directory, WebDAV
• Explorer dir underneath a website
• Demo
• Also works in Chrome on Windows 7, but
  restricted to file download operations
Browser UI redressing (2)
• Chrome on Windows 7
• Context: remote
• Web server directory underneath a website
• Click-jacking game to silently download
  necessary files one-by-one
• Until all files are saved in %Downloads%
• Open exploit document
Set CD macro (MS Office)
• Context: local dir, network shared dir
• You can just execute arbitrary DLL from a
  macro
• But better to execute a
  kernel32!SetCurrentDirectory() API to fool
  forensic analysts
• Demo
MHT
• Single file in e-mail attachment
• Can contain any types of files, incl. binary
• Browser extracts files to %INET_TMP%
• Open exploit document by clicking <a
  href=“.filesdocument.txt”
• Exploit DLL will be executed from the same
  directory
• IE9 on Windows 7
Archives
• Any archives for Windows that extract all
  files by default? Not SFX of course
• WinRAR (latest): browse archive, double-
  click a HTML document only
  – Will extract ALL files into %TMP%
  – Including exploit DLL
  – Local browser context already
WinRAR FTW
Multistage
• Case: DLL triggered by manual file import, no
  registered extension handler – unexploitable?
• Stage 1: User gets an e-mail from admin (fake)
  instructing to install the attached reg-file (looks
  innocent)
• In two weeks, stage 2: user gets an e-mail from
  a friend with a RAR-ed html game
• Click-jacked open file -> exploit
• Or open file via network share
• As simple as the user is
So, what do we have?
• Some 0-day vulnerabilities in up-to-date top
  platforms
  – Think of non-top software
• Ways to manipulate CD
• Ways to hide DLL
• Remote DLL Hijacking exploitation looks like
  normal client-side exploitation
• What else?
Conclusions
• Is this a good vector for mass attacks?
   – Authors of CVE-2011-1991, 1980, 2100 could tell us for sure
   – I say no
   – 0-day exploits are not necessary for mass attacks
     anyway
• Excellent vector for rapid targeted/onsite attacks
   – Plenty of vulnerabilities everywhere
   – Easy ‘n fast to find in arbitrary environment
   – Ease ‘n fast to exploit (after this presentation  )
• Even the most trivial bug can be worked down to a
  good exploit
Questions?
Thanks to my team and interns



   Thank you for attention



        @alisaesage

Más contenido relacionado

La actualidad más candente

[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
CODE BLUE
 

La actualidad más candente (20)

Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1 Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1
 
[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
[CB16] Invoke-Obfuscation: PowerShell obFUsk8tion Techniques & How To (Try To...
 
Windows Privilege Escalation
Windows Privilege EscalationWindows Privilege Escalation
Windows Privilege Escalation
 
Entomology 101
Entomology 101Entomology 101
Entomology 101
 
Privilege escalation from 1 to 0 Workshop
Privilege escalation from 1 to 0 Workshop Privilege escalation from 1 to 0 Workshop
Privilege escalation from 1 to 0 Workshop
 
BSides London 2017 - Hunt Or Be Hunted
BSides London 2017 - Hunt Or Be HuntedBSides London 2017 - Hunt Or Be Hunted
BSides London 2017 - Hunt Or Be Hunted
 
CNIT 152: 13 Investigating Mac OS X Systems
CNIT 152: 13 Investigating Mac OS X SystemsCNIT 152: 13 Investigating Mac OS X Systems
CNIT 152: 13 Investigating Mac OS X Systems
 
Introduction to .NET Performance Measurement
Introduction to .NET Performance MeasurementIntroduction to .NET Performance Measurement
Introduction to .NET Performance Measurement
 
Visiting the Bear Den
Visiting the Bear DenVisiting the Bear Den
Visiting the Bear Den
 
ColdFusion for Penetration Testers
ColdFusion for Penetration TestersColdFusion for Penetration Testers
ColdFusion for Penetration Testers
 
Lares from LOW to PWNED
Lares from LOW to PWNEDLares from LOW to PWNED
Lares from LOW to PWNED
 
Unpack your troubles*: .NET packer tricks and countermeasures
Unpack your troubles*: .NET packer tricks and countermeasuresUnpack your troubles*: .NET packer tricks and countermeasures
Unpack your troubles*: .NET packer tricks and countermeasures
 
Malware analysis
Malware analysisMalware analysis
Malware analysis
 
CNIT 128 8. Android Implementation Issues (Part 2)
CNIT 128 8. Android Implementation Issues (Part 2)CNIT 128 8. Android Implementation Issues (Part 2)
CNIT 128 8. Android Implementation Issues (Part 2)
 
Process injection - Malware style
Process injection - Malware styleProcess injection - Malware style
Process injection - Malware style
 
When is something overflowing
When is something overflowingWhen is something overflowing
When is something overflowing
 
Заполучили права администратора домена? Игра еще не окончена
Заполучили права администратора домена? Игра еще не оконченаЗаполучили права администратора домена? Игра еще не окончена
Заполучили права администратора домена? Игра еще не окончена
 
An Introduction to Sysinternals
An Introduction to SysinternalsAn Introduction to Sysinternals
An Introduction to Sysinternals
 
Invoke-Obfuscation DerbyCon 2016
Invoke-Obfuscation DerbyCon 2016Invoke-Obfuscation DerbyCon 2016
Invoke-Obfuscation DerbyCon 2016
 
Executing Windows Malware through WSL (Bashware)
Executing Windows Malware through WSL (Bashware)Executing Windows Malware through WSL (Bashware)
Executing Windows Malware through WSL (Bashware)
 

Similar a Esage on non-existent 0-days, stable binary exploits and user interaction

Thick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash CourseThick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash Course
NetSPI
 
macOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain SightmacOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain Sight
Csaba Fitzl
 
Windows 8 dddd (beekelaar)
Windows 8 dddd (beekelaar)Windows 8 dddd (beekelaar)
Windows 8 dddd (beekelaar)
hypervnu
 

Similar a Esage on non-existent 0-days, stable binary exploits and user interaction (20)

CNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbgCNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbg
 
CNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbgCNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbg
 
Security research over Windows #defcon china
Security research over Windows #defcon chinaSecurity research over Windows #defcon china
Security research over Windows #defcon china
 
Practical Malware Analysis: Ch 10: Kernel Debugging with WinDbg
Practical Malware Analysis: Ch 10: Kernel Debugging with WinDbgPractical Malware Analysis: Ch 10: Kernel Debugging with WinDbg
Practical Malware Analysis: Ch 10: Kernel Debugging with WinDbg
 
Ch 6: The Wild World of Windows
Ch 6: The Wild World of WindowsCh 6: The Wild World of Windows
Ch 6: The Wild World of Windows
 
CNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of WindowsCNIT 127 Ch 6: The Wild World of Windows
CNIT 127 Ch 6: The Wild World of Windows
 
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
The Dirty Little Secrets They Didn’t Teach You In Pentesting Class
 
Thick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash CourseThick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash Course
 
Windows internals
Windows internalsWindows internals
Windows internals
 
Defending Your "Gold"
Defending Your "Gold"Defending Your "Gold"
Defending Your "Gold"
 
Thick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash CourseThick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash Course
 
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
[HES2013] Virtually secure, analysis to remote root 0day on an industry leadi...
 
macOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain SightmacOS Vulnerabilities Hiding in Plain Sight
macOS Vulnerabilities Hiding in Plain Sight
 
Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)
 
Windows 8 dddd (beekelaar)
Windows 8 dddd (beekelaar)Windows 8 dddd (beekelaar)
Windows 8 dddd (beekelaar)
 
Rapid Android Application Security Testing
Rapid Android Application Security TestingRapid Android Application Security Testing
Rapid Android Application Security Testing
 
Fileless Malware Infections
Fileless Malware InfectionsFileless Malware Infections
Fileless Malware Infections
 
CamSec Sept 2016 - Tricks to improve web app excel export attacks
CamSec Sept 2016 - Tricks to improve web app excel export attacksCamSec Sept 2016 - Tricks to improve web app excel export attacks
CamSec Sept 2016 - Tricks to improve web app excel export attacks
 
Scientific Computing - Hardware
Scientific Computing - HardwareScientific Computing - Hardware
Scientific Computing - Hardware
 
unit 2 confinement techniques.pdf
unit 2 confinement techniques.pdfunit 2 confinement techniques.pdf
unit 2 confinement techniques.pdf
 

Más de DefconRussia

[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC [DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
DefconRussia
 
Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23
DefconRussia
 

Más de DefconRussia (20)

[Defcon Russia #29] Борис Савков - Bare-metal programming на примере Raspber...
[Defcon Russia #29] Борис Савков -  Bare-metal programming на примере Raspber...[Defcon Russia #29] Борис Савков -  Bare-metal programming на примере Raspber...
[Defcon Russia #29] Борис Савков - Bare-metal programming на примере Raspber...
 
[Defcon Russia #29] Александр Ермолов - Safeguarding rootkits: Intel Boot Gua...
[Defcon Russia #29] Александр Ермолов - Safeguarding rootkits: Intel Boot Gua...[Defcon Russia #29] Александр Ермолов - Safeguarding rootkits: Intel Boot Gua...
[Defcon Russia #29] Александр Ермолов - Safeguarding rootkits: Intel Boot Gua...
 
[Defcon Russia #29] Алексей Тюрин - Spring autobinding
[Defcon Russia #29] Алексей Тюрин - Spring autobinding[Defcon Russia #29] Алексей Тюрин - Spring autobinding
[Defcon Russia #29] Алексей Тюрин - Spring autobinding
 
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/Linux
 
Георгий Зайцев - Reversing golang
Георгий Зайцев - Reversing golangГеоргий Зайцев - Reversing golang
Георгий Зайцев - Reversing golang
 
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC [DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
[DCG 25] Александр Большев - Never Trust Your Inputs or How To Fool an ADC
 
Cisco IOS shellcode: All-in-one
Cisco IOS shellcode: All-in-oneCisco IOS shellcode: All-in-one
Cisco IOS shellcode: All-in-one
 
Олег Купреев - Обзор и демонстрация нюансов и трюков из области беспроводных ...
Олег Купреев - Обзор и демонстрация нюансов и трюков из области беспроводных ...Олег Купреев - Обзор и демонстрация нюансов и трюков из области беспроводных ...
Олег Купреев - Обзор и демонстрация нюансов и трюков из области беспроводных ...
 
HTTP HOST header attacks
HTTP HOST header attacksHTTP HOST header attacks
HTTP HOST header attacks
 
Attacks on tacacs - Алексей Тюрин
Attacks on tacacs - Алексей ТюринAttacks on tacacs - Алексей Тюрин
Attacks on tacacs - Алексей Тюрин
 
Weakpass - defcon russia 23
Weakpass - defcon russia 23Weakpass - defcon russia 23
Weakpass - defcon russia 23
 
nosymbols - defcon russia 20
nosymbols - defcon russia 20nosymbols - defcon russia 20
nosymbols - defcon russia 20
 
static - defcon russia 20
static  - defcon russia 20static  - defcon russia 20
static - defcon russia 20
 
Zn task - defcon russia 20
Zn task  - defcon russia 20Zn task  - defcon russia 20
Zn task - defcon russia 20
 
Vm ware fuzzing - defcon russia 20
Vm ware fuzzing  - defcon russia 20Vm ware fuzzing  - defcon russia 20
Vm ware fuzzing - defcon russia 20
 
Nedospasov defcon russia 23
Nedospasov defcon russia 23Nedospasov defcon russia 23
Nedospasov defcon russia 23
 
Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23Advanced cfg bypass on adobe flash player 18 defcon russia 23
Advanced cfg bypass on adobe flash player 18 defcon russia 23
 
Miasm defcon russia 23
Miasm defcon russia 23Miasm defcon russia 23
Miasm defcon russia 23
 
Andrey Belenko, Alexey Troshichev - Внутреннее устройство и безопасность iClo...
Andrey Belenko, Alexey Troshichev - Внутреннее устройство и безопасность iClo...Andrey Belenko, Alexey Troshichev - Внутреннее устройство и безопасность iClo...
Andrey Belenko, Alexey Troshichev - Внутреннее устройство и безопасность iClo...
 
Sergey Belov - Покажите нам Impact! Доказываем угрозу в сложных условиях
Sergey Belov - Покажите нам Impact! Доказываем угрозу в сложных условияхSergey Belov - Покажите нам Impact! Доказываем угрозу в сложных условиях
Sergey Belov - Покажите нам Impact! Доказываем угрозу в сложных условиях
 

Esage on non-existent 0-days, stable binary exploits and user interaction

  • 1. On non-existent 0-days, stable binary exploits and user interaction Alisa Esage Esage Lab // ООО ЦОР
  • 2. GOAL NEED SOME 0-DAY REMOTE EXPLOITS* FOR TOP SOFTWARE/OS, FAST
  • 3. How they do it • Target memory corruption • X% fuzzing + Y% static analysis – Only combination is viable – Other approaches are inmature • Fuzzing: massive overhead – Set up a framework – Develop patterns/heuristics !! – Take machine time – Analyze crash dumps ! – Exploit, bypass DEP/ASLR/Sandbox !!! • Perspective – protections harden – need more and more time to succeed – and resources to begin with
  • 4. Perspective vectors • By-design vulnerabilities – E.g. DLL Hijacking, UI redressing, LD_LIBRARY_PATH… • Sandbox bypass for complex systems – E.g. JAVA: bypass SecurityManager -> full privileges for unsigned applet -> win • Certificates – E.g. Adobe PDF: signed document -> trusted document -> full-privileged JavaScript -> win
  • 5. Why DLL Hijacking? • Test hacking skills! – Succeed with a blind alley before hitting the highway • Looks easy – Plenty of previous research, e.g. binaryplanting.com – Interns must do research, too • Real world targetted attacks: CVE-2011-1980, CVE-2011- 1991, CVE-2011-2100 – They work • MS12-046 vbe6.dll – They still exist! • OS behaviour undocumented – There is place for research
  • 6. Research focus • Top, clean platforms – Windows 7 – Windows XP – Office 2010 – Office 2007 – Adobe Acrobat/Reader • Find a new remote delivery vector – Not a “.dll” in e-mail attachment – Not a “.dll” in a network share • Find something yet unfound
  • 7. Tech recap • Exe -> dll by relative path • DLL Search Order • Current Directory (CD) – MS DOS rudiment • Default: app path • File open: file path • Some other changes • Exploitation profit: Bypass restrictions, LPE, RCE • Vectors: local, local network, client-side
  • 8. Advantages • 100% stable exploit • 100% silent execution on non-supported targets • Very little overhead • No mess with protections • ! Not fixable globally with simple measures like DEP/ASLR – Only developers education can help – Will reappear in new software forever
  • 9. Challenges • Search – “Trivial => already found” myth • Exploitation – Nobody ever tried to manipulate CD • User interaction – Triggered by clicking menus… now what? • Masking / delivery – Document + DLL binding looks suspicious
  • 12. 20+ Mb filtered log per app
  • 14. Good!
  • 17. CD internals • 0:005> dt _PEB @$peb -r • ntdll!_PEB • ... • +0x010 ProcessParameters : 0x00020000 _RTL_USER_PROCESS_PARAMETERS • ... • +0x024 CurrentDirectory : _CURDIR • +0x000 DosPath : _UNICODE_STRING "C:Documents and SettingshMy Documents" • +0x008 Handle : 0x00000b50 Void • • // получение адреса CurrentDirectory (первый dword - размеры, второй – указатель на строку) • 0:005> dd poi(@$peb+0x010)+0x024 • 00020024 02080052 00020290 00000b50 01840182 • 00020034 00020498 006e006c 0002061c 00740072 • // проверка адреса CD • 0:005> du 0x20290 • 00020290 "C:Documents and SettingshMy D" • 000202d0 "ocuments" • • // точка останова • 0:005> ba w 4 0x20290
  • 18. CD internals - 2 • MSDN: “it is the directory in which the active application started, unless it has been explicitly changed“ – actually no • Way of starting an app affects CD – App exec default: app dir – App exec: SoftwareMicrosoftWindowsCurrentVersionApp Paths – Exec by lnk: lnk dir – Document open: document dir – CreateProcess(): lpCurrentDirectory • CD set internally by some API – GetOpenFileName() / GetSaveFileName() – FindFirstFile() / FindNextFile() (presumably) • Many file system APIs depend on CD – So developers call SetCurrentDirectory() every now and then
  • 20. Local exploitation • Bypass restrictions/LPE: place exploit DLL into unrestricted location • Consider %PATH%
  • 22. Remote exploitation • Just open a document (the lucky case) • Make user Open/Save/Import/Export files, then trigger • Or automate file operations with a script • Induce an app state with CD changed by developer • Set CD explicitly • Find an app that CreateProcess()-es vulnerable app with good CD
  • 25. A needle in the haystack
  • 27. Browser UI redressing • IE9 on Windows 7 • Context: Local directory, network shared directory, WebDAV • Explorer dir underneath a website • Demo • Also works in Chrome on Windows 7, but restricted to file download operations
  • 28. Browser UI redressing (2) • Chrome on Windows 7 • Context: remote • Web server directory underneath a website • Click-jacking game to silently download necessary files one-by-one • Until all files are saved in %Downloads% • Open exploit document
  • 29. Set CD macro (MS Office) • Context: local dir, network shared dir • You can just execute arbitrary DLL from a macro • But better to execute a kernel32!SetCurrentDirectory() API to fool forensic analysts • Demo
  • 30. MHT • Single file in e-mail attachment • Can contain any types of files, incl. binary • Browser extracts files to %INET_TMP% • Open exploit document by clicking <a href=“.filesdocument.txt” • Exploit DLL will be executed from the same directory • IE9 on Windows 7
  • 31. Archives • Any archives for Windows that extract all files by default? Not SFX of course • WinRAR (latest): browse archive, double- click a HTML document only – Will extract ALL files into %TMP% – Including exploit DLL – Local browser context already
  • 33. Multistage • Case: DLL triggered by manual file import, no registered extension handler – unexploitable? • Stage 1: User gets an e-mail from admin (fake) instructing to install the attached reg-file (looks innocent) • In two weeks, stage 2: user gets an e-mail from a friend with a RAR-ed html game • Click-jacked open file -> exploit • Or open file via network share • As simple as the user is
  • 34. So, what do we have? • Some 0-day vulnerabilities in up-to-date top platforms – Think of non-top software • Ways to manipulate CD • Ways to hide DLL • Remote DLL Hijacking exploitation looks like normal client-side exploitation • What else?
  • 35. Conclusions • Is this a good vector for mass attacks? – Authors of CVE-2011-1991, 1980, 2100 could tell us for sure – I say no – 0-day exploits are not necessary for mass attacks anyway • Excellent vector for rapid targeted/onsite attacks – Plenty of vulnerabilities everywhere – Easy ‘n fast to find in arbitrary environment – Ease ‘n fast to exploit (after this presentation  ) • Even the most trivial bug can be worked down to a good exploit
  • 36. Questions? Thanks to my team and interns Thank you for attention @alisaesage