elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 77
121  Seguridad Informática / Análisis y Diseño de Malware / Re: Dudas sobre API hooking en: 4 Abril 2016, 20:29 pm
Hola de nuevo, siento el doble post, pero lo veo mejor que abrir otro hilo del mismo tema.

En este caso, mi pregunta es, ¿se puede hacer DLL inyection sin DLL?, es decir sin tener que apuntar a un archivo dll para que se cargue en memoria.

Una solución sería compilar las DLL y crear una variable en la app con su contenido en hexadecimal y luego en ejecución copiar esos bytes en un archivo e inyectarla.

Pero seguro existen otros métodos mejores.

Saludos!!.
122  Seguridad Informática / Análisis y Diseño de Malware / Re: Dudas sobre API hooking en: 4 Abril 2016, 16:01 pm
Hola gracias por la respuesta,

He estado haciendo pruebas y funciona, esto esta MUY GUAPO es como mear al SO.

Hasta día de hoy no lo había probado aunque sabía que se podía hacer.

Fácilmente hacer un Form grabber con este nuevo poder XD, solo hay que saber que funciones usa el navegador para hacer las requests la librería donde se encuentra la función y la función en si, nada más me parece.

Es que ví una oferta de 3700€ por un form grabber XD, por eso me intrigué un poco en como sería la idea, la pena que de ingeniería inversa no se mucho, solo ver las librerías que usa y demás, pero no se como detener en el momento que un navegador lanza la request, allí sería solo ver la función y que dependencia tiene, se que hay que hacer pero no como XD, me mirare algo de ollydbg supongo XD.

Saludos y a divertirse!!! ;D ;D ;D ;D
123  Seguridad Informática / Análisis y Diseño de Malware / Dudas sobre API hooking en: 4 Abril 2016, 15:09 pm
Hola a todos, resulta que ayer estuve leyendo sobre este método un buen rato, pero sin embargo hay algo que no logro comprender.

Si bien he conseguido hookear una función para que haga lo que yo quiera (En este caso MessageBoxW), el hook no va más allá de mi aplicación, el hook solo me afecta a mi.

Ya que abro otro programa que ejecuta MessageBoxW y no muestra el mensaje del hook.

Luego ¿para que vale esto si solo afecta a nuestro propio programa, o que paso por alto?.

Continue leyendo este tutorial, que esta muy bien y seguro que todos lo habréis leido:

http://www.codeproject.com/Articles/2082/API-hooking-revealed

Y bueno para ejecutar codigo en otro proceso necesitamos inyectar una DLL al proceso del que queremos manipular una función. Para inyectar una DLL con nuestro código si el proceso al que queremos inyectarla usa User32.dll se puede modificar un registro para que cargue nuestra DLL, sino hay otros métodos...

Suponiendo que hemos conseguido que el programa objetivo cargue nuestra DLL, ahora ¿cómo podemos interceptar una función suya y manipularla?. No lo tengo claro, ¿acaso ahora la DLL debería de hookear la función en cuestión que queremos modificar y ahora ya funcionaría debido a que pertenece al mismo proceso?, ¿en eso consiste?, porque sno no veo claro la relación.

Ejemplo: Si queremos manipular HttpSendRequestW de InternetExplorer desde un proceso externo. Planteamiento: cargar nuestra DLL en iexplorer.exe y nuestra DLL tendría un hook para HttpSendRequestW que al ser ejecutada por iexplorer.exe hookearía la API ejecutando nuestro código en cada llamada a la función. ¿Consiste en eso o como?.

Es que estoy empezando a probar un poco de que va esto.

Saludos.

Puff acabo de inyectarme en chorme.exe y ha sido ORGASMICO, ahora voy a probar a manipular sus funciones con algún hook a una de sus funciones.  A ver si se puede.
124  Foros Generales / Noticias / Re: Movistar cobrará por defecto el exceso de datos móviles en Fusión en: 29 Marzo 2016, 19:33 pm
QUE VERGÜENZA.

Hasta ahora lo que hacían era que al superar el límite navegabas de  con el ancho de banda reducido, ¿y a partir de mayo van a empezar a cobrar 1,5 cent por mega hasta 1 giga 15 euros?.

Y todo esto llega cuando hace un par de meses me dijeron que tenía 2 GB con la nueva tarifa fusión y te das cuenta tras superar uno de que solo tienes 1 GB y navegas lento después, pero vamos que me llega a pasar en mayo y gasto el otro giga pensando que me sale gratis y me clavan 15 euros.

A robar que estamos en España.
125  Comunicaciones / Redes / Duda sobre HTTP y P2P en: 29 Marzo 2016, 17:13 pm
Buenas, me estaba preguntando si es posible a través de un servidor HTTP enlazar dos ordenadores
entre si a través de el, ya que el actuaría como tracker.

La idea no se si funcionaría pero sería que los 2 ordenadores se conectasen a un servidor HTTP y que le manden su puerto, ip pública, e ip privada. Entonces lanzarían peticiones HTTP el uno al otro para comunicarse, también podría utilizar otros protocolos estáticos usando HTTP tunnel.
El único incomveniente que veo de primeras es que el puerto no sabremos cual sería el del cliente, pues en cada petición HTTP el puerto es distinto y va subiendo de uno en uno, sin embargo al ser otra IP cambiará y no se me ocurre manera de predecir el puerto.

Pero necesito saber si es viable, y si funcionaría.

Si es que ambos ordenadores al lanzar connect y usar recv mutuamente sean capaces de conectarse el uno con el otro, la única diferencia con otros tracker sería que utilizarían el protocolo HTTP lo que permitiría pasar sobre el firewall y el router.

También quisiera saber si esto es gracias a una vulnerabilidad de la NAT como ocurre con un tracker TCP orientado a conexión, y a pesar de que he buscado no encuentro la diferencia entre un tracker TCP y UDP, aunque seguiré indagando en ello.

Pues me gustaría crear una P2P que use HTTP como protocolo de encapsulamiento. Por las ventajas que ofrece, ahora el problema es engañar al que sería el servidor, porque ambos ordenadores actuarían como cliente y servidor, ¿pero que puerto abro en el servidor?, y si lo abro tengo que hacer port fordwarding con el router, luego para engañarlo debe de actuar como cliente también.

La única manera que se me ocurre es que ambos lanzarán la peticion a la vez y que recibieran un ACK y que piensen que procede de un servidor y que ese servidor está respondiendo a su petición anterior, entonces este mandaría un ACK al otro diciendo que lo ha recibido el mensaje del otro:

Citar
A-SYN-B ---------------- B-SYN-A

A-ACK-B ---------------- B-ACK-A

A-REQUEST-B ---------------- B-RESPONSE-A

A-RESPONSE-B ---------------- B-REQUEST-A

No se si será posible, pero en la primera interacción cuando mandan los SYN ningún router dejaría pasar el paquete lo cortaría (la menos eso hacen la mayoría de las redes), sin embargo, si en el tracker ponemos una hora minuto y segundo concreta para que manden el SYN y el ACK a la vez, quizás pueda producirse la conexión, lo veo muy dificil, pero me gustaría escuchar más ideas y ver si sería viable.

Un saludo!

Edito: Bueno me pregunto si simplemente A conociendo la IP publica y privada de B, y B teniendo un puerto abierto escuchando que A conoce, si sería capaz A de conectar con B sin necesidad de que le llegue un ACK.. :P
126  Programación / Programación C/C++ / Re: Problema C++ al enlazar en: 25 Marzo 2016, 01:38 am
Jajaja ostis se me olvido leer el código al completo.

Modifica la función promedio y dejala así:

Código
  1. float funcpromedio(int nota1, int nota2, int nota3);

Código
  1. float funcpromedio(int nota1, int nota2, int nota3)
  2. {
  3.    float promedio = 0;
  4.    if(nota1>5)
  5.        cout<<"Aprobado. 1er trimestre"<< endl;
  6.  
  7.        else if(nota1==5||nota1==4)
  8.            cout<<"Regular, desaprobado, puede recuperar. 1er trimestre"<< endl;
  9.  
  10.        else
  11.            cout<<"Aplazado. 1er trimestre"<< endl;
  12.  
  13.    if(nota2>5)
  14.        cout<<"Aprobado. 2do trimestre"<< endl;
  15.  
  16.        else if(nota2==5||nota2==4)
  17.            cout<<"Regular, desaprobado, puede recuperar. 2do trimestre"<< endl;
  18.  
  19.        else
  20.            cout<<"Aplazado. 2do trimestre"<< endl;
  21.  
  22.    if(nota3>5)
  23.        cout<<"Aprobado. 3er trimestre"<< endl;
  24.  
  25.        else if(nota3==5||nota3==4)
  26.            cout<<"Regular, desaprobado, puede recuperar. 3er trimestre"<< endl;
  27.  
  28.        else
  29.            cout<<"Aplazado. 3er trimestre"<< endl;
  30.  
  31.    promedio= (nota1 + nota2 + nota3) / 3;
  32.  
  33.    if(promedio>5)
  34.        cout<<"Alumno aprobado"<<endl;
  35.    else
  36.        cout<<"Alumno desaprobado"<<endl;
  37.  
  38.        return promedio;
  39.  
  40. }
  41.  

