SlideShare a Scribd company logo
Windows File Pseudonyms Strange Filenames and Haiku OR: Pwnage and Poetry Dan Crowley Core Security Technologies dcrowley@coresecurity.com
A quick disclaimer 		Most of the techniques presented here are demonstrated on web-based technologies. 		HOWEVER, the techniques and principles explained should apply to any application which takes a file path or name of any sort from user input which will be used on a Windows system. (Furthermore, I will provide a bottle of delicious beer to anyone who finds a use for these techniques which isn’t in this presentation!) Each slide of this talk ~ Shall hence be accompanied ~ By clever haiku
The Big Problem ™ Applications tend to do string-based analysis of file paths Often, to decide how to handle files Or whether or not files should be served Or whether the file path may be malicious in nature We can reference one file or directory with many different equivalent strings Applications may not expect some of these strings The OS interacts with the filesystem, not the app Developers may not even be aware that their application will accept such names! Some of these names are based on undocumented features One cannot expect ~ To judge books by their covers ~ And find success
8.3 Aliases 8 dot 3 format It’s self explanatory …only to a point
8.3 Aliases In DOS, file names must conform to the 8.3 format, meaning: A basename of (max) 8 characters Followed by one period Followed by a (max) three character extension Windows likes backwards compatibility Each file (and directory!) created on default Windows installations has a DOS-compatible name If the name isn’t 8.3 compatible, a second name (an 8.3 alias or short file name [SFN]) is made Simplified, they are generated as follows: Remove some characters (0x80-0xff) and convert some characters to underscores (like + and space) Start with the first six characters Add a tilde And a digit to distinguish from other files starting with the same characters Add a period And up to the first three characters of the file extension Windows might as well ~ Be backwards-compatible ~ With the abacus
Why do I (audience) care? Because “highlight.php” != “HIGHLI~1.PHP” If your IDS is looking for the old PHPBB highlight command exec flaw, it may not find it Because “.htpasswd” != “HTPASS~1” Your forbidden files may no longer be forbidden File type may be determined by user input Whatever follows the last dot is the file extension So perhaps you can upload file.phPWNED And request FILE~1.PHP Use removed characters to force an extension <3 chars And you will know me ~ By the trail of characters ~ After the last dot
Web App Authentication Bypass Consider the following scenario: Admin.php checks for authentication If authenticated, several external scripts can be called through Admin.php at the whim of the user DeleteUser.php, AddUser.php, UpdateWebPage.php These external scripts cannot be called directly if($_SERVER[‘PHP_SELF’] == ‘/admin/DeleteUser.php’){	die(‘O RLY?’);}else{ do_something_privileged(); } YA RLY ‘/admin/DeleteUser.php’ != ‘/admin/DELETE~1.PHP’ I’m taking a break ~ From sensible haiku now ~ Tonsillectomy
But wait, there’s more! Long file names Maximum length: 255 Approx. char set size: 63000 Approx. possible names:63000^255 = 6.78E+1223 Short file names (8.3 aliases) Maximum length: 12 (-1 for dot) Approx. char set size: 59 Approx. possible names:59^11 = 3.01E+18 	If every file on a Windows box has an 8.3 compatible name (and by default, this is the case) we can immensely reduce the time and resources needed to guess filenames when trying to enumerate file names by brute-force. This can be further reduced if the file extension is known, reducing the complexity to 59^8 = 1.46E+14, or  approx. 146,000,000,000,000 possibilities! Huge complexities ~ Collapsing conveniently ~ To simplicity
Discarded trailing characters “Let’s get rid of stuff At the end of filenames!” Must have once been said.
Discarded trailing characters Certain characters at the end of file names/paths are silently discarded by Windows! In Windows API calls, the following items are discarded: Periods Spaces The Windows shell will also allow, in specific configurations: Double quotes (as long as they are closed properly) Angle brackets (only in certain configurations) Extraneous current directory markers (“/.”) Extraneous parent directory markers with arbitrary items (fake or real) Trailing characters ~ Of certain varieties: ~ Removed, silently.
Equivalent file path examples All of the following paths are valid and equivalent when given to the Windows shell: file.txt file.txt..... file.txt<spaces> file.txt”””” file.txt<<<>><>< file.txt/././././. nonexistant/../file.txt Different technique, similar use “highlight.php” != “highlight.php.” “restricted.txt” != “restricted.txt<space>” Flexibility ~ In Windows nomenclature ~ Borders on silly
DOS special device files Ancient dinosaurs Used to redirect data With some devices
DOS special device files Similar to device files on *nix Allows file operations to be performed on devices Examples include: CON, the console PRN, a parallel printer COM1, the first serial port NUL, a bit bucket (/dev/null equivalent) Pretty well known already, BUT… When you speak to me ~ I redirect all of it ~ To slash-dev-slash-null.
DOS special files quirk #1 They exist “everywhere” Can be accessed from any path, even: In directories which you are denied access to With an existing file as a “directory” which “contains” the file Examples of equivalent paths to CON: CON C:CON C:ON C:.....ON C:estricted_dirON C:xisting_file.txtON Like apparitions ~ They exist in every place ~ And yet in no place
DOS special files quirk #2 They can have any file extension, it’s ignored The following examples are equivalent: CON CON.bat CON.php CON.conf CON.thisisalongandarbitraryfileextension CON.<1000x”A”> Mr. Shakespeare knows ~ A rose by another name ~ Still smells just as sweet
Denial-of-Service A theoretical application accepts file names and reads the associated files This application blocks any file named “CON”, “AUX”, “PRN” etc. to prevent DoS Applications will generally pause to read from a file until EOF EOF may never arrive from devices like AUX It does NOT block files named, for instance, “AUX.txt” Which we know is equivalent to AUX …And while we’re at it, ~ Since we’re speaking of Shakespeare… ~ All’s well that ends well!
Buffer overflow A Windows application takes in a file name The file is verified as existing If it exists, the program does something with the file name And might trust that it doesn’t exceed NTFS limitations What if the file name is “CON.<‘A’x1000>”? Technically, it exists… …but not in the filesystem, so it’s not bound to NTFS limitations Why one needs all this ~ DOS file extension stuff ~ Is just beyond me
You should know better! Microsoft Windows ~ Hoist upon its own petard ~ You should know better!
Defeating Windows file permissions Normal users have access to CON But not C:enied_direnied_file.txt C:enied_diron_existent_file.txtON No access C:enied_direnied_file.txtON Access to console Now you can check the existence of files which you cannot read in directories you cannot read! It is easiest ~ To acquire forgiveness ~ And not permission
TOOL:SFNBRUTE.PY Enumeration Filenames found through brute force Despite permissions
Controlling file handling Don’t forget: You can use ANY extension! Files are often handled based on extension DOS special files, then, can often be handled as ANYTHING YOU CHOOSE! http://www.example.com/com1.php What if COM1 was attached to a serial modem? …Or more likely, a Bluetooth dongle? A riddle for you… ~ When is a CON not a CON? ~ When it’s a dot-jar!
Namespace prefixes What an awful mess! I can’t write haiku about Namespace prefixes...
Namespace prefixes Used when files can’t be referred to with normal paths Because they’re really devices Because they don’t exist on the local filesystem Because they have strange names A distant echo ~ Of a victim, falling dead ~ The hunter shouts “PWNED!”
Minimal parsing prefix An invalid name or path can sometimes be used anyway MAX_PATH can be exceeded Some restricted characters can be used Reserved basenames can be used Just precede it with ?br />Must be an absolute path No current directory indicator ( ./ ) No parent directory indicator ( ../ ) You don’t like the rules? ~ Double wack, question mark, wack. ~ You’re welcome, buddy.
UNC (Short and Long) Used to refer to files on SMB shares Can be used to refer to files across the Internet server_name_or_iphareile This is “Short UNC” Nothing terribly special ?NCerver_name_or_iphareile This is “Long UNC” Allows for the use of the ?prefix with UNC paths What’s the best thing ~ About SMB traffic? ~ Credential replay!
NT device namespace prefix Used to refer to device namespace These paths start with .br />Examples include: .irpcap00br />An AirPcap card .LOBALROOTevicearddiskVolume1br />The first hard disk volume on the machine Might be equivalent to, for instance, C:br />Doesn’t need an assigned drive letter! .dRom0br />The first disc drive on the computer WinObj from Sysinternals will allow you to browse the NT device namespace The device namespace ~ Allows access to devices ~ Using file paths
NTLM credential capture When accessing SMB shares, authentication may be requested If an attacker runs the SMB server, you can bet it will The SMB client machine will often send stored credentials automatically And as you may know these credentials can be replayed or cracked And we can trigger a machine to access an SMB share with a UNC path! A replay attack ~ With SMB credentials ~ Should not still succeed!
Directory traversal “C: doesn’t match: ?:br />127.0.0.1$br />127.3.13.37$br />?NC27.0.0.1$br />.LOBALROOTevicearddiskVolume1br />…but they’re all equivalent! I ought to mention ~ Directory traversal ~ Ed Skoudis said so!
Buffer overflow Minimal parsing prefix allows for the use of paths exceeding MAX_PATH Some developers don’t know you can exceed MAX_PATH …or assume that if the file exists that it can’t exceed MAX_PATH NOP NOPNOPNOPNOP ~ NOP NOPNOPNOPNOPShellcode ~ Pointer to NOP sled
Making Windows rootkits deadlier Imagine that you’re a Windows sysadmin Someone creates a file named “CON” with the minimal parsing prefix You try “type CON” at the command line Your command prompt “hangs” None of your programs open it properly Windows Explorer can’t delete it You cry You pretend it doesn’t exist or convince yourself it really should be there My reaction to ~ “Undocumented feature” ~ Is unbridled rage.
Defeat AV systems Make files with illegal names (“con.exe”, “lol.exe.”, etc.) Put something malicious in them Execute them ??? PROFIT!!! An AV system ~ Should reliably open ~ All suspect files
Client-side Attacks Switching security zones Reference “C:ile.txt” NO THAT’S A LOCAL FILE BAD HACKER Reference 127.0.0.1$ile.txt A UNC path! I know these, they’re Intranet stuff. No prob, Bob. Check out “Internet Explorer turns your personal computer into a public file server”  Jorge Luis Alvarez Medina, BH DC 2010 How do I pwn thee? ~ Let me count the ways; No, wait: ~ Just one is enough!
DEMONSTRATION:nginx and php on windows Now I understand, But I still don’t believe you. SHOW ME THE MONEY!
Questions? There’s no dumb question… “Is the computer plugged in?” Is pretty bad, though. Dan Crowley Core Security Technologies dcrowley@coresecurity.com

