{"id":810,"date":"2014-06-01T20:21:44","date_gmt":"2014-06-01T20:21:44","guid":{"rendered":"http:\/\/www.gironsec.com\/blog\/?p=810"},"modified":"2014-06-04T01:54:45","modified_gmt":"2014-06-04T01:54:45","slug":"joebp-immuninty-debugger-script","status":"publish","type":"post","link":"https:\/\/www.gironsec.com\/blog\/2014\/06\/joebp-immuninty-debugger-script\/","title":{"rendered":"joebp &#8211; immuninty debugger script"},"content":{"rendered":"<p>Howdy!<\/p>\n<p>I made some changes to my break point script to make it more modular and accept arguments and stuff. I normally steer clear of python due to its agonizingly strict syntax, but I suffered through it for you. I use this script every single day when I first load a piece of malware into the debugger as the breakpoints listed are the ones most commonly used by malware (or most any program really). <\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #DD4422\">&quot;&quot;&quot;JoeBP&quot;&quot;&quot;<\/span>\r\n\r\n<span style=\"color: #888888\"># -*- coding: utf-8 -*-<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">import<\/span> <span style=\"color: #0e84b5; font-weight: bold\">getopt<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">import<\/span> <span style=\"color: #0e84b5; font-weight: bold\">immutils<\/span>\r\n<span style=\"color: #008800; font-weight: bold\">from<\/span> <span style=\"color: #0e84b5; font-weight: bold\">immlib<\/span> <span style=\"color: #008800; font-weight: bold\">import<\/span> <span style=\"color: #333333\">*<\/span>\r\n\r\nAppName <span style=\"color: #333333\">=<\/span> <span style=\"background-color: #fff0f0\">&quot;JoeBP&quot;<\/span>\r\nimm <span style=\"color: #333333\">=<\/span> Debugger()\r\n\r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">usage<\/span>(imm):\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; !joebp -options &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; <\/span><span style=\"background-color: #eeeeee\">%s<\/span><span style=\"background-color: #fff0f0\"> By Joe Giron &gt;|&lt; Gironsec.com &quot;<\/span> <span style=\"color: #333333\">%<\/span> (AppName),focus<span style=\"color: #333333\">=<\/span><span style=\"color: #0000DD; font-weight: bold\">1<\/span>, highlight<span style=\"color: #333333\">=<\/span><span style=\"color: #0000DD; font-weight: bold\">1<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; Description:&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; Sets the proper common breakpoints useful for malware analysis.  &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; Breaks on file operations, registry, processes, threads, dlls, sleeping, memory manipulation, and more. &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; Usage:&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -n    Set network operation breakpoints for winsock and wininet.&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -f    Set file operation breakpoints.&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -p    Set process creation \/ manipulation breakpoints&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -t    Set thread operation \/ creation breakpoints.&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -m    Set memory allocation \/ manipulation breakpoints.&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -s    Set sleep \/ timing breakpoints.&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -r    Set registry operation breakpoints.&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -e    Set all options.&quot;<\/span>)    \r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; &quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>log(<span style=\"background-color: #fff0f0\">&quot; -h    Shows help menu(this).&quot;<\/span>)\r\n    \r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">FileBP<\/span>(imm):\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CreateFileA&quot;<\/span>) <span style=\"color: #888888\">#file stuff<\/span>\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CreateFileW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.WriteFileEx&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.WriteFile&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.MoveFileA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.MoveFileW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.MoveFileExA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.MoveFileExW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CopyFileA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CopyFileW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CopyFileExA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CopyFileExW&quot;<\/span>)        \r\n\r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">ProcBP<\/span>(imm):\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.ExitProcess&quot;<\/span>) <span style=\"color: #888888\">#process stuff<\/span>\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.OpenProcess&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CreateRemoteThread&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.TerminateProcess&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CreateProcessA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CreateProcessW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;CreateProcessWithLogonA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;CreateProcessWithLogonW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetModuleHandleA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetModuleHandleW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetModuleFileNameA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetModuleFileNameW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetModuleHandleExA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetModuleHandleExW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.LoadLibraryA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.LoadLibraryW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.LoadLibraryExA&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.LoadLibraryExW&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetProcAddress&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.LoadModule&quot;<\/span>)\r\n    <span style=\"color: #008800; font-weight: bold\">if<\/span> imm<span style=\"color: #333333\">.<\/span>findModuleByName(<span style=\"background-color: #fff0f0\">&quot;user32.dll&quot;<\/span>):\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;user32.EndTask&quot;<\/span>)\r\n    <span style=\"color: #008800; font-weight: bold\">else<\/span>:\r\n        <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;user32.dll is not loaded and thus, BP&#39;s cannot be set on it&quot;<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">ThreadBP<\/span>(imm):\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.CreateThread&quot;<\/span>) <span style=\"color: #888888\">#thread stuff<\/span>\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.ExitThread&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.TerminateThread&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.ResumeThread&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.SuspendThread&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetThreadContext&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.SetThreadContext&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.ZwResumeThread&quot;<\/span>) \r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.ZwSuspendThread&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.NtQueryInformationThread&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.NtQueueApcThread&quot;<\/span>)\r\n\r\n\r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">MemBP<\/span>(imm):\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.ReadProcessMemory&quot;<\/span>) <span style=\"color: #888888\">#memory stuff<\/span>\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.WriteProcessMemory&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.MapViewOfFile&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.MapViewOfFileEx&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.VirtualProtect&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.VirtualProtectEx&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.VirtualQuery&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.VirtualQueryEx&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.LocalAlloc&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.HeapAlloc&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetProcessHeap&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.ZwUnmapViewOfSection&quot;<\/span>)<span style=\"color: #888888\">#ntdll special<\/span>\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.ZwMapViewOfSection&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.ZwReadVirtualMemory&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.NtCreateSection&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.NtQueryInformationProcess&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.memcpy&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ntdll.memset&quot;<\/span>)\r\n\r\n    \r\n\r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">SleepBP<\/span>(imm):\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.Sleep&quot;<\/span>)  <span style=\"color: #888888\">#sleep stuff<\/span>\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.SleepEx&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.QueryPerformanceCounter&quot;<\/span>)\r\n    imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;kernel32.GetTickCount&quot;<\/span>)\r\n    <span style=\"color: #888888\">#imm.setBreakpointOnName(&quot;kernel32.GetTickCount64&quot;)    # only works on win7<\/span>\r\n\r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">RegBP<\/span>(imm):\r\n    \r\n    <span style=\"color: #008800; font-weight: bold\">if<\/span> imm<span style=\"color: #333333\">.<\/span>findModuleByName(<span style=\"background-color: #fff0f0\">&quot;advapi32.dll&quot;<\/span>):\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegDeleteValueA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegDeleteValueW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegEnumKeyA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegEnumKeyExA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegEnumKeyExW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegEnumKeyW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegEnumValueA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegEnumValueW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegOpenKeyA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegOpenKeyExA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegOpenKeyExW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegOpenKeyW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegQueryMultipleValuesA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegQueryMultipleValuesW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegQueryValueA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegQueryValueExA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegQueryValueExW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegQueryValueW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegReplaceKeyA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegReplaceKeyW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegRestoreKeyA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegRestoreKeyW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSaveKeyA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSaveKeyExA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSaveKeyExW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSaveKeyW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSetValueA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSetValueExA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSetValueExW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegSetValueW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegUnLoadKeyA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;advapi32.RegUnLoadKeyW&quot;<\/span>)\r\n    <span style=\"color: #008800; font-weight: bold\">else<\/span>:\r\n        <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;advapi32.dll is not loaded, thus registry actions cannot be logged for BP&#39;s&quot;<\/span>\r\n        \r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">NetBP<\/span>(imm):\r\n    <span style=\"color: #008800; font-weight: bold\">if<\/span> imm<span style=\"color: #333333\">.<\/span>findModuleByName(<span style=\"background-color: #fff0f0\">&quot;wininet.dll&quot;<\/span>):\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetReadFile&quot;<\/span>)<span style=\"color: #888888\"># http<\/span>\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetOpenUrlA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetOpenUrlW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetOpenA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetOpenW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetCrackUrlA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetCrackUrlW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetQueryOptionW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetQueryOptionA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetQueryDataAvailable&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetReadFile&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetReadFileEx&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetSetOptionW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetSetOptionA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetConnectA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetConnectW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.InternetCloseHandle&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.HttpSendRequestA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.HttpSendRequestW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.HttpOpenRequestA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.HttpOpenRequestW&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.HttpQueryInfoA&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;wininet.HttpQueryInfoW&quot;<\/span>)\r\n    <span style=\"color: #008800; font-weight: bold\">else<\/span>:\r\n        <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;wininet \/ winsock not loaded. Cannot set net breakpoints!&quot;<\/span>\r\n    <span style=\"color: #008800; font-weight: bold\">if<\/span> imm<span style=\"color: #333333\">.<\/span>findModuleByName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.dll&quot;<\/span>):\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.WSAStartup&quot;<\/span>) <span style=\"color: #888888\"># internet<\/span>\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.inet_add&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.inet_ntoa&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.send&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.recv&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.WSASend&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.WSARecv&quot;<\/span>)\r\n        imm<span style=\"color: #333333\">.<\/span>setBreakpointOnName(<span style=\"background-color: #fff0f0\">&quot;ws2_32.WSACleanup&quot;<\/span>)\r\n    <span style=\"color: #008800; font-weight: bold\">else<\/span>:\r\n        <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;wininet \/ winsock not loaded. Cannot set net breakpoints!&quot;<\/span>\r\n\r\n    \r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">DoEmAll<\/span>(imm):\r\n    ProcBP(imm)\r\n    RegBP(imm)\r\n    MemBP(imm)\r\n    ThreadBP(imm)\r\n    FileBP(imm)\r\n    SleepBP(imm)\r\n    NetBP(imm)\r\n\t\r\n<span style=\"color: #008800; font-weight: bold\">def<\/span> <span style=\"color: #0066BB; font-weight: bold\">main<\/span>(args):\r\n    <span style=\"color: #008800; font-weight: bold\">if<\/span> <span style=\"color: #000000; font-weight: bold\">not<\/span> args:\r\n        usage(imm)\r\n    <span style=\"color: #008800; font-weight: bold\">try<\/span>:\r\n        opts, filler <span style=\"color: #333333\">=<\/span> getopt<span style=\"color: #333333\">.<\/span>getopt(args, <span style=\"background-color: #fff0f0\">&quot;nfptmsreh:&quot;<\/span>)\r\n        <span style=\"color: #008800; font-weight: bold\">for<\/span> o,a <span style=\"color: #000000; font-weight: bold\">in<\/span> opts:\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-n&quot;<\/span>:\r\n                NetBP(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;Network operation breakpoints set.&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-f&quot;<\/span>:\r\n                FileBP(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;File Operation breakpoints set.&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-p&quot;<\/span>:\r\n                ProcBP(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;Process creation \/ manipulation breakpoints set.&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-t&quot;<\/span>:\r\n                ThreadBP(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;Thread creation \/ manipulation breakpoints set.&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-m&quot;<\/span>:\r\n                MemBP(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;Memory allocation \/ manipulation breakpoints set.&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-s&quot;<\/span>:\r\n                SleepBP(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;Timing and sleep operations will now be watched.&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-r&quot;<\/span>:\r\n                RegBP(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;Registry accesses will now be hit.&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-e&quot;<\/span>:\r\n                DoEmAll(imm)\r\n                <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;All options set. Have a nice day!&quot;<\/span>\r\n            <span style=\"color: #008800; font-weight: bold\">if<\/span> o <span style=\"color: #333333\">==<\/span> <span style=\"background-color: #fff0f0\">&quot;-h&quot;<\/span>:\r\n                usage(imm)\r\n    <span style=\"color: #008800; font-weight: bold\">except<\/span>:\r\n        usage(imm)\r\n    <span style=\"color: #008800; font-weight: bold\">return<\/span> <span style=\"background-color: #fff0f0\">&quot;&quot;<\/span>\r\n<\/pre>\n<\/div>\n<p>Not a fan of copy \/ paste? Just download it <a href=\"http:\/\/www.gironsec.com\/code\/joebp.py\">here<\/a>.<br \/>\nUntil next time, happy hacking!<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2014\/06\/1397771687215.gif\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2014\/06\/1397771687215.gif\" alt=\"1397771687215\" width=\"450\" height=\"402\" class=\"alignnone size-full wp-image-811\" \/><\/a><\/p>\n<p>One more thing &#8211; in an effort to join the 21st century, this site now has an ipv6 address &#8211; 2001:470:1f06:116::2. Join the botnet!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Howdy! I made some changes to my break point script to make it more modular and accept arguments and stuff. I normally steer clear of python due to its agonizingly strict syntax, but I suffered through it for you. I use this script every single day when I first load a piece of malware into [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts\/810"}],"collection":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/comments?post=810"}],"version-history":[{"count":3,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts\/810\/revisions"}],"predecessor-version":[{"id":814,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts\/810\/revisions\/814"}],"wp:attachment":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/media?parent=810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/categories?post=810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/tags?post=810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}