De esa manera cuando le pases la nota de los cuatrimestres te devolvera la media, y solo tienes que mostrarla por pantalla, suerte XD.
127  Programación / Programación C/C++ / Re: HTTP multipart/form-data no sube archivo correctamente. en: 25 Marzo 2016, 01:18 am
En serio, volviendo al tema que me tiene loco:

Esta vez he intentado subir un simple archivo de texto txt llamado logger.txt con este contenido:

Citar
hola que buenos esto es una jodida pruebaaa

FF lo manda perfecto como sieeempre, y yo mando prácticamente lo mismo pero no me funciona, el body (los datos que mando) son IGUALES. El content-length es el mismo Y HE ABIERTO 2 WIRESHARK PARA DIVIDIR LA PANTALLA Y COMPROBAR BYTE A BYTE EL BODY, Y SI SON ** IGUALES.

Tambien el header HTTP es igual que el de FF, solo que yo incluyo un header mas el de Cache-Control= no-cache, que supongo es algo totalmente irrelevante.

Peeero si que capta una diferencia el wireshark, y es que si nos vamos al campo frame del paquete en el de firefox pone:

Citar
eth:ethertype:ip:tcp:http:mime_multipart:data-text-lines:data

Y en el mío pone:

Citar
eth:ethertype:ip:tcp:http:mime_multipart:data

Es como que se come el data-text que es un protocolo dentro de http que esta dentro de mime_multipart, ¿pero si lo que mando es igual, excepto una cabecera más indiferente, y si todo igual, porqué eso es distinto porqueeee? :@

¿Será la winapi? ¿será la magia? ¿qué sera esta vez?.

Saludos y PD siento el doble post, tomadlo como una respuesta a mi mismo XD.

Y para decorar el pastel os paso el código actualizado:

