Challenges in Firmware Re-Hosting, Emulation, and Analysis
2022, ACM Computing Surveys
https://doi.org/10.1145/3423167Abstract
System emulation and firmware re-hosting have become popular techniques to answer various security and performance related questions, such as determining whether a firmware contain security vulnerabilities or meet timing requirements when run on a specific hardware platform. While this motivation for emulation and binary analysis has previously been explored and reported, starting to either work or research in the field is difficult. To this end, we provide a comprehensive guide for the practitioner or system emulation researcher. We layout common challenges faced during firmware re-hosting, explaining successive steps and surveying common tools used to overcome these challenges. We provide classification techniques on five different axes, including emulator methods, system type, fidelity, emulator purpose, and control. These classifications and comparison criteria enable the practitioner to determine the appropriate tool for emulation. We use our classifications to categorize popul...
References (205)
- $20M in Bounties Paid and $100M In Sight. https://www.hackerone.com/blog/20M-in-bounties-paid-and- 100M-in-sight
- AFL-Fuzz. [n.d.]. afl-fuzz. https://github.com/google/AFL
- Irfan Ahmed, Sebastian Obermeier, Martin Naedele, and Golden G. Richard III. 2012. SCADA Systems: Challenges for Forensic Investigators. Computer 45, 12 (Dec 2012), 44-51. https://doi.org/10.1109/MC.2012.325
- Saed Alrabaee, Paria Shirani, Lingyu Wang, and Mourad Debbabi. 2018. FOSSIL: A Resilient and Efficient System for Identifying FOSS Functions in malware binaries. ACM Transactions on Privacy and Security 21, 2 (2018), 8.
- Roberto Baldoni, Emilio Coppa, Daniele Cono D'elia, Camil Demetrescu, and Irene Finocchi. 2018. A Survey of Symbolic Execution Techniques. Comput. Surveys 51, 3, Article 50 (May 2018), 39 pages. https://doi.org/10.1145/3182657
- Tiffany Bao, Jonathan Burket, Maverick Woo, Rafael Turner, and David Brumley. 2014. BYTEWEIGHT: Learning to Recognize Functions in Binary Code. In 23rd USENIX Security Symposium. 845-860.
- Tiffany Bao, Ruoyu Wang, Yan Shoshitaishvili, and David Brumley. 2017. Your Exploit is Mine: Automatic Shellcode Transplant for Remote Exploits. In IEEE Symposium on Security and Privacy.
- BE-PUM. [n.d.].
- BE-PUM. https://github.com/NMHai/BE-PUM
- Fabrice Bellard. 2005. QEMU, a Fast and Portable Dynamic Translator. In Proceedings of the Annual Conference on USENIX Annual Technical Conference. USENIX Association, Berkeley, CA, USA, 41-41. http://dl.acm.org/citation. cfm?id=1247360.1247401
- Nathan Binkert, Bradford Beckmann, Gabriel Black, Steven K. Reinhardt, Ali Saidi, Arkaprava Basu, Joel Hestness, Derek R. Hower, Tushar Krishna, Somayeh Sardashti, Rathijit Sen, Korey Sewell, Muhammad Shoaib, Nilay Vaish, Mark D. Hill, and David A. Wood. 2011. The Gem5 Simulator. SIGARCH Computer Architecture News 39, 2 (Aug 2011), 1-7. https://doi.org/10.1145/2024716.2024718
- BitBlaze. [n.d.].
- FuzzBALL. https://github.com/bitblaze-fuzzball/fuzzball
- Pietro Braione, Giovanni Denaro, and Mauro Pezzè. 2013. Enhancing Symbolic Execution with Built-in Term Rewriting and Constrained Lazy Initialization. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering. ACM, New York, NY, USA, 411-421. https://doi.org/10.1145/2491411.2491433
- Pietro Braione, Giovanni Denaro, and Mauro Pezzè. 2015. Symbolic Execution of Programs with Heap Inputs. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering. ACM, New York, NY, USA, 602-613. https://doi.org/10.1145/2786805.2786842
- Jonathan Broome and David Marx. 2000. Method and Iimplementation for Intercepting and Processing System Calls in Programmed Digital Computer to Emulate Retrograde operating System. US Patent 6,086,623.
- David Brumley, Ivan Jager, Thanassis Avgerinos, and Edward J Schwartz. 2011. BAP: A Binary Analysis Platform. In International Conference on Computer Aided Verification. Springer, 463-469.
- Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and Automatic Generation of High- coverage Tests for Complex Systems Programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation. USENIX Association, Berkeley, CA, USA, 209-224. http://dl.acm.org/citation.cfm?id= 1855741.1855756
- Cristian Cadar, Patrice Godefroid, Sarfraz Khurshid, Corina S. Păsăreanu, Koushik Sen, Nikolai Tillmann, and Willem Visser. 2011. Symbolic Execution for Software Testing in Practice: Preliminary Assessment. In Proceedings of the 33rd International Conference on Software Engineering. Association for Computing Machinery, New York, NY, USA, 1066-1071. https://doi.org/10.1145/1985793.1985995
- Joan Calvet, José M Fernandez, and Jean-Yves Marion. 2012. Aligot: Cryptographic Function Identification in Obfuscated Binary Programs. In ACM Conference on Computer and Communications Security. ACM, 169-182.
- Capstone. [n.d.].
- Capstone Disassembler. http://www.capstone-engine.org/
- Dan Caselden, Alex Bazhanyuk, Mathias Payer, Laszlo Szekeres, Stephen McCamant, and Dawn Song. 2013. Transformation-aware Exploit Generation using a HI-CFG. Technical Report UCB/EECS-2013-85. EECS Department, University of California, Berkeley. http://www2.eecs.berkeley.edu/Pubs/TechRpts/2013/EECS-2013-85.html
- Sang Kil Cha, Thanassis Avgerinos, Alexandre Rebert, and David Brumley. 2012. Unleashing Mayhem on Binary Code. In IEEE Symposium on Security and Privacy. IEEE Computer Society, Washington, DC, USA, 380-394. https: //doi.org/10.1109/SP.2012.31
- Daming D. Chen, Maverick Woo, David Brumley, and Manuel Egele. 2016. Towards Automated Dynamic Analysis for Linux-based Embedded Firmware. In 23rd Annual Network and Distributed System Security Symposium, 2016, San Diego, California, USA, February 21-24, 2016. http://wp.internetsociety.org/ndss/wp-content/uploads/sites/25/2017/ 09/towards-automated-dynamic-analysis-linux-based-embedded-firmware.pdf
- Kai Cheng, Qiang Li, Lei Wang, Qian Chen, Yaowen Zheng, Limin Sun, and Zhenkai Liang. 2018. DTaint: Detecting the Taint-Style Vulnerability in Embedded Device Firmware. In 2018 48th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. 430-441. https://doi.org/10.1109/DSN.2018.00052
- Anton Chernoff, Mark Herdeg, Ray Hookway, Chris Reeve, Norman Rubin, Tony Tye, S. Bharadwaj Yadavalli, and John Yates. 1998. FX!32 A Profile-Directed Binary Translator. IEEE Micro 18, 2 (March 1998), 56-64. https: //doi.org/10.1109/40.671403
- Vitaly Chipounov, Volodymyr Kuznetsov, and George Candea. 2011. S2E: A Platform for In-vivo Multi-path Analysis of Software Systems. SIGARCH Computer Architecture News 39, 1 (Mar 2011), 265-278. https://doi.org/10.1145/ 1961295.1950396
- Zheng Leong Chua, Shiqi Shen, Prateek Saxena, and Zhenkai Liang. 2017. Neural Nets Can Learn Function Type Signatures From Binaries. In 26th USENIX Security Symposium. 99-116.
- Catalin Cimpanu. 2019. Android Exploits Are Now Worth More Than iOS Exploits For The First Time. https: //www.zdnet.com/article/android-exploits-are-now-worth-more-than-ios-exploits-for-the-first-time/
- Cisco. [n.d.]. Joy. https://github.com/cisco/joy
- Cisomag. 2020. Tesla Offers US$1 Million and a Car to Hack its Model 3 Car. https://www.cisomag.com/tesla-offers- us1-million-and-a-car-as-bug-bounty-reward/
- James Clause, Wanchun Li, and Alessandro Orso. 2007. Dytan: A Generic Dynamic Taint Analysis Framework. In Proceedings of the 2007 International Symposium on Software Testing and Analysis. ACM, New York, NY, USA, 196-206. https://doi.org/10.1145/1273463.1273490
- John Clemens. 2015. Automatic Classification of Object Code Using Machine Learning. Digital Investigation 14, S1 (Aug 2015), S156-S162. https://doi.org/10.1016/j.diin.2015.05.007
- Abraham Clements, Eric Gustafson, Tobias Scharnowski, Paul Grosen, David Fritz, Christopher Kruegel, Giovanni Vigna, Saurabh Bagchi, and Mathias Payer. 2020. HALucinator: Firmware Re-hosting through Abstraction Layer Emulation. (2020).
- Lucian Cojocar, Jonas Zaddach, Roel Verdult, Herbert Bos, Aurélien Francillon, and Davide Balzarotti. 2015. PIE: Parser Identification in Embedded Systems. In Proceedings of the 31st Annual Computer Security Applications Conference. Association for Computing Machinery, New York, NY, USA, 251-260. https://doi.org/10.1145/2818000.2818035
- Comsecuris. [n.d.].
- GDB Ghidra. https://github.com/Comsecuris/gdbghidra
- ConsenSys. [n.d.].
- Mythril. https://github.com/ConsenSys/mythril
- Jake Corina, Aravind Machiry, Christopher Salls, Yan Shoshitaishvili, Shuang Hao, Christopher Kruegel, and Giovanni Vigna. 2017. Difuze: Interface Aware Fuzzing for Kernel Drivers. In ACM SIGSAC Conference on Computer and Communications Security. ACM, 2123-2138.
- Nassim Corteggiani, Giovanni Camurati, and Aurélien Francillon. 2018. Inception: System-Wide Security Testing of Real-World Embedded Systems Software. In 27th USENIX Security Symposium. USENIX Association, Baltimore, MD, 309-326. https://www.usenix.org/conference/usenixsecurity18/presentation/corteggiani
- Andrei Costin and Jonas Zaddach. 2013. Embedded Devices Security and Firmware Reverse Engineering.
- Andrei Costin, Jonas Zaddach, Aurélien Francillon, and Davide Balzarotti. [n.d.]. firmware.re. http://firmware.re/ usenixsec14/
- Andrei Costin, Jonas Zaddach, Aurélien Francillon, and Davide Balzarotti. 2014. A Large-Scale Analysis of the Security of Embedded Firmwares. In 23rd USENIX Security Symposium. USENIX Association, San Diego, CA, 95-110. https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/costin
- Andrei Costin, Apostolis Zarras, and Aurélien Francillon. 2016. Automated Dynamic Firmware Analysis at Scale: A Case Study on Embedded Web Interfaces. In Proceedings of the 11th ACM on Asia Conference on Computer and Communications Security. ACM, New York, NY, USA, 437-448. https://doi.org/10.1145/2897845.2897900
- Andrei Costin, Apostolis Zarras, and Aurélien Francillon. 2017. Towards Automated Classification of Firmware Images and Identification of Embedded Devices. In ICT Systems Security and Privacy Protection, Sabrina De Capitani di Vimercati and Fabio Martinelli (Eds.). Springer International Publishing, Cham, 233-247.
- Craig. 2012. Emulating NVRAM in Qemu. http://www.devttys0.com/2012/03/emulating-nvram-in-qemu/
- Robin David, Sébastien Bardin, Thanh Dinh Ta, Laurent Mounier, Josselin Feist, Marie-Laure Potet, and Jean-Yves Marion. 2016. BINSEC/SE: A Dynamic Symbolic Execution Toolkit for Binary-Level Analysis. In IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering. IEEE Computer Society, Los Alamitos, CA, USA, 653-656. https://doi.org/10.1109/SANER.2016.43
- Drew Davidson, Benjamin Moench, Thomas Ristenpart, and Somesh Jha. 2013. FIE on Firmware: Finding Vulnerabil- ities in Embedded Systems Using Symbolic Execution. In 22nd USENIX Security Symposium. USENIX Association, Washington, D.C., 463-478. https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/davidson
- Pietro De Nicolao, Marcello Pogliani, Mario Polino, Michele Carminati, Davide Quarta, and Stefano Zanero. 2018. ELISA: ELiciting ISA of Raw Binaries for Fine-Grained Code and Data Separation. In Detection of Intrusions and Malware, and Vulnerability Assessment, Cristiano Giuffrida, Sébastien Bardin, and Gregory Blanc (Eds.). Springer International Publishing, Cham, 351-371.
- Brendan Dolan-Gavitt, Josh Hodosh, Patrick Hulin, Tim Leek, and Ryan Whelan. 2015. Repeatable Reverse Engineering with PANDA. In Proceedings of the 5th Program Protection and Reverse Engineering Workshop. ACM, New York, NY, USA, Article 4, 11 pages. https://doi.org/10.1145/2843859.2843867
- Christopher Domas. 2017. Breaking the x86 ISA.
- DOSBox. [n.d.].
- DOSBox. https://www.dosbox.com/
- DroidSniff. [n.d.]. DroidSniff. https://github.com/evozi/DroidSniff
- Thomas Dullien and Sebastian Porst. 2009. REIL: A platform-independent intermediate representation of disassembled code for static code analysis.
- EtherApe. [n.d.].
- EtherApe. https://etherape.sourceforge.io/
- FaceDancer. [n.d.].
- FaceDancer. https://github.com/usb-tools/Facedancer
- Bo Feng, Alejandro Mera, and Long Lu. 2019. P2IM: Scalable and Hardware-independent Firmware Testing via Automatic Peripheral Interface Modeling (extended version). ArXiv abs/1909.06472 (2019).
- Firmadyne. 2018. firmadyne/libnvram. https://github.com/firmadyne/libnvram
- firmware-mod-kit. [n.d.]. firmware-mod-kit. https://github.com/rampageX/firmware-mod-kit
- José Fragoso Santos, Petar Maksimović, Gabriela Sampaio, and Philippa Gardner. 2019. JaVerT 2.0: Compositional Symbolic Execution for JavaScript. Proceedings of the ACM on Principles of Programming Languages 3, Article 66 (Jan 2019), 31 pages. https://doi.org/10.1145/3290379
- Prashant Gandhi, Somesh Khanna, and Sree Ramaswamy. 2017. Which Industries Are the Most Digital (and Why)? https://hbr.org/2016/04/a-chart-that-shows-which-industries-are-the-most-digital-and-why
- Patrice Godefroid, Michael Y. Levin, and David Molnar. 2008. Automated whitebox fuzz testing. In Network and Distributed Systems Security Symposium.
- Google. [n.d.]. clusterfuzz. https://github.com/google/clusterfuzz
- Google. [n.d.]. domato. https://github.com/googleprojectzero/domato
- Google. [n.d.]. fuzzilli. https://github.com/googleprojectzero/fuzzilli
- Google. [n.d.]. gofuzz. https://github.com/google/gofuzz
- Google. [n.d.]. honggfuzz. https://github.com/google/honggfuzz
- Google. [n.d.]. syzkaller. https://github.com/google/syzkaller
- Google. [n.d.]. winafl. https://github.com/googleprojectzero/winafl
- Gustavo Grieco, Martín Ceresa, and Pablo Buiras. 2016. QuickFuzz: An Automatic Random Fuzzer for Common File Formats. In Proceedings of the 9th International Symposium on Haskell. ACM, New York, NY, USA, 13-20. https: //doi.org/10.1145/2976002.2976017
- Eric Gustafson, Marius Muench, Chad Spensky, Nilo Redini, Aravind Machiry, Yanick Fratantonio, Davide Balzarotti, Aurelien Francillon, Yung Ryn Choe, Christophe Kruegel, et al. 2020. Toward the Analysis of Embedded Firmware through Automated Re-hosting. In 22nd International Symposium on Research in Attacks, Intrusions and Defenses.
- Jim Hall. [n.d.].
- HP LaserJet The Early History. http://hparchive.com/seminar_notes/HP_LaserJet_The_Early_ History_by_Jim_Hall_110512.pdf
- Armijn Hemel and Shane Coughlan. [n.d.]. Binary Analysis Toolkit. http://www.binaryanalysis.org/old/home
- Hemel, Armijn. [n.d.]. BANG -Binary Analysis Next Generation. https://github.com/armijnhemel/binaryanalysis-ng
- Grant Hernandez, Farhaan Fowze, Dave Tian, Tuba Yavuz, and Kevin Butler. 2017. FirmUSB: Vetting USB Device Firmware using Domain Informed Symbolic Execution. (Aug 2017). https://doi.org/10.1145/3133956.3134050
- Brendan Hesse. 2019. Earn Up to $1 Million from Apple's Expanded Bug Bounty Program. https://lifehacker.com/earn- up-to-1-million-from-apples-expanded-bug-bounty-p-1837106598
- Emily R Jacobson, Nathan Rosenblum, and Barton P Miller. 2011. Labeling Library Functions in Stripped Binaries. In 10th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools. ACM, 1-8.
- Janala2. [n.d.].
- Janala2. https://github.com/ksen007/janala2
- Dave Jones. 2011. Trinity: A system call fuzzer. In Proceedings of the 13th Ottawa Linux Symposium.
- Sami Kairajärvi, Andrei Costin, and Timo Hämäläinen. 2020. ISAdetect: Usable Automated Detection of CPU Architecture and Endianness for Executable Binary Files and Object Code. In Tenth ACM Conference on Data and Application Security and Privacy. Association for Computing Machinery, New York, NY, USA, 376-380. https: //doi.org/10.1145/3374664.3375742
- Sushma Kalle, Nehal Ameen, Hyunguk Yoo, and Irfan Ahmed. 2019. CLIK on PLCs! Attacking Control Logic with Decompilation and Virtual PLC. https://doi.org/10.14722/bar.2019.23xxx
- Aaron Kaluszka. [n.d.].
- Markus Kammerstetter, Christian Platzer, and Wolfgang Kastner. 2014. Prospect: Peripheral Proxying Supported Embedded Code Testing. In Proceedings of the 9th ACM Symposium on Information, Computer and Communications Security. ACM, New York, NY, USA, 329-340. https://doi.org/10.1145/2590296.2590301
- Stamatis Karnouskos. 2011. Stuxnet Worm Impact on Industrial Cyber-Physical System Security. In 37th Annual Conference of the IEEE Industrial Electronics Society. 4490-4494. https://doi.org/10.1109/IECON.2011.6120048
- Anastasis Keliris and Michail Maniatakos. 2019. ICSREF: A Framework for Automated Reverse Engineering of Industrial Control Systems Binaries. In Network and Distributed Systems Security Symposium.
- M. Ammar Ben Khadra, Dominik Stoffel, and Wolfgang Kunz. 2016. Speculative Disassembly of Binary Code. In Proceedings of the International Conference on Compilers, Architectures and Synthesis for Embedded Systems. ACM, New York, NY, USA, Article 16, 10 pages. https://doi.org/10.1145/2968455.2968505
- Kismet. [n.d.].
- Kismet. https://www.kismetwireless.net/
- George Klees, Andrew Ruef, Benji Cooper, Shiyi Wei, and Michael Hicks. 2018. Evaluating Fuzz Testing. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. ACM, New York, NY, USA, 2123-2138. https://doi.org/10.1145/3243734.3243804
- Karl Koscher, Tadayoshi Kohno, and David Molnar. 2015. SURROGATES: Enabling Near-Real-Time Dynamic Analyses of Embedded Systems. In 9th USENIX Workshop on Offensive Technologies. USENIX Association, Washington, D.C. https://www.usenix.org/conference/woot15/workshop-program/presentation/koscher
- Christopher Kruegel. [n.d.]. Full system emulation: Achieving successful automated dynamic analysis of evasive malware.
- Christopher Kruegel, Engin Kirda, Darren Mutz, William Robertson, and Giovanni Vigna. 2005. Automating mimicry attacks using static binary analysis. In 14th USENIX Security Symposium, Vol. 14. 11-11.
- Christopher Kruegel, William Robertson, Fredrik Valeur, and Giovanni Vigna. 2004. Static Disassembly of Obfuscated Binaries. In 13th USENIX Security Symposium, Vol. 13. 18-18.
- Christopher Kruegel, William Robertson, and Giovanni Vigna. 2004. Detecting Kernel-Level Rootkits Through Binary Analysis. In 20th Annual Computer Security Applications Conference. IEEE, 91-100.
- C. Lattner and V. Adve. 2004. LLVM: a compilation framework for lifelong program analysis transformation. In International Symposium on Code Generation and Optimization. 75-86.
- Kevin P. Lawton. 1996. Bochs: A Portable PC Emulator for Unix/X. Linux J. 1996, 29es, Article 7 (Sep 1996). http://dl.acm.org/citation.cfm?id=326350.326357
- Leveldown Security. [n.d.]. SVD-Loader-Ghidra. https://github.com/leveldown-security/SVD-Loader-Ghidra
- R. Li, Z. Zhao, X. Zhou, G. Ding, Y. Chen, Z. Wang, and H. Zhang. 2017. Intelligent 5G: When Cellular Networks Meet Artificial Intelligence. IEEE Wireless Communications 24, 5 (2017), 175-183.
- Yanlin Li, Jonathan M. McCune, and Adrian Perrig. 2011. VIPER: Verifying the Integrity of PERipherals' Firmware. In 18th ACM Conference on Computer and Communications Security. Association for Computing Machinery, New York, NY, USA, 3-16. https://doi.org/10.1145/2046707.2046711
- Yibin Liao, Ruoyan Cai, Guodong Zhu, Yue Yin, and Kang Li. 2018. Mobilefindr: Function Similarity Identification For Reversing Mobile Binaries. In European Symposium on Research in Computer Security. Springer, 66-83.
- Ulf Lindqvist and Peter G. Neumann. 2017. The Future of the Internet of Things. Commun. ACM 60, 2 (Jan 2017), 26-30. https://doi.org/10.1145/3029589
- Peng Liu, Chunchang Xiang, Xiaohang Wang, Binjie Xia, Yangfan Liu, Weidong Wang, and Qingdong Yao. 2009. A NoC Emulation/Verification Framework. In Sixth International Conference on Information Technology: New Generations. IEEE, 859-864.
- Blake Loring, Duncan Mitchell, and Johannes Kinder. 2017. ExpoSE: Practical Symbolic Execution of Standalone JavaScript. In Proceedings of the 24th ACM SIGSOFT International SPIN Symposium on Model Checking of Software. ACM, New York, NY, USA, 196-199. https://doi.org/10.1145/3092282.3092295
- Aravind Machiry, Eric Gustafson, Chad Spensky, Christopher Salls, Nick Stephens, Ruoyu Wang, Antonio Bianchi, Yung Ryn Choe, Christopher Kruegel, and Giovanni Vigna. 2017. BOOMERANG: Exploiting the Semantic Gap in Trusted Execution Environments. In Proceedings of the 2017 Network and Distributed System Security Symposium.
- Peter S Magnusson, Magnus Christensson, Jesper Eskilson, Daniel Forsgren, Gustav Hallberg, Johan Hogberg, Fredrik Larsson, Andreas Moestedt, and Bengt Werner. 2002. Simics: A Full System Simulation Platform. Computer 35, 2 (2002), 50-58.
- Malcolm. [n.d.].
- Malcolm. https://github.com/idaholab/Malcolm
- James Manyika, Sree Ramaswamy, Somesh Khanna, Hugo Sarrazin, Gary Pinkus, Guru Sethupathy, and Andrew Yaffe. 2015. Digital America: A tale of the haves and have-mores. https://www.mckinsey.com/industries/technology- media-and-telecommunications/our-insights/digital-america-a-tale-of-the-haves-and-have-mores
- Xavi Mendez. [n.d.]. wfuzz. https://github.com/xmendez/wfuzz
- Gaurav Mittal, David Zaretsky, Gokhan Memik, and Prith Banerjee. 2005. Automatic Extraction of Function Bodies From Software Binaries. In Proceedings of the ASP-DAC 2005. Asia and South Pacific Design Automation Conference, 2005., Vol. 2. IEEE, 928-931.
- Harish Mohanan, Perraju Bendapudi, Abishek Kumarasubramanian, Rajesh Jalan, and Ramarathnam Venkatesan. 2012. Function Matching in Binaries. US Patent 8,166,466.
- Mark Mossberg, Felipe Manzano, Eric Hennenfent, Alex Groce, Gustavo Grieco, Josselin Feist, Trent Brunson, and Artem Dinaburg. 2019. Manticore: A User-Friendly Symbolic Execution Framework for Binaries and Smart Contracts. arXiv:cs.SE/1907.03890
- Marius Muench, Dario Nisi, Aurélien Francillon, and Davide Balzarotti. 2018. Avatar 2 : A Multi-Target Orchestration Platform. In Workshop on Binary Analysis Research, colocated with Network and Distributed Systems Security Symposium, San Diego, USA. San Diego, UNITED STATES. http://www.eurecom.fr/publication/5437
- Marius Muench, Jan Stijohann, Frank Kargl, Aurelien Francillon, and Davide Balzarotti. 2018. What You Corrupt Is Not What You Crash: Challenges in Fuzzing Embedded Devices. In Network and Distributed System Security Symposium.
- NationalSecurityAgency. [n.d.].
- NationalSecurityAgency/ghidra. https://github.com/NationalSecurityAgency/ghidra/ wiki/Frequently-asked-questions
- Nicholas Nethercote and Julian Seward. 2007. Valgrind: A Framework for Heavyweight Dynamic Binary Instrumen- tation. ACM SIGPLAN Conference on Programming Language Design and Implementation 42, 6 (Jun 2007), 89-100. https://doi.org/10.1145/1273442.1250746
- Netresec. [n.d.]. NetworkMiner. https://www.netresec.com/?page=NetworkMiner
- NetWorkPacketCapture. [n.d.]. NetWorkPacketCapture. https://github.com/huolizhuminh/NetWorkPacketCapture
- Lily Hay Newman. 2018. Facebook Bug Bounty Program Makes Biggest Reward Payout Yet. https://www.wired. com/story/facebook-bug-bounty-biggest-payout/
- NSA. [n.d.].
- Ghidra. https://ghidra-sre.org/
- U.S. Department of Energy. [n.d.]. The Smart Grid. https://www.smartgrid.gov/the_smart_grid/smart_grid.html
- OWASP. [n.d.].
- IoTGoat. https://github.com/OWASP/IoTGoat
- PAGalaxyLab. [n.d.]. vxhunter. https://github.com/PAGalaxyLab/vxhunter
- Dorottya Papp, Zhendong Ma, and Levente Buttyan. 2015. Embedded systems security: Threats, vulnerabilities, and attack taxonomy. In 2015 13th Annual Conference on Privacy, Security and Trust. 145-152. https://doi.org/10.1109/PST. 2015.7232966
- Riyad Parvez, Paul A. S. Ward, and Vijay Ganesh. 2016. Combining Static Analysis and Targeted Symbolic Execution for Scalable Bug-finding in Application Binaries. In 26th Annual International Conference on Computer Science and Software Engineering. IBM Corp., Riverton, NJ, USA, 116-127. http://dl.acm.org/citation.cfm?id=3049877.3049889
- PcapPlusPlus. [n.d.]. PcapPlusPlus. https://github.com/seladb/PcapPlusPlus
- PCem. [n.d.].
- PCem. https://github.com/Anamon/pcem
- Hui Peng, Yan Shoshitaishvili, and Mathias Payer. 2018. T-Fuzz: Fuzzing by Program Transformation. In IEEE Symposium on Security and Privacy. IEEE, 697-710.
- Jannik Pewny, Behrad Garmany, Robert Gawlik, Christian Rossow, and Thorsten Holz. 2015. Cross-Architecture Bug Search in Binary Executables. In IEEE Symposium on Security and Privacy. IEEE, 709-724.
- Richard Phillips and Bonnie Montalvo. 2010. Using emulation to debug control logic code. Proceedings of the 2010 Winter Simulation Conference (2010). https://doi.org/10.1109/wsc.2010.5678904
- PixelCyber. [n.d.].
- Thor. https://github.com/PixelCyber/Thor
- Praetorian. [n.d.]. The Damn Vulnerable Router Firmware Project. https://github.com/praetorian-code/DVRF
- Rui Qiao and R Sekar. 2016. Effective Function Recovery for COTS Binaries Using Interface Verification. Technical Report. Technical report, Secure Systems Lab, Stony Brook University.
- Rui Qiao and R Sekar. 2017. Function Interface Analysis: A Principled Approach For Function Recognition in COTS Binaries. In 47th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. IEEE, 201-212.
- Sanjay Rawat, Vivek Jain, Ashish Kumar, Lucian Cojocar, Cristiano Giuffrida, and Herbert Bos. 2017. VUzzer: Application-aware Evolutionary Fuzzing.. In Network and Distributed Systems Security Symposium, Vol. 17. 1-14.
- Hex Rays. [n.d.]. https://hex-rays.com/products/ida/
- Nilo Redini, Aravind Machiry, Ruoyu Wang, Chad Spensky, Andrea Continella, Yan Shoshitaishvili, Christopher Kruegel, and Giovanni Vigna. 2020. KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware. In Proceedings of the IEEE Symposium on Security and Privacy.
- Corinne Reichert. 2019. Google's Android Bug Bounty Program Will Now Pay Out $1.5 Million. https://www.cnet. com/news/googles-android-bug-bounty-program-will-now-pay-out-1-5-million/
- Samsung. [n.d.].
- Jalangi2. https://github.com/Samsung/jalangi2
- Chase Schultz. [n.d.]. firmware_collection. https://github.com/f47h3r/firmware_collection
- Edward J. Schwartz, Thanassis Avgerinos, and David Brumley. 2010. All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask). In IEEE Symposium on Security and Privacy. IEEE Computer Society, Washington, DC, USA, 317-331. https://doi.org/10.1109/SP.2010.26
- Sen, Koushik. [n.d.]. jCUTE. https://github.com/osl/jcute
- Kostya Serebryany. 2017. OSS-Fuzz-Google's Continuous Fuzzing Service for Open Source Software.
- Saumil Shah. [n.d.].
- The ARM-X Firmware Emulation Framework. https://github.com/therealsaumil/armx
- Asankhaya Sharma. 2014. Exploiting Undefined Behaviors for Efficient Symbolic Execution. In Companion Proceedings of the 36th International Conference on Software Engineering. ACM, New York, NY, USA, 727-729. https://doi.org/10. 1145/2591062.2594450
- Shellphish. 2017. Cyber Grand Shellphish. http://phrack.org/papers/cyber_grand_shellphish.html
- Eui Chul Richard Shin, Dawn Song, and Reza Moazzezi. 2015. Recognizing Functions in Binaries With Neural Networks. In 24th USENIX Security Symposium. 611-626.
- Yan Shoshitaishvili, Ruoyu Wang, Christophe Hauser, Christopher Kruegel, and Giovanni Vigna. 2015. Firmalice - Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware. In Proceedings of the 2015 Network and Distributed System Security Symposium.
- Yan Shoshitaishvili, Ruoyu Wang, Christopher Salls, Nick Stephens, Mario Polino, Audrey Dutcher, John Grosen, Siji Feng, Christophe Hauser, Christopher Kruegel, and Giovanni Vigna. 2016. SoK: (State of) The Art of War: Offensive Techniques in Binary Analysis. In IEEE Symposium on Security and Privacy.
- Sibyl. [n.d.].
- Sibyl. https://github.com/cea-sec/Sibyl
- Sickendick, Karl. [n.d.]. pcode-emulator. https://github.com/kc0bfv/pcode-emulator
- Slack. https://angr.slack.com
- Dawn Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager, Min Gyung Kang, Zhenkai Liang, James Newsome, Pongsin Poosankam, and Prateek Saxena. 2008. BitBlaze: A New Approach to Computer Security Via Binary Analysis. In International Conference on Information Systems Security. Springer, 1-25.
- Prashast Srivastava, Hui Peng, Jiahao Li, Hamed Okhravi, Howard Shrobe, and Mathias Payer. 2019. FirmFuzz: Automated IoT Firmware Introspection and Analysis. Proceedings Of The 2nd International ACM Workshop On Security And Privacy For The Internet-Of-Things (2019), 15-21. https://doi.org/10.1145/3338507.3358616
- SSRFmap. [n.d.].
- SSRFmap. https://github.com/swisskyrepo/SSRFmap
- Nick Stephens, John Grosen, Christopher Salls, Audrey Dutcher, Ruoyu Wang, Jacopo Corbetta, Yan Shoshitaishvili, Christopher Kruegel, and Giovanni Vigna. 2016. Driller: Augmenting Fuzzing Through Selective Symbolic Execution. In Proceedings of the 2016 Network and Distributed System Security Symposium.
- Vinaitheerthan Sundaram, Patrick Eugster, and Xiangyu Zhang. 2010. Efficient Diagnostic Tracing for Wireless Sensor Networks. In Proceedings of the 8th ACM Conference on Embedded Networked Sensor Systems. ACM, 169-182.
- Florin Dragos Tanasache, Mara Sorella, Silvia Bonomi, Raniero Rapone, and Davide Meacci. 2019. Building an emulation environment for cyber security analyses of complex networked systems. Proceedings of the 20th International Conference on Distributed Computing and Networking (2019). https://doi.org/10.1145/3288599.3288618
- Matthew Tancreti, Mohammad Sajjad Hossain, Saurabh Bagchi, and Vijay Raghunathan. 2011. Aveksha: A Hardware- Software Approach for Non-Intrusive Tracing and Profiling of Wireless Embedded Systems. In Proceedings of the 9th ACM Conference on Embedded Networked Sensor Systems. ACM, 288-301.
- Matthew Tancreti, Vinaitheerthan Sundaram, Saurabh Bagchi, and Patrick Eugster. 2015. TARDIS: Software-Only System-Level Record and Replay in Wireless Sensor Networks. In Proceedings of the 14th International Conference on Information Processing in Sensor Networks. ACM, 286-297.
- TCPDump. [n.d.].
- TCPDump. http://www.tcpdump.org/
- Radare2 Team. 2017. Radare2 Book. GitHub.
- Telerik. [n.d.]. Fiddler. https://www.telerik.com/fiddler
- Keen Security Lab Tencent. 2016. Car Hacking Research: Remote Attack Tesla Motors. https://keenlab.tencent.com/ en/2016/09/19/Keen-Security-Lab-of-Tencent-Car-Hacking-Research-Remote-Attack-to-Tesla-Cars/
- Sam Thomas, Flavio Garcia, and Tom Chothia. 2017. HumIDIFy: A Tool for Hidden Functionality Detection in Firmware. 279-300. https://doi.org/10.1007/978-3-319-60876-1_13
- Michael F. Thompson and Timothy Vidas. 2018. CGC monitor: A vetting system for the DARPA cyber grand challenge. https://calhoun.nps.edu/handle/10945/59209
- Brian Van Leeuwen, Vincent Urias, John Eldridge, Charles Villamarin, and Ron Olsberg. 2010. Cyber security analysis testbed: Combining real, emulation, and simulation. In 44th Annual 2010 IEEE International Carnahan Conference on Security Technology. 121-126. https://doi.org/10.1109/CCST.2010.5678720
- Sebastian Vasile, David Oswald, and Tom Chothia. 2019. Breaking All the Things-A Systematic Survey of Firmware Extraction Techniques for IoT Devices. In Smart Card Research and Advanced Applications, Begül Bilgin and Jean- Bernard Fischer (Eds.). Springer International Publishing, Cham, 171-185.
- Marek Vasut. 2017. Adding New Architecture to QEMU. https://events17.linuxfoundation.org/sites/events/files/ slides/ossj-2017.pdf
- Trygve Vea. [n.d.]. firmwaredb. https://github.com/kvisle/firmwaredb
- Vector 35. [n.d.].
- Binary Ninja. https://binary.ninja/
- John Viega and Hugh Thompson. 2012. The State of Embedded-Device Security (Spoiler Alert: It's Bad). IEEE Symposium on Security and Privacy 10, 5 (Sep 2012), 68-70. https://doi.org/10.1109/MSP.2012.134
- Sebastian Vogl, Robert Gawlik, Behrad Garmany, Thomas Kittel, Jonas Pfoh, Claudia Eckert, and Thorsten Holz. 2014. Dynamic Hooks: Hiding Control Flow Changes Within Non-Control Data. In 23rd USENIX Security Symposium. 813-328.
- Ruoyu Wang, Yan Shoshitaishvili, Antonio Bianchi, Machiry Aravind, John Grosen, Paul Grosen, Christopher Kruegel, and Giovanni Vigna. 2017. Ramblr: Making Reassembly Great Again. In Proceedings of the 2017 Network and Distributed System Security Symposium.
- Xiajing Wang, Rui Ma, Bowen Dou, Zefeng Jian, and Hongzhou Chen. 2018. OFFDTAN: A New Approach of Offline Dynamic Taint Analysis for Binaries. Security and Communication Networks 2018 (2018), 13. 10.1155/2018/7693861
- Kayla Wiles. 2019. First all-digital nuclear reactor system in the U.S. installed at Purdue Univer- sity. https://www.purdue.edu/newsroom/releases/2019/Q3/first-all-digital-nuclear-reactor-control-system-in- the-u.s.-installed-at-purdue-university.html
- Wireshark. [n.d.].
- Wireshark. https://www.wireshark.org/
- Dongpeng Xu, Jiang Ming, and Dinghao Wu. 2017. Cryptographic Function Detection in Obfuscated Binaries Via Bit-Precise Symbolic Loop Mapping. In IEEE Symposium on Security and Privacy. IEEE, 921-937.
- Hongfa Xue, Shaowen Sun, Guru Venkataramani, and Tian Lan. 2019. Machine Learning-Based Analysis of Program Binaries: A Comprehensive Study. IEEE Access 7 (2019), 65889-65912.
- Seung Jei Yang, Jung Ho Choi, Ki Bom Kim, and Taejoo Chang. 2015. New Acquisition Method Based on Firmware Update Protocols for Android Smartphones. Digital Investigation 14 (2015), S68 -S76. https://doi.org/10.1016/j.diin. 2015.05.008 The Proceedings of the Fifteenth Annual DFRWS Conference.
- Miao Yu, Jianwei Zhuge, Ming Cao, Zhiwei Shi, and Lin Jiang. 2020. A Survey of Security Vulnerability Analysis, Discovery, Detection, and Mitigation on IoT Devices. Future Internet 12, 2 (Feb 2020), 27. https://doi.org/10.3390/ fi12020027
- Insu Yun, Sangho Lee, Meng Xu, Yeongjin Jang, and Taesoo Kim. 2018. QSYM: A Practical Concolic Execution Engine Tailored for Hybrid Fuzzing. In 27th USENIX Security Symposium. 745-761.
- Jonas Zaddach, Luca Bruno, AurÃľlien Francillon, and Davide Balzarotti. 2014. Avatar: A Framework to Support Dynamic Security Analysis of Embedded Systems' Firmwares. In Network and Distributed Systems Security Symposium. https://doi.org/10.14722/ndss.2014.23229
- Jonas Zaddach, Anil Kurmus, Davide Balzarotti, Erik-Oliver Blass, Aurélien Francillon, Travis Goodspeed, Moitrayee Gupta, and Ioannis Koltsidas. 2013. Implementation and Implications of a Stealth Hard-Drive Backdoor. In Proceedings of the 29th Annual Computer Security Applications Conference. Association for Computing Machinery, New York, NY, USA, 279-288. https://doi.org/10.1145/2523649.2523661
- Ruijin Zhu, Yu-an Tan, Quanxin Zhang, Yuanzhang Li, and Jun Zheng. 2016. Determining Image Base of Firmware for ARM Devices by Matching Literal Pools. Digital Investigation 16 (2016), 19 -28. https://doi.org/10.1016/j.diin. 2016.01.002
- Ruijin Zhu, Baofeng Zhang, Junjie Mao, Quanxin Zhang, and Yu-an Tan. 2017. A Methodology for Determining the Image Base of ARM-Based Industrial Control System Firmware. International Journal of Critical Infrastructure Protection 16 (2017), 26 -35. https://doi.org/10.1016/j.ijcip.2016.12.002