More Related Content

What's hot

Dangling DNS records takeover at scale
Dangling DNS records takeover at scaleDangling DNS records takeover at scale
Dangling DNS records takeover at scale
Chandrapal Badshah
 
Cloud-Native DDoS Attack Mitigation
Cloud-Native DDoS Attack MitigationCloud-Native DDoS Attack Mitigation
Cloud-Native DDoS Attack Mitigation
Amazon Web Services
 
One Leg to Stand on: Adventures in Adversary Tracking with ATT&CK
One Leg to Stand on: Adventures in Adversary Tracking with ATT&CKOne Leg to Stand on: Adventures in Adversary Tracking with ATT&CK
One Leg to Stand on: Adventures in Adversary Tracking with ATT&CK
MITRE ATT&CK
 
HTTP Security Headers Every Java Developer Must Know
HTTP Security Headers Every Java Developer Must KnowHTTP Security Headers Every Java Developer Must Know
HTTP Security Headers Every Java Developer Must Know
Ayoma Wijethunga
 
.htaccess
.htaccess.htaccess
.htaccess
Faysal Memon
 
Cached and Confused: Web Cache Deception in the Wild
Cached and Confused: Web Cache Deception in the WildCached and Confused: Web Cache Deception in the Wild
Cached and Confused: Web Cache Deception in the Wild
Sajjad "JJ" Arshad
 
File upload vulnerabilities & mitigation
File upload vulnerabilities & mitigationFile upload vulnerabilities & mitigation
File upload vulnerabilities & mitigation
Onwukike Chinedu. CISA, CEH, COBIT5 LI, CCNP
 
“Privacy Today” Slide Presentation
“Privacy Today” Slide Presentation “Privacy Today” Slide Presentation
“Privacy Today” Slide Presentation
tomasztopa
 
Switch security
Switch securitySwitch security
Switch security
nullowaspmumbai
 
Reverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and VarnishReverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and Varnish
El Mahdi Benzekri
 
Backing Up and Recovery
Backing Up and RecoveryBacking Up and Recovery
Backing Up and Recovery
Maham Huda
 
Wireshark course, Ch 03: Capture and display filters
Wireshark course, Ch 03: Capture and display filtersWireshark course, Ch 03: Capture and display filters
Wireshark course, Ch 03: Capture and display filters
Yoram Orzach
 
Understanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryUnderstanding Cross-site Request Forgery
Understanding Cross-site Request Forgery
Daniel Miessler
 
remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal
Tobias Neitzel
 
Information Leakage & DLP
Information Leakage & DLPInformation Leakage & DLP
Information Leakage & DLP
Yun Lu
 
Data security in the cloud
Data security in the cloud Data security in the cloud
Data security in the cloud
IBM Security
 
Docker Forensics
Docker ForensicsDocker Forensics
Docker Forensics
Joel Lathrop
 
[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking
[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking
[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking
Su Steve
 
CISA usage of ATT&CK in Cybersecurity Advisories
CISA usage of ATT&CK in Cybersecurity AdvisoriesCISA usage of ATT&CK in Cybersecurity Advisories
CISA usage of ATT&CK in Cybersecurity Advisories
MITRE ATT&CK
 
External to DA, the OS X Way
External to DA, the OS X WayExternal to DA, the OS X Way
External to DA, the OS X Way
Stephan Borosh
 

What's hot (20)

Dangling DNS records takeover at scale
Dangling DNS records takeover at scaleDangling DNS records takeover at scale
Dangling DNS records takeover at scale
 
Cloud-Native DDoS Attack Mitigation
Cloud-Native DDoS Attack MitigationCloud-Native DDoS Attack Mitigation
Cloud-Native DDoS Attack Mitigation
 
One Leg to Stand on: Adventures in Adversary Tracking with ATT&CK
One Leg to Stand on: Adventures in Adversary Tracking with ATT&CKOne Leg to Stand on: Adventures in Adversary Tracking with ATT&CK
One Leg to Stand on: Adventures in Adversary Tracking with ATT&CK
 
HTTP Security Headers Every Java Developer Must Know
HTTP Security Headers Every Java Developer Must KnowHTTP Security Headers Every Java Developer Must Know
HTTP Security Headers Every Java Developer Must Know
 
.htaccess
.htaccess.htaccess
.htaccess
 
Cached and Confused: Web Cache Deception in the Wild
Cached and Confused: Web Cache Deception in the WildCached and Confused: Web Cache Deception in the Wild
Cached and Confused: Web Cache Deception in the Wild
 
File upload vulnerabilities & mitigation
File upload vulnerabilities & mitigationFile upload vulnerabilities & mitigation
File upload vulnerabilities & mitigation
 
“Privacy Today” Slide Presentation
“Privacy Today” Slide Presentation “Privacy Today” Slide Presentation
“Privacy Today” Slide Presentation
 
Switch security
Switch securitySwitch security
Switch security
 
Reverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and VarnishReverse proxy & web cache with NGINX, HAProxy and Varnish
Reverse proxy & web cache with NGINX, HAProxy and Varnish
 
Backing Up and Recovery
Backing Up and RecoveryBacking Up and Recovery
Backing Up and Recovery
 
Wireshark course, Ch 03: Capture and display filters
Wireshark course, Ch 03: Capture and display filtersWireshark course, Ch 03: Capture and display filters
Wireshark course, Ch 03: Capture and display filters
 
Understanding Cross-site Request Forgery
Understanding Cross-site Request ForgeryUnderstanding Cross-site Request Forgery
Understanding Cross-site Request Forgery
 
remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal remote-method-guesser - BHUSA2021 Arsenal
remote-method-guesser - BHUSA2021 Arsenal
 
Information Leakage & DLP
Information Leakage & DLPInformation Leakage & DLP
Information Leakage & DLP
 
Data security in the cloud
Data security in the cloud Data security in the cloud
Data security in the cloud
 
Docker Forensics
Docker ForensicsDocker Forensics
Docker Forensics
 
[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking
[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking
[Hitcon 2020 CTI Village] Threat Hunting to Campaign Tracking
 
CISA usage of ATT&CK in Cybersecurity Advisories
CISA usage of ATT&CK in Cybersecurity AdvisoriesCISA usage of ATT&CK in Cybersecurity Advisories
CISA usage of ATT&CK in Cybersecurity Advisories
 
External to DA, the OS X Way
External to DA, the OS X WayExternal to DA, the OS X Way
External to DA, the OS X Way
 

Similar to Windows File Pseudonyms

Unix Basics
Unix BasicsUnix Basics
Unix Basics
Dr.Ravi
 
Linux Basics
Linux BasicsLinux Basics
Linux Basics
Team-VLSI-ITMU
 
Unix Basics 04sp
Unix Basics 04spUnix Basics 04sp
Unix Basics 04sp
Dr.Ravi
 
Nguyễn Vũ Hưng: Basic Linux Power Tools
Nguyễn Vũ Hưng: Basic Linux Power Tools Nguyễn Vũ Hưng: Basic Linux Power Tools
Nguyễn Vũ Hưng: Basic Linux Power Tools
Vu Hung Nguyen
 
Linux introduction-commands2338
Linux introduction-commands2338Linux introduction-commands2338
Linux introduction-commands2338
Cam YP Co., Ltd
 
Linux introduction-commands2338
Linux introduction-commands2338Linux introduction-commands2338
Linux introduction-commands2338
Cam YP Co., Ltd
 
Linux Introduction (Commands)
Linux Introduction (Commands)Linux Introduction (Commands)
Linux Introduction (Commands)
anandvaidya
 
Unix tutorial-08
Unix tutorial-08Unix tutorial-08
Unix tutorial-08
Tushar Jain
 
Shell intro
Shell introShell intro
Shell intro
Teja Bheemanapally
 
7.Canon & Dt
7.Canon & Dt7.Canon & Dt
7.Canon & Dt
phanleson
 
Module 3 Using Linux Softwares.
Module 3 Using Linux Softwares.Module 3 Using Linux Softwares.
Module 3 Using Linux Softwares.
Tushar B Kute
 
Red hat linux essentials
Red hat linux essentialsRed hat linux essentials
Red hat linux essentials
Haitham Raik
 
The structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformaticsThe structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformatics
BITS
 
lec1.docx
lec1.docxlec1.docx
lec1.docx
ismailaboshatra
 
Shell intro
Shell introShell intro
Shell intro
Ankit Garg
 
Shell intro
Shell introShell intro
Shell intro
Srikanth Learner
 
BITS: Introduction to Linux - Text manipulation tools for bioinformatics
BITS: Introduction to Linux - Text manipulation tools for bioinformaticsBITS: Introduction to Linux - Text manipulation tools for bioinformatics
BITS: Introduction to Linux - Text manipulation tools for bioinformatics
BITS
 
Command Line Tools
Command Line ToolsCommand Line Tools
Command Line Tools
David Harris
 
Command
CommandCommand
Command
somoloye
 
LINUX
LINUXLINUX
LINUX
ARJUN
 

Similar to Windows File Pseudonyms (20)

Unix Basics
Unix BasicsUnix Basics
Unix Basics
 
Linux Basics
Linux BasicsLinux Basics
Linux Basics
 
Unix Basics 04sp
Unix Basics 04spUnix Basics 04sp
Unix Basics 04sp
 
Nguyễn Vũ Hưng: Basic Linux Power Tools
Nguyễn Vũ Hưng: Basic Linux Power Tools Nguyễn Vũ Hưng: Basic Linux Power Tools
Nguyễn Vũ Hưng: Basic Linux Power Tools
 
Linux introduction-commands2338
Linux introduction-commands2338Linux introduction-commands2338
Linux introduction-commands2338
 
Linux introduction-commands2338
Linux introduction-commands2338Linux introduction-commands2338
Linux introduction-commands2338
 
Linux Introduction (Commands)
Linux Introduction (Commands)Linux Introduction (Commands)
Linux Introduction (Commands)
 
Unix tutorial-08
Unix tutorial-08Unix tutorial-08
Unix tutorial-08
 
Shell intro
Shell introShell intro
Shell intro
 
7.Canon & Dt
7.Canon & Dt7.Canon & Dt
7.Canon & Dt
 
Module 3 Using Linux Softwares.
Module 3 Using Linux Softwares.Module 3 Using Linux Softwares.
Module 3 Using Linux Softwares.
 
Red hat linux essentials
Red hat linux essentialsRed hat linux essentials
Red hat linux essentials
 
The structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformaticsThe structure of Linux - Introduction to Linux for bioinformatics
The structure of Linux - Introduction to Linux for bioinformatics
 
lec1.docx
lec1.docxlec1.docx
lec1.docx
 
Shell intro
Shell introShell intro
Shell intro
 
Shell intro
Shell introShell intro
Shell intro
 
BITS: Introduction to Linux - Text manipulation tools for bioinformatics
BITS: Introduction to Linux - Text manipulation tools for bioinformaticsBITS: Introduction to Linux - Text manipulation tools for bioinformatics
BITS: Introduction to Linux - Text manipulation tools for bioinformatics
 
Command Line Tools
Command Line ToolsCommand Line Tools
Command Line Tools
 
Command
CommandCommand
Command
 
LINUX
LINUXLINUX
LINUX
 

More from BaronZor

The Patsy Proxy
The Patsy ProxyThe Patsy Proxy
The Patsy Proxy
BaronZor
 
No-Knowledge Crypto Attacks
No-Knowledge Crypto AttacksNo-Knowledge Crypto Attacks
No-Knowledge Crypto Attacks
BaronZor
 
Home Invasion 2.0 - DEF CON 21 - 2013
Home Invasion 2.0 - DEF CON 21 - 2013Home Invasion 2.0 - DEF CON 21 - 2013
Home Invasion 2.0 - DEF CON 21 - 2013
BaronZor
 
Why UPnP is awesome and terrifying
Why UPnP is awesome and terrifyingWhy UPnP is awesome and terrifying
Why UPnP is awesome and terrifying
BaronZor
 
Advanced SQL Injection with SQLol
Advanced SQL Injection with SQLolAdvanced SQL Injection with SQLol
Advanced SQL Injection with SQLol
BaronZor
 
Jack of all Formats
Jack of all FormatsJack of all Formats
Jack of all Formats
BaronZor
 
Daniel Crowley - Speaking with Cryptographic Oracles
Daniel Crowley - Speaking with Cryptographic OraclesDaniel Crowley - Speaking with Cryptographic Oracles
Daniel Crowley - Speaking with Cryptographic Oracles
BaronZor
 

More from BaronZor (7)

The Patsy Proxy
The Patsy ProxyThe Patsy Proxy
The Patsy Proxy
 
No-Knowledge Crypto Attacks
No-Knowledge Crypto AttacksNo-Knowledge Crypto Attacks
No-Knowledge Crypto Attacks
 
Home Invasion 2.0 - DEF CON 21 - 2013
Home Invasion 2.0 - DEF CON 21 - 2013Home Invasion 2.0 - DEF CON 21 - 2013
Home Invasion 2.0 - DEF CON 21 - 2013
 
Why UPnP is awesome and terrifying
Why UPnP is awesome and terrifyingWhy UPnP is awesome and terrifying
Why UPnP is awesome and terrifying
 
Advanced SQL Injection with SQLol
Advanced SQL Injection with SQLolAdvanced SQL Injection with SQLol
Advanced SQL Injection with SQLol
 
Jack of all Formats
Jack of all FormatsJack of all Formats
Jack of all Formats
 
Daniel Crowley - Speaking with Cryptographic Oracles
Daniel Crowley - Speaking with Cryptographic OraclesDaniel Crowley - Speaking with Cryptographic Oracles
Daniel Crowley - Speaking with Cryptographic Oracles
 

Recently uploaded

Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
CAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on BlockchainCAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on Blockchain
Claudio Di Ciccio
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 

Recently uploaded (20)

Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
CAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on BlockchainCAKE: Sharing Slices of Confidential Data on Blockchain
CAKE: Sharing Slices of Confidential Data on Blockchain
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 

Windows File Pseudonyms

  • 1. Windows File Pseudonyms Strange Filenames and Haiku OR: Pwnage and Poetry Dan Crowley Core Security Technologies dcrowley@coresecurity.com
  • 2. A quick disclaimer Most of the techniques presented here are demonstrated on web-based technologies. HOWEVER, the techniques and principles explained should apply to any application which takes a file path or name of any sort from user input which will be used on a Windows system. (Furthermore, I will provide a bottle of delicious beer to anyone who finds a use for these techniques which isn’t in this presentation!) Each slide of this talk ~ Shall hence be accompanied ~ By clever haiku
  • 3. The Big Problem ™ Applications tend to do string-based analysis of file paths Often, to decide how to handle files Or whether or not files should be served Or whether the file path may be malicious in nature We can reference one file or directory with many different equivalent strings Applications may not expect some of these strings The OS interacts with the filesystem, not the app Developers may not even be aware that their application will accept such names! Some of these names are based on undocumented features One cannot expect ~ To judge books by their covers ~ And find success
  • 4. 8.3 Aliases 8 dot 3 format It’s self explanatory …only to a point
  • 5. 8.3 Aliases In DOS, file names must conform to the 8.3 format, meaning: A basename of (max) 8 characters Followed by one period Followed by a (max) three character extension Windows likes backwards compatibility Each file (and directory!) created on default Windows installations has a DOS-compatible name If the name isn’t 8.3 compatible, a second name (an 8.3 alias or short file name [SFN]) is made Simplified, they are generated as follows: Remove some characters (0x80-0xff) and convert some characters to underscores (like + and space) Start with the first six characters Add a tilde And a digit to distinguish from other files starting with the same characters Add a period And up to the first three characters of the file extension Windows might as well ~ Be backwards-compatible ~ With the abacus
  • 6. Why do I (audience) care? Because “highlight.php” != “HIGHLI~1.PHP” If your IDS is looking for the old PHPBB highlight command exec flaw, it may not find it Because “.htpasswd” != “HTPASS~1” Your forbidden files may no longer be forbidden File type may be determined by user input Whatever follows the last dot is the file extension So perhaps you can upload file.phPWNED And request FILE~1.PHP Use removed characters to force an extension <3 chars And you will know me ~ By the trail of characters ~ After the last dot
  • 7. Web App Authentication Bypass Consider the following scenario: Admin.php checks for authentication If authenticated, several external scripts can be called through Admin.php at the whim of the user DeleteUser.php, AddUser.php, UpdateWebPage.php These external scripts cannot be called directly if($_SERVER[‘PHP_SELF’] == ‘/admin/DeleteUser.php’){ die(‘O RLY?’);}else{ do_something_privileged(); } YA RLY ‘/admin/DeleteUser.php’ != ‘/admin/DELETE~1.PHP’ I’m taking a break ~ From sensible haiku now ~ Tonsillectomy
  • 8. But wait, there’s more! Long file names Maximum length: 255 Approx. char set size: 63000 Approx. possible names:63000^255 = 6.78E+1223 Short file names (8.3 aliases) Maximum length: 12 (-1 for dot) Approx. char set size: 59 Approx. possible names:59^11 = 3.01E+18 If every file on a Windows box has an 8.3 compatible name (and by default, this is the case) we can immensely reduce the time and resources needed to guess filenames when trying to enumerate file names by brute-force. This can be further reduced if the file extension is known, reducing the complexity to 59^8 = 1.46E+14, or approx. 146,000,000,000,000 possibilities! Huge complexities ~ Collapsing conveniently ~ To simplicity
  • 9. Discarded trailing characters “Let’s get rid of stuff At the end of filenames!” Must have once been said.
  • 10. Discarded trailing characters Certain characters at the end of file names/paths are silently discarded by Windows! In Windows API calls, the following items are discarded: Periods Spaces The Windows shell will also allow, in specific configurations: Double quotes (as long as they are closed properly) Angle brackets (only in certain configurations) Extraneous current directory markers (“/.”) Extraneous parent directory markers with arbitrary items (fake or real) Trailing characters ~ Of certain varieties: ~ Removed, silently.
  • 11. Equivalent file path examples All of the following paths are valid and equivalent when given to the Windows shell: file.txt file.txt..... file.txt<spaces> file.txt”””” file.txt<<<>><>< file.txt/././././. nonexistant/../file.txt Different technique, similar use “highlight.php” != “highlight.php.” “restricted.txt” != “restricted.txt<space>” Flexibility ~ In Windows nomenclature ~ Borders on silly
  • 12. DOS special device files Ancient dinosaurs Used to redirect data With some devices
  • 13. DOS special device files Similar to device files on *nix Allows file operations to be performed on devices Examples include: CON, the console PRN, a parallel printer COM1, the first serial port NUL, a bit bucket (/dev/null equivalent) Pretty well known already, BUT… When you speak to me ~ I redirect all of it ~ To slash-dev-slash-null.
  • 14. DOS special files quirk #1 They exist “everywhere” Can be accessed from any path, even: In directories which you are denied access to With an existing file as a “directory” which “contains” the file Examples of equivalent paths to CON: CON C:CON C:ON C:.....ON C:estricted_dirON C:xisting_file.txtON Like apparitions ~ They exist in every place ~ And yet in no place
  • 15. DOS special files quirk #2 They can have any file extension, it’s ignored The following examples are equivalent: CON CON.bat CON.php CON.conf CON.thisisalongandarbitraryfileextension CON.<1000x”A”> Mr. Shakespeare knows ~ A rose by another name ~ Still smells just as sweet
  • 16. Denial-of-Service A theoretical application accepts file names and reads the associated files This application blocks any file named “CON”, “AUX”, “PRN” etc. to prevent DoS Applications will generally pause to read from a file until EOF EOF may never arrive from devices like AUX It does NOT block files named, for instance, “AUX.txt” Which we know is equivalent to AUX …And while we’re at it, ~ Since we’re speaking of Shakespeare… ~ All’s well that ends well!
  • 17. Buffer overflow A Windows application takes in a file name The file is verified as existing If it exists, the program does something with the file name And might trust that it doesn’t exceed NTFS limitations What if the file name is “CON.<‘A’x1000>”? Technically, it exists… …but not in the filesystem, so it’s not bound to NTFS limitations Why one needs all this ~ DOS file extension stuff ~ Is just beyond me
  • 18. You should know better! Microsoft Windows ~ Hoist upon its own petard ~ You should know better!
  • 19. Defeating Windows file permissions Normal users have access to CON But not C:enied_direnied_file.txt C:enied_diron_existent_file.txtON No access C:enied_direnied_file.txtON Access to console Now you can check the existence of files which you cannot read in directories you cannot read! It is easiest ~ To acquire forgiveness ~ And not permission
  • 20. TOOL:SFNBRUTE.PY Enumeration Filenames found through brute force Despite permissions
  • 21. Controlling file handling Don’t forget: You can use ANY extension! Files are often handled based on extension DOS special files, then, can often be handled as ANYTHING YOU CHOOSE! http://www.example.com/com1.php What if COM1 was attached to a serial modem? …Or more likely, a Bluetooth dongle? A riddle for you… ~ When is a CON not a CON? ~ When it’s a dot-jar!
  • 22. Namespace prefixes What an awful mess! I can’t write haiku about Namespace prefixes...
  • 23. Namespace prefixes Used when files can’t be referred to with normal paths Because they’re really devices Because they don’t exist on the local filesystem Because they have strange names A distant echo ~ Of a victim, falling dead ~ The hunter shouts “PWNED!”
  • 24. Minimal parsing prefix An invalid name or path can sometimes be used anyway MAX_PATH can be exceeded Some restricted characters can be used Reserved basenames can be used Just precede it with ?br />Must be an absolute path No current directory indicator ( ./ ) No parent directory indicator ( ../ ) You don’t like the rules? ~ Double wack, question mark, wack. ~ You’re welcome, buddy.
  • 25. UNC (Short and Long) Used to refer to files on SMB shares Can be used to refer to files across the Internet server_name_or_iphareile This is “Short UNC” Nothing terribly special ?NCerver_name_or_iphareile This is “Long UNC” Allows for the use of the ?prefix with UNC paths What’s the best thing ~ About SMB traffic? ~ Credential replay!
  • 26. NT device namespace prefix Used to refer to device namespace These paths start with .br />Examples include: .irpcap00br />An AirPcap card .LOBALROOTevicearddiskVolume1br />The first hard disk volume on the machine Might be equivalent to, for instance, C:br />Doesn’t need an assigned drive letter! .dRom0br />The first disc drive on the computer WinObj from Sysinternals will allow you to browse the NT device namespace The device namespace ~ Allows access to devices ~ Using file paths
  • 27. NTLM credential capture When accessing SMB shares, authentication may be requested If an attacker runs the SMB server, you can bet it will The SMB client machine will often send stored credentials automatically And as you may know these credentials can be replayed or cracked And we can trigger a machine to access an SMB share with a UNC path! A replay attack ~ With SMB credentials ~ Should not still succeed!
  • 28. Directory traversal “C: doesn’t match: ?:br />127.0.0.1$br />127.3.13.37$br />?NC27.0.0.1$br />.LOBALROOTevicearddiskVolume1br />…but they’re all equivalent! I ought to mention ~ Directory traversal ~ Ed Skoudis said so!
  • 29. Buffer overflow Minimal parsing prefix allows for the use of paths exceeding MAX_PATH Some developers don’t know you can exceed MAX_PATH …or assume that if the file exists that it can’t exceed MAX_PATH NOP NOPNOPNOPNOP ~ NOP NOPNOPNOPNOPShellcode ~ Pointer to NOP sled
  • 30. Making Windows rootkits deadlier Imagine that you’re a Windows sysadmin Someone creates a file named “CON” with the minimal parsing prefix You try “type CON” at the command line Your command prompt “hangs” None of your programs open it properly Windows Explorer can’t delete it You cry You pretend it doesn’t exist or convince yourself it really should be there My reaction to ~ “Undocumented feature” ~ Is unbridled rage.
  • 31. Defeat AV systems Make files with illegal names (“con.exe”, “lol.exe.”, etc.) Put something malicious in them Execute them ??? PROFIT!!! An AV system ~ Should reliably open ~ All suspect files
  • 32. Client-side Attacks Switching security zones Reference “C:ile.txt” NO THAT’S A LOCAL FILE BAD HACKER Reference 127.0.0.1$ile.txt A UNC path! I know these, they’re Intranet stuff. No prob, Bob. Check out “Internet Explorer turns your personal computer into a public file server” Jorge Luis Alvarez Medina, BH DC 2010 How do I pwn thee? ~ Let me count the ways; No, wait: ~ Just one is enough!
  • 33. DEMONSTRATION:nginx and php on windows Now I understand, But I still don’t believe you. SHOW ME THE MONEY!
  • 34.
  • 35. Questions? There’s no dumb question… “Is the computer plugged in?” Is pretty bad, though. Dan Crowley Core Security Technologies dcrowley@coresecurity.com