Código
  1. bool Tracker::SendFile(std::wstring _path)
  2. {
  3. HINTERNET hInternet;
  4.  
  5. if ((hInternet = InternetOpenA(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0)) == NO_ERROR){
  6. return false;
  7. }
  8.  
  9. if ((hInternet = InternetConnectA(hInternet, domain.c_str(), INTERNET_DEFAULT_HTTP_PORT,
  10. NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0)) == NO_ERROR){
  11. InternetCloseHandle(hInternet);
  12. return false;
  13. }
  14.  
  15. if ((hInternet = HttpOpenRequestA(hInternet, "POST", "/catcher.php", "HTTP/1.1",
  16. NULL, NULL, NULL, 0)) == NO_ERROR){
  17. InternetCloseHandle(hInternet);
  18. return false;
  19. }
  20.  
  21. HANDLE handle;
  22. DWORD size;
  23.  
  24. if ((handle = CreateFile(_path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_HIDDEN, 0)) == INVALID_HANDLE_VALUE){
  25. InternetCloseHandle(hInternet);
  26. return false;
  27. }
  28.  
  29. if ((size = GetFileSize(handle, NULL)) == INVALID_FILE_SIZE){
  30. CloseHandle(handle);
  31. InternetCloseHandle(hInternet);
  32. return false;
  33. }
  34.  
  35. char *buffer = new char[size]();
  36.  
  37. if (ReadFile(handle, buffer, size, NULL, NULL) == 0){
  38. CloseHandle(handle);
  39. InternetCloseHandle(hInternet);
  40. return false;
  41. }
  42.  
  43. CloseHandle(handle);
  44. std::string data = std::string(buffer, size);
  45. delete[] buffer;
  46.  
  47. std::string boundary = "-----------------------------68991947030948";
  48. std::string headers;
  49.  
  50. headers += "Host: web.com\r\n";
  51. headers += "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0\r\n";
  52. headers += "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
  53. headers += "Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3\r\n";
  54. headers += "Accept-Encoding: gzip, deflate\r\n";
  55. headers += "DNT: 1\r\n";
  56. headers += "Referer: http://web.com/catcher.php\r\n";
  57. headers += "Connection: keep-alive\r\n";
  58. headers += "Content-Type: multipart/form-data; boundary=" + boundary + "\r\n";
  59. HttpAddRequestHeadersA(hInternet, headers.c_str(), headers.length(), HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
  60.  
  61. std::string body;
  62. body += boundary + "\r\n";
  63. body += "Content-Disposition: form-data; name=\"archivo\"; filename=\"logger.txt\"\r\n";
  64. body += "Content-Type: text/plain\r\n\r\n";
  65. body += data;
  66. body += "\r\n" + boundary + "\r\n";
  67. body += "Content-Disposition: form-data; name=\"boton\"\r\n\r\n";
  68. body += "Enviar archivo";
  69. body += "\r\n" + boundary + "--\r\n";
  70.  
  71. std::cout << body;
  72. //std::cout << body.substr(0, 800) << body.substr(body.length() - 600, 600);
  73. //std::cout << body.length() << std::endl;
  74.  
  75. if (HttpSendRequestA(hInternet, NULL, 0, (LPVOID)body.c_str(), body.length()) == NO_ERROR){
  76. InternetCloseHandle(hInternet);
  77. return false;
  78. }
  79.  
  80. std::string response;
  81. DWORD dwBytes;
  82. char ch;
  83.  
  84. while (InternetReadFile(hInternet, &ch, 1, &dwBytes))
  85. {
  86. if (dwBytes != 1) break;
  87. response += ch;
  88. }
  89.  
  90. InternetCloseHandle(hInternet);
  91. std::cout << response;
  92. }
  93.  

El PHP sigue igual y me carga el html de la página pero no me sale el mensajito de "se ha subido el archivo" ni "ya  hay otro con ese nombre", algo falla.

Y es que en wireshark la propia descripción del paquete en el de FF pone:

Citar
POST /catcher.php HTTP/1.1  (text/plain)

Y en el mío:

Citar
POST /catcher.php HTTP/1.1

EDITO: Hola lo he solucionado, adios. ¬¬.

128  Programación / Programación C/C++ / Re: Problema C++ al enlazar en: 25 Marzo 2016, 00:41 am
Jajaja, lo que me dijeron es que la llamada a la función en el main, no era necesaria, porque está incluida en funpromedio.h

Claro pero si en este caso quieres hacer el promedio deberás de llamarla en el main.
O llamar a otra función que la llame.

Se va a ejecutar lo que pongas en el main si no podes la llamada a la función allí no se ejecutará.

Solucion:

Código
  1. #include <iostream>
  2. #include "funpromedio.h"
  3.  
  4. using namespace std;
  5.  
  6.  
  7. int main()
  8. {
  9.    int nota1;
  10.    int nota2;
  11.    int nota3;
  12.  
  13.    cout<< "Ingrese la nota del primer trimestre: "<<endl;
  14.    cin>> nota1;
  15.    cout<< "Ingrese la nota del segundo trimestre: "<< endl;
  16.    cin>> nota2;
  17.    cout<< "Ingrese la nota del tercer trimestre: "<< endl;
  18.    cin>> nota3;
  19.    cout << "El promedio es: " << funcpromedio(nota1, nota2, nota3) << endl;
  20.  
  21.    return 0;
  22. }
129  Programación / Programación C/C++ / Re: Problema C++ al enlazar en: 25 Marzo 2016, 00:28 am
Se ve que te lo has currao.

Sobretodo por la llamada a la función en el main XD.
130  Programación / Programación C/C++ / HTTP multipart/form-data no sube archivo correctamente. en: 21 Marzo 2016, 17:10 pm
Bueno, pues estoy tratando de subir un archivo a una página web, que corre un script PHP..

El caso que he probado de todas las maneras posibles sin éxito alguno, he probado a hacer POST enviando en una variable el nombre del archivo y en otra el contenido del archivo con application/x-www-form-urlencoded y recibía el nombre correctamente pero el contenido mal (los bytes del jpg), me conseguía crear el archivo en el servidor pero estaba corrupto, en el PHP simplemente habría el archivo con ese nombre y escribía el contenido en binario, pero ya os digo el archivo ocupaba 80kb y escribió solo 1,9kbs si no mal recuerdo.

También probé a usar lo mismo pero con application/octet-stream, y bueno en este caso tenía que cambiar el script PHP, pero no me interesó realmente y no le dí muchas vueltas a este método, porque quiero subirlo o bien con POST con  application/x-www-form-urlencoded o con POST con multipart/form-data.

Visto que el primero escribía el 2% del archivo como que lo dejé y pase a multipart/form-data.
Copiando os datos de firefox, analizando paquetes de firefox con los de mi aplicación, como suben ambos el archivo, y SON JODIDAMENTE IGUALES EL BODY SOLO OJO, pero uno lo sube y otro no.

Os dejo el código de la función que sube un archivo y del PHP.

Código
  1. <?php
  2. if($_FILES["archivo"]["name"]){    
  3.      if ($_FILES["archivo"]["error"] > 0) {
  4.        echo $_FILES["archivo"]["error"] . "<br/>";
  5.      } else {
  6.          if (file_exists("" . $_FILES["archivo"]["name"])) {
  7.            echo $_FILES["archivo"]["name"] . " ya existe. ";
  8.          } else {
  9.            move_uploaded_file($_FILES["archivo"]["tmp_name"],
  10.            "" . $_FILES["archivo"]["name"]);
  11.            echo "Archivo Subido <br />";
  12.          }
  13.      }
  14. }
  15. ?>
  16.  

Código
  1. bool tracker::SendFile(std::string _path)
  2. {
  3. HINTERNET hInternet;
  4.  
  5. if ((hInternet = InternetOpenA(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0)) == NO_ERROR){
  6. return false;
  7. }
  8.  
  9. if ((hInternet = InternetConnectA(hInternet, domain.c_str(), INTERNET_DEFAULT_HTTP_PORT,
  10. NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0)) == NO_ERROR){
  11. InternetCloseHandle(hInternet);
  12. return false;
  13. }
  14.  
  15. DWORD requestFlags = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP |
  16. INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS |
  17. INTERNET_FLAG_KEEP_CONNECTION |
  18. INTERNET_FLAG_NO_AUTO_REDIRECT |
  19. INTERNET_FLAG_NO_COOKIES |
  20. INTERNET_FLAG_NO_CACHE_WRITE |
  21. INTERNET_FLAG_NO_UI |
  22. INTERNET_FLAG_RELOAD;
  23.  
  24. if ((hInternet = HttpOpenRequestA(hInternet,
  25. "POST",
  26. "/catcher.php",
  27. "HTTP/1.1",
  28. NULL, NULL,
  29. requestFlags, 0)) == NO_ERROR){
  30. InternetCloseHandle(hInternet);
  31. return false;
  32. }
  33.  
  34. std::ifstream reader("C:\\Users\\User\\Desktop\\ciclista.jpg", std::ifstream::ate | std::ifstream::binary);
  35. int size = reader.tellg();
  36. char* buffer = new char[size];
  37. reader.seekg(0, std::ios::beg);
  38. reader.read(buffer, size);
  39. reader.close();
  40.  
  41. std::string content;
  42. content = std::string(buffer, size);
  43. delete[] buffer;
  44.  
  45. std::string body;
  46. std::string boundary = "-----------------------------268991947030948";
  47.  
  48. /*Body*/
  49. body += boundary + "\r\n";
  50. body += "Content-Disposition: form-data; name=\"archivo\"; filename=\"ciclista.jpg\"\r\n";
  51. body += "Content-Type: image/jpeg\r\n\r\n";
  52. body += content + "\r\n";
  53. body += boundary + "\r\n";
  54. body += "Content-Disposition: form-data; name=\"boton\"\r\n\r\n";
  55. body += "Enviar archivo\r\n";
  56. body += boundary + "--\r\n";
  57.  
  58. /*Header*/
  59. std::string headers = "Content-Type: multipart/form-data; boundary=" + boundary + "\r\n";
  60. HttpAddRequestHeadersA(hInternet, headers.c_str(), headers.length(), HTTP_ADDREQ_FLAG_ADD);
  61.  
  62. /*Body*/
  63. std::cout << body.substr(0, 600) << body.substr(body.length() - 200, 200);
  64. std::cout << body.length() << std::endl;
  65.  
  66. if (HttpSendRequestA(hInternet, NULL, 0, (LPVOID)body.c_str(), body.length()) == NO_ERROR){
  67. InternetCloseHandle(hInternet);
  68. return false;
  69. }
  70.  
  71. std::string response;
  72. DWORD dwBytes;
  73. char ch;
  74.  
  75. while (InternetReadFile(hInternet, &ch, 1, &dwBytes))
  76. {
  77. if (dwBytes != 1) break;
  78. response += ch;
  79. }
  80.  
  81. InternetCloseHandle(hInternet);
  82. std::cout << response;
  83. }
  84.  

Bueno me he vuelto loco comparando el contenido de los paquetes, y solo puede fallar la cabecera (luego a saber que será), pero el Content-Length es igual en firefox que en mi función, luego si cambia algo sería la cabecera que tiene HOST, CONTENT-LENGTH, CONTENT-TYPE, CONNECTION KEEP ALIVE, CACHE-CONTROL NO CACHE. Al acabar el header \r\n\r\n como siempre y mando el body, ahí está el código, cuando recibo la respuesta del server recibo solo el HTML sin el "se ha subido correctamente" o "ya existe". Pero no hay errores en el PHP.

¿Qué pasa?.

Saludos :X
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines