Difference between revisions of "Shellcode"
Line 3: | Line 3: | ||
Every [[programming language]] eventually becomes [[binary]], whether at ''compile-time'' or ''runtime''. When writing a [[Buffer Overflows|buffer overflow]] there are many obstructions from [[SIM|security infrastructure]], such as [[DEP]], [[ASLR]], [[firewall|firewalls]], or [[IDS]] and [[IPS]] appliances, thus many [[filter bypass]] and [[IDS evasion]] techniques (such as [[alphanumeric shellcode]]) must be utilized for successful [[exploitation]] in modern environments in conjunction with [[anti-heuristics]] and [[shellcode obfuscation|obfuscation]] for maximum effectiveness. There are primarily two types of shellcode: ''executable'' shellcode and ''return-oriented'' shellcode. | Every [[programming language]] eventually becomes [[binary]], whether at ''compile-time'' or ''runtime''. When writing a [[Buffer Overflows|buffer overflow]] there are many obstructions from [[SIM|security infrastructure]], such as [[DEP]], [[ASLR]], [[firewall|firewalls]], or [[IDS]] and [[IPS]] appliances, thus many [[filter bypass]] and [[IDS evasion]] techniques (such as [[alphanumeric shellcode]]) must be utilized for successful [[exploitation]] in modern environments in conjunction with [[anti-heuristics]] and [[shellcode obfuscation|obfuscation]] for maximum effectiveness. There are primarily two types of shellcode: ''executable'' shellcode and ''return-oriented'' shellcode. | ||
{{protip|[[Machine code]] can be used by a [[programmer]] to write any application from an [[assembly]] approach because it is just as powerful as any other [[programming language]].}} | {{protip|[[Machine code]] can be used by a [[programmer]] to write any application from an [[assembly]] approach because it is just as powerful as any other [[programming language]].}} | ||
+ | |||
+ | |||
+ | |||
'''Executable shellcode''' is typically translated from [[assembly]] written for its respective target [[Operating System]]. | '''Executable shellcode''' is typically translated from [[assembly]] written for its respective target [[Operating System]]. | ||
Revision as of 22:59, 29 May 2012
Every programming language eventually becomes binary, whether at compile-time or runtime. When writing a buffer overflow there are many obstructions from security infrastructure, such as DEP, ASLR, firewalls, or IDS and IPS appliances, thus many filter bypass and IDS evasion techniques (such as alphanumeric shellcode) must be utilized for successful exploitation in modern environments in conjunction with anti-heuristics and obfuscation for maximum effectiveness. There are primarily two types of shellcode: executable shellcode and return-oriented shellcode.
Executable shellcode is typically translated from assembly written for its respective target Operating System.
- Basic executable shellcode, or traditional null-free shellcode can be used on any vulnerable application (sans filters) with an executable stack.
- 32-bit ascii shellcode and 64-bit alphanumeric shellcode are commonly used for filter bypass and IDS evasion.
Return oriented shellcode utilizes return oriented programming in cases when the vulnerable buffer is non-executable, bypassing the need for an executable stack.
<center>