[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1PfJcTUPjNRO5g0KYrQX78hzi1CYbEP_e7vmKThUB3w":3},{"slug":4,"title":5,"summary":6,"category":7,"author":10,"image_url":11,"image_thumb_url":11,"published_at":12,"updated_at":13,"body_html":14,"keywords":15,"reading_time_minutes":16,"related_articles":17,"related_course":50,"related_specialty":10},"hackeando-la-memoria-en-microsoft-windows-con-readprocessmemory-en-tiempo-real-poc","Hackeando la memoria de Windows en tiempo real (POC).","OllyDbg es un depurador desarrollado en ensamblador para sistemas operativos Microsoft Windows. Pone especial énfasis en el análisis del código binario.",{"slug":8,"name":9},"forense","Forense ",null,"https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBZ1FPIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--5188f76d2645f1d220342b74b090b58bdbbed47f\u002Fshutterstock_1029821197.jpg","2016-07-20T23:22:58-04:00","2026-10-26T07:33:01-03:00","\u003Cp>Hola mi nombre es Alejandro, antiguamente ya había estado trabajando con framework y otras herramientas que permiten la \u003Cspan>lectura de procesos\u003C\u002Fspan> y \u003Cspan>dump de memoria\u003C\u002Fspan>, hace unos días atrás leí sobre una herramienta de hacking que podía obtener \u003Cspan>datos del usuario en tiempo de ejecución\u003C\u002Fspan>, esto lo hace a través de la \u003Cspan>WinAPI\u003C\u002Fspan> y específicamente con  \u003Cspan>Windows function ReadProcessMemory(),\u003C\u002Fspan> me gusta bastante \u003Cspan>C\u003C\u002Fspan> y sus derivados como \u003Cspan>C#\u003C\u002Fspan> porque me permiten poder escarbar en el sistema en sus \u003Cspan>registró\u003C\u002Fspan>, \u003Cspan>procesos\u003C\u002Fspan>, \u003Cspan>files\u003C\u002Fspan>, \u003Cspan>red\u003C\u002Fspan>(\u003Cspan>sniffer\u003C\u002Fspan>), etc, considero que es especial para programar mis \u003Cspan>propias ideas\u003C\u002Fspan> y descubrimientos \u003Cspan>Hacking\u002FForensic\u003C\u002Fspan> interactuando directamente con el sistema.\u003C\u002Fp>\r\n\u003Cp>Para leer lo que un proceso tiene en memoria he programado las siguientes líneas en \u003Cspan>C#:\u003C\u002Fspan>\u003C\u002Fp>\r\n\u003Cp>Primero obtenemos la lista de procesos para luego identificar el name y ID del proceso que quiero leer en memoria:\u003C\u002Fp>\r\n\u003Cp>\u003Cimg class=\"img-responsive\" src=\"https:\u002F\u002Flh6.googleusercontent.com\u002FivgA5w9J4Kcjn93uWpufn3myZzASrlZNXwxg4UhhnOtbaLq0QPGjL7jJG0_BKnUkZMPBZ80NPqmdh5YzoAR7xPQktY5J65SDLDmRqL2ST2HdKMgwmQLpXmRI_ASXSLxz6vVMdxuPT6GnQkwYPw\">\u003C\u002Fp>\r\n\u003Cp> \u003C\u002Fp>\r\n\u003Cp>Copy paste del code:\u003C\u002Fp>\r\n\u003Cpre>\u002F*\u003Cbr># Title: GetProcessId (POC)\u003Cbr># Date: 19\u002F07\u002F2016\u003Cbr># Author: José Alejandro Gago\u003Cbr># Tested on: Windows 7 x64 SP1\u003Cbr>*\u002F\u003Cbr>using System;\u003Cbr>using System.Diagnostics;\u003Cbr>using System.ComponentModel;\u003Cbr>namespace GetProcessId\u003Cbr>{\u003Cbr>    class ProcessID{\u003Cbr>        void Runningprocesses(){\u003Cbr>            \u002F\u002F Obteniendo todos los procesos e IDs del Sistema.\u003Cbr>            try {\u003Cbr>                Process[] localAll = Process.GetProcesses();\u003Cbr>                foreach (Process mp in localAll){\u003Cbr>                    Console.WriteLine(\"Process Name : {0}\", mp.ProcessName);\u003Cbr>                    Console.WriteLine(\"Process ID   : {0}\", mp.Id);\u003Cbr>                    Console.WriteLine(\"Windows Title: {0}\\n\", mp.MainWindowTitle);\u003Cbr>                }\u003Cbr>            }\u003Cbr>            catch (Exception ex){\u003Cbr>                Console.Write(\"{0}\", ex);\u003Cbr>            }\u003Cbr>            finally {\u003Cbr>                Console.ReadKey();\u003Cbr>            }\u003Cbr>        }\u003Cbr>        static void Main(){\u003Cbr>            ProcessID myProcess = new ProcessID();\u003Cbr>            myProcess.Runningprocesses();\u003Cbr>        }\u003Cbr>    }\u003Cbr>}\u003C\u002Fpre>\r\n\u003Cp> \u003C\u002Fp>\r\n\u003Cp>Para esta prueba utilizaré \u003Cspan>Visual Studio Code\u003C\u002Fspan> por lo cual ejecutará y escribiré el texto que después quiero identificar en memoria.\u003C\u002Fp>\r\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Flh4.googleusercontent.com\u002FrLnnZKOr-rwnVr7apVTOrKS47ys4tAINX_bkkhssLDqTPC_Lv2uqc6VgT-dCweECv_2PBdZvRZIJUM13v953Iqy0ORZuMdPEoNF9NCaUOcSU89ANRn9RNvZUF8vzFUvmIBWu4Cmlj6Xs7W5ZRQ\">\u003C\u002Fp>\r\n\u003Cp>\u003Cem>Para esto utilizaremos \u003Cspan>OllyDBG\u003C\u002Fspan>.\u003C\u002Fem>\u003C\u002Fp>\r\n\u003Cp> \u003C\u002Fp>\r\n\u003Cp>\u003Cspan>OllyDbg\u003C\u002Fspan> es un depurador desarrollado en \u003Cspan>ensamblador\u003C\u002Fspan> para sistemas operativos \u003Cspan>Microsoft Windows\u003C\u002Fspan>. Pone especial énfasis en el análisis del \u003Cspan>código binario, Traza registros, reconoce procedimientos, llamadas a las API, switches, tablas, constantes y strings\u003C\u002Fspan>, así como localiza rutinas de archivos objeto y de bibliotecas.\u003C\u002Fp>\r\n\u003Cp>OllyDbg es frecuentemente usado para la \u003Cspan>ingeniería inversa\u003C\u002Fspan> de programas. Es usado por crackers para crackear software hecho por otros desarrolladores. Es a menudo la herramienta primaria para cracking e ingeniería inversa debido a su facilidad de uso y disponibilidad. [ Fuente: \u003Ca href=\"https:\u002F\u002Fes.wikipedia.org\u002Fwiki\u002FOllyDbg\">Wikipedia\u003C\u002Fa> ]\u003C\u002Fp>\r\n\u003Cp>Abrimos OllyDBG.\u003C\u002Fp>\r\n\u003Cp>File &gt; Attach y localizamos el proceso, luego abrimos memory map Alt+M y finalmente Binary Search Ctrl+B.\u003C\u002Fp>\r\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002FUkxunxWR0LHtiiYWcZA4QjMf_6nl12Jbe0VnmPerHuw5Ukh7rizFk5LPCr8jzabMlKylzB2a04Jwg4vgjYTHgS1pdTBe6ZsjU_Y9XFDISGwzPXRcS2wArO-PKCR0_B1DTqaWmgXEJ6y5NGArTg\" width=\"489\" height=\"230\">\u003Cbr>\u003Cbr>\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002FXR-NTPEEjr8kWMwZ6qPgCFWd13UrMgt_zHIilcvcpd2aoieieEacSbIPxiNjMHW1cDjr2xDM_jAfzTDUTmxurW5zm90WZIqdYr4908hDM1wcKrJoFt3AnHVA5mhw7X9VExncpF_BOFe8_dWREQ\" width=\"483\" height=\"207\">\u003Cbr>\u003Cbr>\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002FCB__9RDDv2bjTcRlMpJPxjLv6CQbLIrNjgfiyivmvrNHmxhCbC3YzB6hXIikFsCPi6UQDGc3Fi9nbiJYb7TJ6Ly619p4qGqFww-6rf2LnZweKfeBwf_v6Sx8cLAcTmME8b2tXLgWi-4uFiVmTw\" width=\"377\" height=\"214\">\u003Cbr>\u003Cbr>\u003C\u002Fp>\r\n\u003Cp>En este último escribimos el string que estamos buscando y nos mostrará el Dump o volcado de memoria:\u003C\u002Fp>\r\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002F46RJa_Ar6-DT9Da7n2ZxDXE6ZRAOO289Cj8W0QA636GiFItQzKGr8QVt1UhY9wapBwEhJzJox3Tx5H0arN3MDu59G3tXRO_IbdgbIYr5FtZPK7cpao9rtdSpDeEap_V9l2YzT2xVOVpIDOHRsg\" width=\"480\" height=\"515\">\u003C\u002Fp>\r\n\u003Cp>Esta es la dirección de memoria a la cual le hare lectura mediante programación.\u003C\u002Fp>\r\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002F2Knwy2h3XsdvI_W2XphnctgcnykZUbZxGJ66ggOrmloMremfq9PpGcjcJwFlQQPmhqn_JX0GxI1Lw7pVFKexNt8a-JyufIzcCTUL0gDxExTeLKchjbcvZGAyLJY4B3GKHY5fwDezsLQFEDfeig\" width=\"589\" height=\"360\">\u003C\u002Fp>\r\n\u003Cp>Ahora es cuando usamos nuestra tool (El Source code que programe al principio de esta publicación) esta nos dará el nombre del proceso el id y el titulo los cuales usaremos para alimentar el siguiente Source code para leer lo que contiene en memoria el proceso.\u003C\u002Fp>\r\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002FlYuXd2vW-xH0BUE84l1tNQLARVJAnmj6vw8N_RpQaNgsB5LSzgt0UBaMmLbKMe6FJg-G7blsxt6TJ50KHT2sVqLajr5Y83TqKj4jaWode_GDC--pvxyFHAa19CyA5yYjT8lvV8no5sOMYhVTnQ\" width=\"380\" height=\"373\">\u003C\u002Fp>\r\n\u003Cp>Para leer el valor de la dirección de memoria\u003Cbr>\u003Cbr>\u003C\u002Fp>\r\n\u003Cpre>0x0800A478\u003C\u002Fpre>\r\n\u003Cp>que capture con OllyDbg importo 2 funciones del\u003Cbr>\u003Cbr>\u003C\u002Fp>\r\n\u003Cpre>kernel32.dll\u003C\u002Fpre>\r\n\u003Cul>\r\n\u003Cli>\r\n\u003Cp>OpenProcess ()\u003C\u002Fp>\r\n\u003C\u002Fli>\r\n\u003Cli>\r\n\u003Cp>ReadProcessMemory ()\u003C\u002Fp>\r\n\u003C\u002Fli>\r\n\u003C\u002Ful>\r\n\u003Cp>Al abrir el proceso, específico una constante de acceso de lectura de la memoria.\u003Cbr>\u003Cbr>\u003C\u002Fp>\r\n\u003Cpre>const int ProcessRead = 0x0010;\u003C\u002Fpre>\r\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Flh5.googleusercontent.com\u002F-Snfch-53QdX7OvxkrKVYAfJh1Uy7LhIWBJdmytOyIRwzX1Cax3gvS6oolbkKsv-s5_hX4nkX6V9dW7pAwM3vpMte0lB8yvJzIhiHDDRHpak8lty8XIxkmbqjOMZ0CYyruhLyz-enuBXzuTDBQ\" width=\"589\" height=\"364\">\u003C\u002Fp>\r\n\u003Cp>Copy pase del code:\u003C\u002Fp>\r\n\u003Cpre>using System;\u003Cbr>using System.Diagnostics;\u003Cbr>using System.Runtime.InteropServices;\u003Cbr>using System.Text;\u003Cbr>public class MemoryRead{\u003Cbr>    \u002F*\u003Cbr>    Para leer el valor de la dirección de memoria 0x0800A478\u003Cbr>    importo 2 funciones del kernel32.dll.\u003Cbr>    1.- OpenProcess ()\u003Cbr>    2.- ReadProcessMemory ()\u003Cbr>    *\u002F\u003Cbr>    [DllImport(\"kernel32.dll\")]\u003Cbr>    public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);\u003Cbr>    [DllImport(\"kernel32.dll\")]\u003Cbr>    public static extern bool ReadProcessMemory(int hProcess, int lpBaseAddress, byte[] lpBuffer, int dwSize, ref int lpNumberOfBytesRead);\u003Cbr>      \u002F\u002F Al abrir el proceso, especifico una constante de acceso de lectura de la memoria.\u003Cbr>    const int ProcessRead = 0x0010;\u003Cbr>    public static void Main(){\u003Cbr>        string name = \"code\";\u003Cbr>        int id = 8200;\u003Cbr>        Process process = Process.GetProcessesByName(name)[0];\u003Cbr>        IntPtr processHandle = OpenProcess(ProcessRead, false, id);\u003Cbr>        int bytesRead = 0;\u003Cbr>        byte[] buffer = new byte[44]; \u002F\u002F'Alejandro was here 3:)' toma 22*2 bytes debido a Unicode\u003Cbr>        \u002F* \u003Cbr>           0x0800A478 es la dirección donde encontré la cadena\u003Cbr>           Se reemplaza por la dirección que se encuentra en tiempo de ejecución\u003Cbr>        *\u002F\u003Cbr>        ReadProcessMemory((int)processHandle, 0x0800A478, buffer, buffer.Length, ref bytesRead);\u003Cbr>        Console.WriteLine(\" (\" + bytesRead.ToString() + \"bytes) - Lectura de memoria : \" + Encoding.Unicode.GetString(buffer));\u003Cbr>        Console.ReadKey();\u003Cbr>    }\u003Cbr>}\u003C\u002Fpre>\r\n\u003Cp>Ejecutamos nuestra segunda tools la cual pasamos los parámetros y esta nos devuelve efectivamente la lectura del proceso code.exe con ID: 8200.\u003C\u002Fp>\r\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002F8jvzh0t15kn37a7GpTcSzECksoHqIwWOThiQXlAm4hxfzseEJBsw5HOv8yS7s_Wtw0h3broOlQNQk9Zu-JzYjUq27oSxbwrxBYQz3RJ76fwbjRVWh9Aho-xW0BPdu9Un8QlPDFSj1FPjwEIDDg\" width=\"533\" height=\"266\">\u003C\u002Fp>\r\n\u003Cp>Para finalizar esta prueba de concepto (POC) teórica practica la pregunta es:\u003C\u002Fp>\r\n\u003Ch3>¿Para qué nos sirve?\u003C\u002Fh3>\r\n\u003Cp>Nos sirve para múltiples cosas como por ejemplo desarrollar nuestra propia herramienta para análisis de memoria, poder orientar esto a la investigación o forensic.\u003C\u002Fp>\r\n\u003Ch3>¿Dónde se puede implementar esto?\u003C\u002Fh3>\r\n\u003Cp>Como ya antes mencione, se puede implementar en herramientas ahora la forma positiva o negativa dependerá del programador y el usuario, puede implementarse en una herramienta espía que capture datos personales del usuario en tiempo real y luego sacar estos datos remotamente como también una herramienta de investigación para descubrir lo que queramos.\u003C\u002Fp>\r\n\u003Ch4>\u003Cspan> \u003C\u002Fspan>\u003C\u002Fh4>","readprocessmemory, microsoft",5,[18,30,42],{"slug":19,"title":20,"summary":21,"category":22,"author":23,"image_url":27,"image_thumb_url":27,"published_at":28,"updated_at":29},"escalamiento-de-privilegios-en-linux","Shell reverse php en Linux con Burpsuite.","Un atacante puede hacer uso de formularios no sanitizados para hacer cargas de Shell, y así poder ejecutar comandos remotos desde su equipo a un servidor.",{"slug":8,"name":9},{"username":24,"name":25,"avatar_url":26},"user-1543237612","Cristian Jose Acuña  Ramirez","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaUFQIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--c84d5840f618ed711f6d776d0a8e54daa3f13bbe\u002F6e76f75b-b5b8-49f8-8b6a-73d757ad7c65.jpg","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBcDhSIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--0b47bc32b6609a2fc9627f5c05f4dfc2673a70ea\u002Ffondo.png","2019-12-26T18:41:07-03:00","2026-10-26T16:41:36-03:00",{"slug":31,"title":32,"summary":33,"category":34,"author":35,"image_url":39,"image_thumb_url":39,"published_at":40,"updated_at":41},"hoja-de-trucos-de-metasploit","Hoja de trucos de Metasploit","El Proyecto Metasploit es un proyecto de seguridad informática que proporciona información sobre vulnerabilidades y ayuda en el desarrollo de pruebas de penetración y firmas IDS.Metasploit es una herramienta popular utilizada por los expertos de Pentest.",{"slug":8,"name":9},{"username":36,"name":37,"avatar_url":38},"Omar_veliz","Omar Jacobo Muñoz Veliz","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBdmdGIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--de6eb458d07377fb9d25e6ed92e1917f274c8cdb\u002Fprofile.jpg","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBckVPIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b24d5e96299a9854217f571bce650edc5671dafa\u002FMetasploit.png","2019-02-28T23:29:33-03:00","2026-10-26T18:19:15-03:00",{"slug":43,"title":44,"summary":45,"category":46,"author":10,"image_url":47,"image_thumb_url":47,"published_at":48,"updated_at":49},"obteniendo-las-cuentas-cifradas-con-analisis-forense-de-memoria-lastpass","Obteniendo las cuentas cifradas con análisis forense de memoria. LastPass","Esta publicación se me ocurrió debido a que esta semana leí la noticia PSA: LastPass Does Not Encrypt Everything In Your Vault básicamente LastPass no está cifrando todos los datos del usuario\r\nLastPass es una de las plataformas más utilizadas para almacenar nuestras cuentas de usuario y contraseñas y poder acceder a ellas siempre que lo necesitemos.",{"slug":8,"name":9},"https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaUlPIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--e078e65ff3fe8081783f3d2264b8274e033f9f9e\u002Fshutterstock_1159844176.jpg","2017-02-21T22:51:36-03:00","2026-10-26T18:56:20-03:00",{"slug":51,"title":52,"summary":53,"level":54,"specialty":10,"category":55,"instructor":56,"image_url":60,"image_thumb_url":60,"duration_seconds":61,"lessons_count":62,"students_count":63,"is_free":64,"coming_soon":64,"updated_at":65},"introduccion-al-computo-forense","Introducción al cómputo forense","Aprende fundamentos teóricos y prácticos del cómputo forense.","Basicos",{"slug":8,"name":9},{"username":57,"name":58,"avatar_url":59},"pacopadilcyber","Juan Francisco Padilla Suaste","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBc3dKIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--46767f3afdbcf97d2d7ce065e1328ae065a2a55b\u002Fdownload.jpeg","https:\u002F\u002Fapi.backtrackacademy.com\u002Frails\u002Factive_storage\u002Fblobs\u002Fredirect\u002FeyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBandOIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--64509000b445be1b465f949fb18971f07c458110\u002FAn-forense-pequen%CC%83a2.png",21670,32,1781,false,"2025-02-15T00:32:05-03:00"]