[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/1653662.1653725acmconferencesArticle/Chapter ViewAbstractPublication PagesccsConference Proceedingsconference-collections
research-article

English shellcode

Published: 09 November 2009 Publication History

Abstract

History indicates that the security community commonly takes a divide-and-conquer approach to battling malware threats: identify the essential and inalienable components of an attack, then develop detection and prevention techniques that directly target one or more of the essential components. This abstraction is evident in much of the literature for buffer overflow attacks including, for instance, stack protection and NOP sled detection. It comes as no surprise then that we approach shellcode detection and prevention in a similar fashion. However, the common belief that components of polymorphic shellcode (e.g., the decoder) cannot reliably be hidden suggests a more implicit and broader assumption that continues to drive contemporary research: namely, that valid and complete representations of shellcode are fundamentally different in structure than benign payloads. While the first tenet of this assumption is philosophically undeniable (i.e., a string of bytes is either shellcode or it is not), truth of the latter claim is less obvious if there exist encoding techniques capable of producing shellcode with features nearly indistinguishable from non-executable content. In this paper, we challenge the assumption that shellcode must conform to superficial and discernible representations. Specifically, we demonstrate a technique for automatically producing English Shellcode, transforming arbitrary shellcode into a representation that is superficially similar to English prose. The shellcode is completely self-contained---i.e., it does not require an external loader and executes as valid IA32 code)---and can typically be generated in under an hour on commodity hardware. Our primary objective in this paper is to promote discussion and stimulate new ideas for thinking ahead about preventive measures for tackling evolutions in code-injection attacks.

References

[1]
P. Akritidis, E. P. Markatos, M. Polychronakis, and K. Anagnostakis. STRIDE: Polymorphic Sled Detection through Instruction Sequence Analysis. In Proceedings of the International Information Security Conference, 2005.
[2]
K. Borders, A. Prakash, and M. Zielinski. Spector: Automatically Analyzing Shell Code. Proceedings of the Annual Computer Security Applications Conference, pages 501--514, 2007.
[3]
E. Buchanan, R. Roemer, H. Shacham, and S. Savage. When Good Instructions Go Bad: Generalizing Return-Oriented Programming to RISC. In Proceedings of ACM Conference on Computer and Communications Security, Oct. 2008.
[4]
C. Cowan, C. Pu, D. Maier, H. Hinton, P. Bakke, S. Beattie, A. Grier, P. Wagle, and Q. Zhang. Stackguard: Automatic Adaptive Detection and Prevention of Buffer-overflow Attacks. In Proceedings of the USENIX Security Symposium, pages 63--78, 1998.
[5]
T. Detristan, T. Ulenspiegel, Y. Malcom, and M. S. V. Underduk. Polymorphic Shellcode Engine Using Spectrum Analysis. Phrack, 11(61), August 2003.
[6]
T. Durden. Bypassing PaX ASLR Protection. Phrack, 11(59), July 2002.
[7]
K2. ADMmutate. See http://www.ktwo.ca/c/ADMmutate-0.8.4.tar.gz.
[8]
I. Kim, K. Kang, Y. Choi, D. Kim, J. Oh, and K. Han. A Practical Approach for Detecting Executable Codes in Network Traffic. In Asia-Pacific Network Operations and Management Symposium, 2007.
[9]
O. Kolesnikov, D. Dagon, and W. Lee. Advanced Polymorphic Worms: Evading IDS by Blending in with Normal Traffic. Technical Report GIT-CC-05-09, Georgia Institute of Technology, 2005.
[10]
G. MacManus and M. Sutton. Punk Ode: Hiding Shellcode in Plain Sight. In Black Hat USA, 2006.
[11]
Obscou. Building IA32 Unicode-Proof Shellcodes. Phrack, 11(61), August 2003.
[12]
A. One. Smashing The Stack For Fun And Profit. Phrack, 7(49), November 1996.
[13]
A. Pasupulati, J. Coit, K. Levitt, S. F. Wu, S. H. Li, R. C. Kuo, and K. P. Fan. Buttercup: on Network-based Detection of Polymorphic Buffer Overflow Vulnerabilities. In IEEE/IFIP Network Operation and Management Symposium, pages 235--248, May 2004.
[14]
U. Payer, P. Teufl, and M. Lamberger. Hybrid Engine for Polymorphic Shellcode Detection. In Proceedings of Detection of Intrusions and Malware&Vulnerability Assessment, pages 19--31, 2005.
[15]
M. Polychronakis, K. G. Anagnostakis, and E. P. Markatos. Network-level Polymorphic Shellcode Detection using Emulation. In Proceedings of Detection of Intrusions and Malware&Vulnerability Assessment, pages 54--73, 2006.
[16]
M. Polychronakis, K. G. Anagnostakis, and E. P. Markatos. Emulation-based Detection of Non-self-contained Polymorphic Shellcode. In Proceedings of the International Symposium on Recent Advances in Intrusion Detection, 2007.
[17]
M. Polychronakis, K. G. Anagnostakis, and E. P. Markatos. An Empirical Study of Real-world Polymorphic Code Injection Attacks. In USENIX Workshop on Large-Scale Exploits and Emergent Threats, 2009.
[18]
Rix. Writing IA32 Alphanumeric Shellcode. Phrack, 11(57), August 2001.
[19]
H. Shacham, M. Page, B. Pfaff, E.-J. Goh, N. Modadugu, and D. Boneh. On the effectiveness of address-space randomization. In Proceedings of ACM Conference on Computer and Communications Security, pages 298--307, Oct. 2004.
[20]
Y. Song, M. E. Locasto, A. Stavrou, A. D. Keromytis, and S. J. Stolfo. On the Infeasibility of Modeling Polymorphic Shellcode. In Proceedings of ACM Conference on Computer and Communications Security, pages 541--551, 2007.
[21]
A. Sotirov and M. Dowd. Bypassing Browser Memory Protections. In Black Hat USA, 2008.
[22]
A. N. Sovarel, D. Evans, and N. Paul. Where's the FEEB? On the Effectiveness of Instruction Set Randomization. In Proceedings of the USENIX Security Symposium, 2005.
[23]
T. Toth and C. Kruegel. Accurate Buffer Overflow Detection via Abstract Payload Execution. In Proceedings of the International Symposium on Recent Advances in Intrusion Detection, pages 274--291, 2002.
[24]
A. J. Viterbi. Error Bounds for Convolutional Codes and an Asymptotically Optimum Decoding Algorithm. IEEE Transactions on Information Theory, 13(2):260--269, April 1967.
[25]
T. Wana. Writing UTF-8 compatible shellcodes. Phrack, 11(62), July 2004.
[26]
X. Wang, Y.-C. Jhi, S. Zhu, and P. Liu. STILL: Exploit Code Detection via Static Taint and Initialization Analyses. Proceedings of the Annual Computer Security Applications Conference, pages 289--298, December 2008.
[27]
Q. Zhang, D. S. Reeves, P. Ning, and S. P. Iyer. Analyzing Network Traffic to Detect Self-decrypting Exploit Code. In Proceedings of the ACM Symposium on Information, Computer and Communications Security, 2007.

Cited By

View all
  • (2024)Obfuscation undercover: Unraveling the impact of obfuscation layering on structural code patternsJournal of Information Security and Applications10.1016/j.jisa.2024.10385085(103850)Online publication date: Sep-2024
  • (2024)Cyberbiosecurity: Advancements in DNA-based information securityBiosafety and Health10.1016/j.bsheal.2024.06.002Online publication date: Jun-2024
  • (2024)Modeling Obfuscation Stealth Through Code ComplexityComputer Security. ESORICS 2023 International Workshops10.1007/978-3-031-54129-2_23(392-408)Online publication date: 12-Mar-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
CCS '09: Proceedings of the 16th ACM conference on Computer and communications security
November 2009
664 pages
ISBN:9781605588940
DOI:10.1145/1653662
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 November 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. natural language
  2. network emulation
  3. shellcode

Qualifiers

  • Research-article

Conference

CCS '09
Sponsor:

Acceptance Rates

Overall Acceptance Rate 1,261 of 6,999 submissions, 18%

Upcoming Conference

CCS '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)35
  • Downloads (Last 6 weeks)5
Reflects downloads up to 28 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Obfuscation undercover: Unraveling the impact of obfuscation layering on structural code patternsJournal of Information Security and Applications10.1016/j.jisa.2024.10385085(103850)Online publication date: Sep-2024
  • (2024)Cyberbiosecurity: Advancements in DNA-based information securityBiosafety and Health10.1016/j.bsheal.2024.06.002Online publication date: Jun-2024
  • (2024)Modeling Obfuscation Stealth Through Code ComplexityComputer Security. ESORICS 2023 International Workshops10.1007/978-3-031-54129-2_23(392-408)Online publication date: 12-Mar-2024
  • (2024)Least Information Redundancy Algorithm of Printable Shellcode Encoding for X86Computer Security. ESORICS 2023 International Workshops10.1007/978-3-031-54129-2_21(361-376)Online publication date: 12-Mar-2024
  • (2023)PolyDoc: Surveying PDF Files from the PolySwarm network2023 IEEE Security and Privacy Workshops (SPW)10.1109/SPW59333.2023.00017(117-134)Online publication date: May-2023
  • (2023)SAFTE: A self-injection based anti-fuzzing techniqueComputers and Electrical Engineering10.1016/j.compeleceng.2023.108980111(108980)Online publication date: Nov-2023
  • (2022)Can we generate shellcodes via natural language? An empirical studyAutomated Software Engineering10.1007/s10515-022-00331-329:1Online publication date: 1-May-2022
  • (2021)EVIL: Exploiting Software via Natural Language2021 IEEE 32nd International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE52982.2021.00042(321-332)Online publication date: Oct-2021
  • (2021)Review of Stack-Based Binary Exploitation TechniquesProceedings of Emerging Trends and Technologies on Intelligent Systems10.1007/978-981-16-3097-2_3(25-36)Online publication date: 2-Oct-2021
  • (2021)Software Security—Exploits and Privilege EscalationComputer Security and the Internet10.1007/978-3-030-83411-1_6(155-182)Online publication date: 14-Oct-2021
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media