skip to main content
10.1145/2991079.2991118acmotherconferencesArticle/Chapter ViewAbstractPublication PagesacsacConference Proceedingsconference-collections
research-article

Trace-free memory data structure forensics via past inference and future speculations

Published:05 December 2016Publication History

ABSTRACT

A yet-to-be-solved but very vital problem in forensics analysis is accurate memory dump data type reverse engineering where the target process is not a priori specified and could be any of the running processes within the system. We present ReViver, a lightweight system-wide solution that extracts data type information from the memory dump without its past execution traces. ReViver constructs the dump's accurate data structure layout through collection of statistical information about possible past traces, forensics inspection of the present memory dump, and speculative investigation of potential future executions of the suspended process. First, ReViver analyzes a heavily instrumented set of execution paths of the same executable that end in the same state of the memory dump (the eip and call stack), and collects statistical information the potential data structure instances on the captured dump. Second, ReViver uses the statistical information and performs a word-byword data type forensics inspection of the captured memory dump. Finally, ReViver revives the dump's execution and explores its potential future execution paths symbolically. ReViver traces the executions including library/system calls for their known argument/return data types, and performs backward taint analysis to mark the dump bytes with relevant data type information. ReViver's experimental results on real-world applications are very promising (98.1%), and show that ReViver improves the accuracy of the past trace-free memory forensics solutions significantly while maintaining a negligible runtime performance overhead (1.8%).

References

  1. Ansel, J., Arya, K., and Cooperman, G. DMTCP: Transparent checkpointing for cluster computations and the desktop. In 23rd IEEE International Parallel and Distributed Processing Symposium (Rome, Italy, May 2009). Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Arasteh, A. R., and Debbabi, M. Forensic memory analysis: From stack and code to execution history. digital investigation 4 (2007), 114--125. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Betz, C., 2015. Memparser: Memparser Analysis Tool; available at http://www.dfrws.org/2005/challenge/memparser.shtml.Google ScholarGoogle Scholar
  4. Brumley, D., Jager, I., Avgerinos, T., and Schwartz, E. J. Bap: a binary analysis platform. In Computer aided verification (2011), Springer, pp. 463--469. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Bugcheck, C. Grepexec: Grepping executive objects from pool memory. In Report from the Digital Forensic Research Workshop (DFRWS) (2006).Google ScholarGoogle Scholar
  6. Cadar, C., Dunbar, D., and Engler, D. 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 (Berkeley, CA, USA, 2008), OSDI'08, USENIX Association, pp. 209--224. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Carbone, M., Cui, W., Lu, L., Lee, W., Peinado, M., and Jiang, X. Mapping kernel objects to enable systematic integrity checking. In Proceedings of the 16th ACM conference on Computer and communications security (2009), ACM, pp. 555--565. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Case, A., Cristina, A., Marziale, L., Richard, G. G., and Roussev, V. Face: Automated digital evidence discovery and correlation. digital investigation 5 (2008), S65--S75. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Chen, S., Xu, J., Sezer, E. C., Gauriar, P., and Iyer, R. K. Non-control-data attacks are realistic threats. In Usenix Security (2005), vol. 5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chikofsky, E. J., Cross, J. H., et al. Reverse engineering and design recovery: A taxonomy. Software, IEEE 7, 1 (1990), 13--17. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Cozzie, A., Stratton, F., Xue, H., and King, S. T. Digging for data structures. In OSDI (2008), vol. 8, pp. 255--266. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Dolan-Gavitt, B., Srivastava, A., Traynor, P., and Giffin, J. Robust signatures for kernel data structures. In Proceedings of the 16th ACM conference on Computer and communications security (2009), ACM, pp. 566--577. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Hu, H., Chua, Z. L., Adrian, S., Saxena, P., and Liang, Z. Automatic generation of data-oriented exploits. In 24th USENIX Security Symposium (USENIX Security 15) (2015), pp. 177--192. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Hu, H., Shinde, S., Adrian, S., Chua, Z. L., Saxena, P., and Liang, Z. Data-oriented programming: On the expressiveness of non-control data attacks.Google ScholarGoogle Scholar
  15. Kruegel, C., Robertson, W., Valeur, F., and Vigna, G. Static disassembly of obfuscated binaries. In USENIX security Symposium (2004), vol. 13, pp. 18--18. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Krumins, P. Gnu coreutils cheat sheet. good coders code, great reuse (2012).Google ScholarGoogle Scholar
  17. Kuznetsov, V., Szekeres, L., Payer, M., Candea, G., Sekar, R., and Song, D. Code-pointer integrity. In USENIX Symposium on Operating Systems Design and Implementation (OSDI) (2014). Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Lee, J., Avgerinos, T., and Brumley, D. Tie: Principled reverse engineering of types in binary programs. In NDSS (2011).Google ScholarGoogle Scholar
  19. Lin, Z., Rhee, J., Wu, C., Zhang, X., and Xu, D. Dimsum: Discovering semantic data of interest from un-mappable memory with confidence. In Proc. ISOC Network and Distributed System Security Symposium (2012).Google ScholarGoogle Scholar
  20. Lin, Z., Rhee, J., Zhang, X., Xu, D., and Jiang, X. Siggraph: Brute force scanning of kernel data structure instances using graph-based signatures. In NDSS (2011).Google ScholarGoogle Scholar
  21. Lin, Z., Zhang, X., and Xu, D. Automatic reverse engineering of data structures from binary execution.Google ScholarGoogle Scholar
  22. Luk, C.-K., Cohn, R., Muth, R., Patil, H., Klauser, A., Lowney, G., Wallace, S., Reddi, V. J., and Hazelwood, K. Pin: building customized program analysis tools with dynamic instrumentation. In Acm Sigplan Notices (2005), vol. 40, ACM, pp. 190--200. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Movall, P., Nelson, W., and Wetzstein, S. Linux physical memory analysis. In USENIX Annual Technical Conference, FREENIX Track (2005), pp. 23--32. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Petroni, N. L., Walters, A., Fraser, T., and Arbaugh, W. A. Fatkit: A framework for the extraction and analysis of digital forensic data from volatile system memory. Digital Investigation 3, 4 (2006), 197--210. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Polishchuk, M., Liblit, B., and Schulze, C. W. Dynamic heap type inference for program understanding and debugging. In ACM SIGPLAN Notices (2007), vol. 42, ACM, pp. 39--46. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Ramalingam, G., Field, J., and Tip, F. Aggregate structure identification and its application to program analysis. In Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (1999), ACM, pp. 119--132. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Saltaformaggio, B., Bhatia, R., Gu, Z., Zhang, X., and Xu, D. Guitar: Piecing together android app guis from memory images. In Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (2015), ACM, pp. 120--132. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Saltaformaggio, B., Bhatia, R., Gu, Z., Zhang, X., and Xu, D. Vcr: App-agnostic recovery of photographic evidence from android device memory images. In Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (2015), ACM, pp. 146--157. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Saltaformaggio, B., Gu, Z., Zhang, X., and Xu, D. Dscrete: Automatic rendering of forensic information from memory images via application logic reuse. In 23rd USENIX Security Symposium (USENIX Security 14) (2014), USENIX Association, pp. 255--269. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Schuster, A. Searching for processes and threads in microsoft windows memory dumps. digital investigation 3 (2006), 10--16. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Slowinska, A., Stancescu, T., and Bos, H. Howard: A dynamic excavator for reverse engineering data structures. In NDSS (2011).Google ScholarGoogle Scholar
  32. Song, D., Brumley, D., Yin, H., Caballero, J., Jager, I., Kang, M. G., Liang, Z., Newsome, J., Poosankam, P., and Saxena, P. Bitblaze: A new approach to computer security via binary analysis. In Information systems security. Springer, 2008, pp. 1--25. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Urbina, D., Gu, Y., Caballero, J., and Lin, Z. Sigpath: A memory graph based approach for program data introspection and modification. In Computer Security-ESORICS 2014. Springer, 2014, pp. 237--256.Google ScholarGoogle Scholar
  34. Walls, R. J., Learned-Miller, E. G., and Levine, B. N. Forensic triage for mobile phones with dec0de. In USENIX Security Symposium (2011). Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Walters, A. The volatility framework: Volatile memory artifact extraction utility framework, 2007.Google ScholarGoogle Scholar
  36. Zamfir, C., and Candea, G. Execution synthesis: a technique for automated software debugging. In Proceedings of the 5th European conference on Computer systems (2010), ACM, pp. 321--334. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Zeng, J., Fu, Y., Miller, K. A., Lin, Z., Zhang, X., and Xu, D. Obfuscation resilient binary code reuse through trace-oriented programming. In Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security (2013), ACM, pp. 487--498. Google ScholarGoogle ScholarDigital LibraryDigital Library
  1. Trace-free memory data structure forensics via past inference and future speculations

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Other conferences
      ACSAC '16: Proceedings of the 32nd Annual Conference on Computer Security Applications
      December 2016
      614 pages
      ISBN:9781450347716
      DOI:10.1145/2991079

      Copyright © 2016 ACM

      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]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 5 December 2016

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate104of497submissions,21%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader