reverse engineering and binary exploitation
This commit is contained in:
parent
638dc6c8ed
commit
9f09057a86
|
@ -0,0 +1,11 @@
|
||||||
|
# Resetting Alarms
|
||||||
|
|
||||||
|
Like [shakuganz wrote in his blog](https://shakuganz.com/2021/07/14/hackthebox-hunting-write-up/) an alarm can be reset to a higher value to go off later
|
||||||
|
|
||||||
|
```
|
||||||
|
push 0x3c ; set duration for arg1 of alarm()
|
||||||
|
pop ebx
|
||||||
|
push 0x1b ; alarm systemcall
|
||||||
|
pop eax
|
||||||
|
int 0x80
|
||||||
|
```
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Egg Hunting
|
||||||
|
|
||||||
|
Egg Hunting can be applied if only a few chars are possible to use as shellcode.
|
||||||
|
A tag or egg is an already identified group of bytes in the binary the egg hunter
|
||||||
|
is trying to find.
|
||||||
|
|
||||||
|
## Accessing Virtual Address Space
|
||||||
|
|
||||||
|
Like [shakuganz](https://shakuganz.com/2021/07/14/hackthebox-hunting-write-up/) wrote about, ccessing unallocated memory can be done in the following way
|
||||||
|
```python
|
||||||
|
mem_addr = 0x5FFFFFFF
|
||||||
|
|
||||||
|
if access(mem_addr, 0) == 0x2f:
|
||||||
|
jump_to_next_page()
|
||||||
|
elif value_at(mem_addr) != egg:
|
||||||
|
mem_addr += 1
|
||||||
|
else:
|
||||||
|
print(mem_addr)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
|
||||||
|
Egg hunter can be found in pwntools' `pwnlib.shellcraft`
|
||||||
|
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
* [hick.org](http://www.hick.org/code/skape/papers/egghunt-shellcode.pdf)
|
||||||
|
* [Chaudhary's blog](https://medium.com/@chaudharyaditya/slae-0x3-egg-hunter-shellcode-6fe367be2776)
|
|
@ -0,0 +1,9 @@
|
||||||
|
# Extracting Opcode
|
||||||
|
|
||||||
|
## Extracting from ELF File
|
||||||
|
|
||||||
|
Extracting opcode from an ELF file can be done via the following way
|
||||||
|
|
||||||
|
```sh
|
||||||
|
objdump -d ./payload|grep '[0-9a-f]:'|grep -v 'file'|cut -f2 -d:|cut -f1-6 -d' '|tr -s ' '|tr '\t' ' '|sed 's/ $//g'|sed 's/ /\\x/g'|paste -d '' -s |sed 's/^/"/'|sed 's/$/"/g'
|
||||||
|
```
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Binary Exploitation References
|
||||||
|
|
||||||
|
## Assembler
|
||||||
|
* [Online x86/x64 assembler](https://defuse.ca/online-x86-assembler.htm)
|
||||||
|
|
||||||
|
## Syscalls
|
||||||
|
|
||||||
|
* http://asm.sourceforge.net/intro/hello.html
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Syscalls
|
||||||
|
|
||||||
|
## General
|
||||||
|
|
||||||
|
* [Syscalls in different OSs](http://asm.sourceforge.net/intro/hello.html)
|
||||||
|
|
||||||
|
## Linux Syscalls
|
||||||
|
|
||||||
|
* First point of contact is `/usr/include/asm/unistd_32.h` and `/usr/include/asm/unistd_64.h`
|
||||||
|
|
||||||
|
Manfiles are
|
||||||
|
```
|
||||||
|
2 syscall
|
||||||
|
2 syscalls
|
||||||
|
```
|
||||||
|
|
||||||
|
### 32-Bit
|
||||||
|
|
||||||
|
* [paolostivanin's syscall-table-32bit](https://github.com/paolostivanin/syscall-table-32bit.git) also contains the link to [the overview](https://syscalls32.paolostivanin.com/)
|
||||||
|
|
||||||
|
### 64-Bit
|
||||||
|
|
||||||
|
* [Filippo.io's x64 syscall table](https://filippo.io/linux-syscall-table/)
|
||||||
|
|
||||||
|
### Others As Well
|
||||||
|
|
||||||
|
* [googlesource.com](https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md)
|
|
@ -0,0 +1,8 @@
|
||||||
|
# GDB CheatSheet
|
||||||
|
|
||||||
|
## Cast a register value
|
||||||
|
|
||||||
|
* Cast the content of a register to char
|
||||||
|
```sh
|
||||||
|
p *(char **)$rax
|
||||||
|
```
|
|
@ -1,30 +0,0 @@
|
||||||
# Sigma Rules
|
|
||||||
|
|
||||||
An abstracted yaml configuration setup which can be converted into multiple queries like Splunk, Kibana, Yara etc. ...
|
|
||||||
* [SigmaHQ's repo](https://github.com/SigmaHQ/sigma.git)
|
|
||||||
|
|
||||||
|
|
||||||
## Fields
|
|
||||||
|
|
||||||
A minimal configuration should contain at least the following fields
|
|
||||||
* title
|
|
||||||
* id
|
|
||||||
* status
|
|
||||||
* description
|
|
||||||
* logsource
|
|
||||||
* detection
|
|
||||||
|
|
||||||
Additional fields may be
|
|
||||||
* falsePostivives
|
|
||||||
* levels
|
|
||||||
* tags
|
|
||||||
|
|
||||||
## Transform Modifiers
|
|
||||||
|
|
||||||
A detection selection can be refined through setting a pipe `|` followed by the modifier `contains`, `endswith`, `startswith` and `all`.
|
|
||||||
|
|
||||||
## Tools
|
|
||||||
|
|
||||||
* [sigma-cli](https://github.com/SigmaHQ/sigma-cli)
|
|
||||||
* [pySigma](https://github.com/SigmaHQ/pySigma)
|
|
||||||
* [Uncoder.io](https://uncoder.io/)
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
# Sigma Rules
|
||||||
|
|
||||||
|
An abstracted yaml configuration setup as an universal notation format which can be converted into multiple queries like Splunk, Kibana, Yara etc. ...
|
||||||
|
|
||||||
|
* [SigmaHQ's repo](https://github.com/SigmaHQ/sigma.git)
|
||||||
|
|
||||||
|
Specify IOC or troubleshooting issues in a data format that can be shared and versionized.
|
||||||
|
This specified configuration can be translated to multiple different tools as specific queries.
|
||||||
|
|
||||||
|
* [Rule Creation Guide](https://github.com/SigmaHQ/sigma/wiki/Rule-Creation-Guide)
|
||||||
|
|
||||||
|
## Fields
|
||||||
|
|
||||||
|
A minimal configuration should contain at least the following fields
|
||||||
|
* title
|
||||||
|
* id (UUID)
|
||||||
|
* status
|
||||||
|
* description
|
||||||
|
* logsource
|
||||||
|
* detection
|
||||||
|
* condition
|
||||||
|
|
||||||
|
Additional fields may be
|
||||||
|
* falsePositives
|
||||||
|
* levels
|
||||||
|
* tags
|
||||||
|
|
||||||
|
[![Sigma Fields](https://github.com/SigmaHQ/sigma/blob/master/images/Sigma_Schema.png?raw=true)](https://github.com/SigmaHQ/sigma/blob/master/images/Sigma_Schema.png?raw=true)
|
||||||
|
|
||||||
|
## Filters
|
||||||
|
|
||||||
|
Filter can be used to specify detection
|
||||||
|
```sh
|
||||||
|
File|endswith
|
||||||
|
CommandLine|contains
|
||||||
|
CommandLine|startswith
|
||||||
|
```
|
||||||
|
|
||||||
|
## Transform Modifiers
|
||||||
|
|
||||||
|
A detection selection can be refined through setting a pipe `|` followed by the modifier `contains`, `endswith`, `startswith` and `all`.
|
||||||
|
|
||||||
|
## Tools
|
||||||
|
|
||||||
|
* [sigma-cli](https://github.com/SigmaHQ/sigma-cli)
|
||||||
|
* [pySigma](https://github.com/SigmaHQ/pySigma)
|
||||||
|
* [Uncoder.io](https://uncoder.io/)
|
||||||
|
* [Sigmac](https://github.com/SigmaHQ/sigma/tree/8bb3379b6807610d61d29db1d76f5af4840b8208/tools)
|
|
@ -10,3 +10,9 @@
|
||||||
|
|
||||||
[scdbg](https://github.com/dzzie/SCDBG.git)
|
[scdbg](https://github.com/dzzie/SCDBG.git)
|
||||||
|
|
||||||
|
## Automated Solver
|
||||||
|
|
||||||
|
* [angr](https://docs.angr.io) is a binary analysis tool and comes with an automated solver
|
||||||
|
```sh
|
||||||
|
pip install angr
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue