backdooring your server through its bmc the hpe ilo4 case
play

Backdooring your server through its BMC : the HPE iLO4 case Fabien - PowerPoint PPT Presentation

Backdooring your server through its BMC : the HPE iLO4 case Fabien Prigaud, Alexandre Gazet & Jofgrey Czarny Rennes, June 13-15 , 2018 Outline Introduction Previous works Firmware security A fjrmware backdoor Conclusion 1 HP


  1. Backdooring your server through its BMC : the HPE iLO4 case Fabien Périgaud, Alexandre Gazet & Jofgrey Czarny Rennes, June 13-15 , 2018

  2. Outline Introduction Previous works Firmware security A fjrmware backdoor Conclusion 1

  3. HP Integrated Lights-Out ( iLO ) • Baseboard Management Controller ( BMC ) embedded in most of HP servers for more than 10 years. Figure 1: Directly integrated on the server’s motherboard This talk only concerns iLO version 4 (last version until mid-2017) found on generations HP ProLiant Gen8 and Gen9 . Analyzes were more specifjcally performed on versions 2.44 et 2.50 of iLO4 . 2

  4. Hardware level (1/2) Standalone system : • Dedicated ARM processor: GLP/Sabine architecture • Firmware stored on a NAND fmash chip • Dedicated RAM chip • Dedicated network interface • Full operating system and applicative image, running as soon as the server is powered. 3

  5. Hardware level (2/2) iLO is directly connected to the PCI-Express bus. 4

  6. Theory Source: Managing HP servers through fjrewalls with Insight Software 1 1 ftp://ftp.hp.com/pub/c-products/servers/management/hpsim/hpsim-53-managing-firewalls.pdf 5

  7. Pratice 6

  8. Outline Introduction Previous works Firmware security A fjrmware backdoor Conclusion 7

  9. Previous works - Demo Demo 8

  10. Methodology • Firmware update fjle format analysis • Extraction of its components: bootloader, kernel, userland image, signatures, etc. • Kernel Integrity analysis • Understanding of the memory layout of the userland modules (equivalent of processes) • Analysis of the web administration interface • Total time of the study, approximately 5 man-months Publication and tooling • https://github.com/airbus-seclab/ilo4_toolbox 9 • https://recon.cx/2018/brussels/talks/subvert_server_bmc.html

  11. Achievements One critical vulnerability identifjed • CVE-2017-12542 , CVSSv3 9.8 • Fixed in iLO 4 version 2.53 (buggy) and 2.54 Full server compromise • Arbitrary code execution in the context of the web server • iLO to host attack 10 • Authentication bypass and remote code execution

  12. Explications Vulnerability located in the web server • Handling of HTTP line by line • Many uses of C string handling manipulation functions: • strstr() • strcmp() • Handling strings in C is complex and error-prone 11 • sscanf()

  13. How to properly use sscanf() ? 9 } 15 sscanf(http_header , "%*s %s", https_connection ->connection); 14 { 13 else if ( !strnicmp(request, http_header , "Connection:", 0xBu) ) 12 } 11 handle_authorization_credentials(method, encoded_credentials); 10 sscanf(http_header , "%*s %15s %16383s", method, encoded_credentials); { 1 8 else if ( !strnicmp(request, http_header , "Authorization:", 0xEu) ) 7 } 6 state_set_content_length(global_struct_ , content_length); 5 sscanf(http_header , "%*s %d", &content_length); 4 content_length = 0; 3 { 2 else if ( !strnicmp(request, http_header , "Content-length:", 0xFu) ) 12

  14. • Overwriting the boolean localConnection : bypass of the REST API Bufger overfmow } • Web server working bufger at a fjxed address • No NX , no ASLR • Overwriting the vtable pointer: arbitrary code execution curl -H "Connection: AAAAAAAAAAAAAAAAAAAAAAAAAAAAA" :) authentication Double cheese ! 0xB8: void *vtable; The vulnerability allows to overfmow the connection bufger of an https_connection ... 0x28: char localConnection; ... 0x0C: char connection[0x10]; ... struct https_connection { object. 13

  15. Bufger overfmow } • Web server working bufger at a fjxed address • No NX , no ASLR • Overwriting the vtable pointer: arbitrary code execution curl -H "Connection: AAAAAAAAAAAAAAAAAAAAAAAAAAAAA" :) authentication • Overwriting the boolean localConnection : bypass of the REST API Double cheese ! 0xB8: void *vtable; The vulnerability allows to overfmow the connection bufger of an https_connection ... 0x28: char localConnection; ... 0x0C: char connection[0x10]; ... struct https_connection { object. 13

  16. Bufger overfmow } • Web server working bufger at a fjxed address • No NX , no ASLR • Overwriting the vtable pointer: arbitrary code execution curl -H "Connection: AAAAAAAAAAAAAAAAAAAAAAAAAAAAA" :) authentication • Overwriting the boolean localConnection : bypass of the REST API Double cheese ! 0xB8: void *vtable; The vulnerability allows to overfmow the connection bufger of an https_connection ... 0x28: char localConnection; ... 0x0C: char connection[0x10]; ... struct https_connection { object. 13

  17. How-to DMA : CHIF module Analysis of a module: CHIF ( Channel Interface ) • Ability to read WHEA information from the host OS • Direct (read) access to the host memory Feature analysis PCI register • Writing to this mapped memory also impact the host memory • Re-implement this mechanism in a shellcode executed in the context of the iLO WWW server 14 • 16MB of the host memory can be mapped into the iLO memory using an unknown

  18. Outline Introduction Previous works Firmware security A fjrmware backdoor Conclusion 15

  19. Battle plan Current status • Full platform compromise • Arbitrary code execution on the iLO and the host • RW primitives to the host memory from the iLO Our objective • Survive host re-installation • Stealthiness Idea iLO fjrmware backdooring 16 • Persistent compromise

  20. Firmware update • Update mechanisms: • Dedicated interface from the web administration panel • From the host, using a dedicated binary • Firmware updates are signed • Integrity checked at two distinct times: • Dynamically, during the update process, by the currently running iLO • At boot-time, no hardware root of trust though 17

  21. Bypass of the update mechanism • Modules can expose services • These services can be instantiated as object SPI service • Direct R/W primitives into the SPI fmash Attack • Invoke the“ SpiService ” from a shellcode injected into the WWW server • Direct overwrite of the fjrmware in the fmash • Bypass of the dynamic integrity check of the fjrmware 18 • “ SpiService ” in the spi module

  22. At this point, a rogue fjrmware is written in the fmash. Attach scheme 19 HTTP Web server SpiService SPI module ILO 4

  23. 20 System boot-time userland 1.check integrity 2.decompress 3.load kernel 1.check integrity 2.decompress 3.load bootloader HW reset ILO4 bootchain

  24. The up-coming compromise Methodology 21 fjrmware update 1.check integrity • Full extraction of the 2.decompress userland 3.load kernel 1.check integrity 2.decompress 3.load bootloader hardware reset iLO4

  25. The up-coming compromise bootloader Methodology 21 • Patch of the fjrmware update 1.check integrity • Full extraction of the 2.decompress userland 3.load kernel 1.check integrity 2.decompress 3.load bootloader hardware reset iLO4

  26. The up-coming compromise bootloader Methodology • Patch of the kernel 21 • Patch of the fjrmware update 1.check integrity • Full extraction of the 2.decompress userland 3.load kernel 1.check integrity 2.decompress 3.load bootloader hardware reset iLO4

  27. The up-coming compromise backdoor Methodology • Flash of the fjrmware update • Rebuild the fjrmware 21 • Addition of a bootloader • Patch of the fjrmware update • Patch of the kernel backdoor 1.check integrity • Full extraction of the 2.decompress userland 3.load kernel 1.check integrity 2.decompress 3.load bootloader hardware reset iLO4

  28. Outline Introduction Previous works Firmware security A fjrmware backdoor Conclusion 22

  29. Target WWW server • High-level network/ HTTP communication primitives • Ability to access the host memory through DMA (demonstrated) • Large binary 23 • Frequently exposed

  30. How to insert the backdoor ? The WWW server handles many pages, like • /html/help.html • /dbug.html • /html/info_blade.html • /html/admin_manage.html Internally represented by structures; a dedicated pointer for each supported HTTP method ( GET , POST , PUT , DELETE , HEAD ). 24

  31. How to insert the backdoor ? (2) • Insert code in an unused space of the WWW server binary • Highjack pointers ( GET et POST ) from a page handler to point to our code 25

  32. Backdoor architecture We want a bidirectional channel between the iLO and the Linux host, through the DMA link. 26

  33. Web server implant Code injection • Insert code in unused space of the binary: content of a downloadable PE fjle Features • R/W primitive in the host physical memory • Re-use web server functions to parse/handle request 27 • Overwrite the GET request handler

  34. • Create a new kernel thread : kthread_create_on_node() / wake_up_process() Linux kernel implant Specifjcations • Allocate physical memory for the communication channel • Retrieve and execute commands • Retrieve commands output Kernel API • Physical memory allocation: kmalloc() / virt_to_phys() • Run commands : call_usermodehelper() • Retrieve their output : redirection into a temp fjle, then kernel_read_file_from_path() 28 • Create a new kernel thread

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend