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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ... 115
251  Programación / Programación Visual Basic / Re: Hacer click en un link con webbrowser en: 9 Mayo 2008, 23:43 pm
Usa SetCursorPos para posicionar el raton y mouse_event para hacer click, los eventos son MOUSEEVENTF_LEFTDOWN y MOUSEEVENTF_LEFTUP

Salu2
252  Programación / Programación Visual Basic / Re: Uso de API's ReadProcessMemory y WriteProcessMemory en: 5 Mayo 2008, 23:38 pm
Citar
y bueno ya que esta el hilo abierto estaria lindo quien tenga otros ejemplo lo ponga a continuacion para hacer una pequeña recopilacion sobre el uso de estas dos apis.

que no entiendes? Yo tengo codes pero en C o asm, si te vale...

A ver, el uso de estas dos apis es muy simple, me autocito de un tuto de rootkits q escribí, ya de paso pongo algunas apis relaccionadas q os serán utiles:

Citar
OpenProcess:

HANDLE OpenProcess(
DWORD dwDesiredAccess, // access flag
BOOL bInheritHandle, // handle inheritance flag
DWORD dwProcessId // process identifier
);

Esta es la documentación que Microsoft nos proporciona sobre este api. Ahora os la
detallo un poco:
Valor de retorno: El valor devuelto es el manejador del proceso, explicado de una
forma simple es la forma que tendremos en el código para referirnos al proceso. El
valor que devuelve lo almacenaremos en una variable del tipo HANDLE.
DWORD dwDesiredAccess: Es el modo de apertura del proceso, en nuestro caso
nos daremos todos los privilegios con PROCESS_ALL_ACCESS.
BOOL bInheritHandle: Toma valor true (hereda) o false (no hereda). Nosotros
pondremos false.
DWORD dwProcessId: Es el PID del proceso, luego veremos como obtenerlo con el
nombre del proceso.


VirtualAllocEx:

Sirve para reservar espacio en la memoria de un proceso.

LPVOID VirtualAllocEx(
HANDLE hProcess, // process within which to allocate memory
LPVOID lpAddress, // desired starting address of allocation
DWORD dwSize, // size, in bytes, of region to allocate
DWORD flAllocationType, // type of allocation
DWORD flProtect // type of access protection
);

Valor de retorno: La dirección donde empezaremos a escribir con
WriteProcessMemory.

HANDLE hProcess: El manejador del proceso en el cual vamos a escribir. Es el valor
que nos devuelve OpenProcess.
LPVOID lpAddress: La dirección donde empezamos a reservar espacio, lo
dejaremos en NULL.
DWORD dwSize: El tamaño en bytes de la región que queremos reservar, en
nuestro caso será el tamaño de la cadena que contiene la ruta de la dll a inyectar.
DWORD flAllocationType: El motivo por el cual queremos reservar la memoria, en
nuestro caso MEM_COMMIT|MEM_RESERVE.
DWORD flProtect: El tipo de protección, en nuestro caso PAGE_READWRITE.


WriteProcessMemory:

Sirve para escribir en la memoria anteriormente reservada.
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process whose memory is written to
LPVOID lpBaseAddress, // address to start writing to
LPVOID lpBuffer, // pointer to buffer to write data to
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten // actual number of bytes
//written
);

Valor de retorno: Ver LPDWORD lpNumberOfBytesWritten.
HANDLE hProcess: El valor devuelto por OpenProcess.
LPVOID lpBaseAddress: La dirección por donde empezaremos a escribir. Es el valor
devuelto por VirtualAllocEx.
LPVOID lpBuffer: Lo que queremos escribir, en nuestro caso la ruta de nuestra dll.

DWORD nSize: El tamaño en bytes de lo que queremos escribir, es decir el tamaño
en bytes de la ruta de nuestra dll.
LPDWORD lpNumberOfBytesWritten: Es el numero de bytes que se han escrito
correctamente, así como el valor de retorno, nosotros lo dejaremos en NULL ya que
no nos interesa.

Y ReadProcessMemory es lo mismo q WritePM pero para leer xD
Poned dudas mas concretas ;)

1S4ludo
253  Programación / Programación Visual Basic / Re: leer archivo con api's en: 4 Mayo 2008, 13:37 pm
Creo q ya te lo contesté, pero weno. Con CreateFile abres el archivo, con GetFileSize obtienes su tamaño y con ReadFile lo lees. Si no tb puedes mapearlo en memoria y acceder a el trankilamente usando CreateFile para abrirlo, CreateFileMapping y MapViewOfFile.

Usa CloseHandle con los handles que te dan CreateFile y CreateFileMapping y UnmapViewOfFile con el de MapViewOfFile
254  Programación / Programación Visual Basic / Re: ms-dos vb en: 4 Mayo 2008, 13:29 pm
Pon en el text box cmd /c cd y si no recuerdo mal funcionaba. De todas formas ese código a mi no me gusta nada, mirate este y si eso te lo traduces a VB que es solo usar una par de apis:
http://foro.elhacker.net/programacion_cc/wsasocket_contra_socket-t210589.0.html;msg1000087#msg1000087

Salu2
255  Seguridad Informática / Abril negro / Re: Abril Negro 2008: Taller de ASM by E0N en: 4 Mayo 2008, 01:50 am
Que estén ensamblados en masm, nasm, fasm o lo que sea te da lo mismo, si lo unico q tienes q ver son las apis que usan para crear el socket y de mas. Mira:
http://mipagina.cantv.net/numetorl869/asmsockguide_es.html

Ahí viene explicaditas todas las apis necesarias, para mas detalle, MSDN  >:D
256  Seguridad Informática / Abril negro / Re: Abril Negro 2008: Taller de ASM by E0N en: 4 Mayo 2008, 01:12 am
Eso así obiamente no te va a funcionar nunca, tienes que usar el api wsprintf para concatenar texto con números. Ojito a esto:

Citar
Note  Unlike other Windows functions, wsprintf uses the C calling convention (_cdecl), rather than the Pascal calling convention. As a result, it is the responsibility of the calling process to pop arguments off the stack, and arguments are pushed on the stack from right to left. In C-language modules, the C compiler performs this task.

Vamos, que tienes que cuadrar la pila tu, por que el api no lo hace por ti. El programa sería así:

Código
  1. include 'H:\archivos de programa\fasm\include\win32ax.inc'
  2.  
  3. .data
  4.      veces db ' veces',0
  5.      texto dd 0
  6.  
  7. .code
  8.  
  9. start:
  10.  
  11.        invoke   MessageBoxA,0,'Quieres que te toque los huevos?','Quieres?',0
  12.  
  13.        mov ebx, 1 ; No uses eax como contdor porque cambia tras llamar a un api :P
  14.        putada:
  15.                invoke LocalAlloc, LPTR, 100
  16.                mov [texto], eax
  17.  
  18.                push veces
  19.                push ebx
  20.                invoke wsprintf, [texto], '%d%s'
  21.                add esp, 16
  22.  
  23.                invoke MessageBox, 0, [texto], 'te he tocado los huevos', 0
  24.                invoke LocalFree, [texto]
  25.  
  26.                add ebx,1
  27.        jmp putada
  28.  
  29. .end start

Hechale un ojo con el debugger para ver como el api no restaura la pila y por que hay que poner ese add esp,16 ;)

Salu2
257  Seguridad Informática / Abril negro / Re: Abril Negro 2008: Taller de ASM by E0N en: 2 Mayo 2008, 13:03 pm
Pues usando el api como todo en asm :P Eso lo explicaré mas adelante, q no me das tiempo!!

Puedes usar CreateFile para abrir el archivo deseado y a partir de aki tienes dos opciones:
1 - Usar ReadFile y WriteFile para escribir y leer el archivo
2 - Mapear el archivo con CreateFileMapping y MapViewOfFile

Para obtener el tamaño del archivo usa GetFileSize y no se te olvide usar CloseHandle y UnmapViewOfFile.

Salu3 E0N

PD - Mirate el código de mi Small Joiner, que te será útil para lo que quieres hacer
258  Programación / Programación Visual Basic / Re: ms-dos vb en: 2 Mayo 2008, 12:42 pm
También puedes usar pipes, q es mas elegante :P Ejemplo de la api guide:

Código
  1. 'Redirects output from console program to textbox.
  2. 'Requires two textboxes and one command button.
  3. 'Set MultiLine property of Text2 to true.
  4. '
  5. 'Original bcx version of this program was made by
  6. ' dl <dl@tks.cjb.net>
  7. 'VB port was made by Jernej Simoncic <jernej@isg.si>
  8. 'Visit Jernejs site at http://www2.arnes.si/~sopjsimo/
  9. '
  10. 'Note: don't run plain DOS programs with this example
  11. 'under Windows 95,98 and ME, as the program freezes when
  12. 'execution of program is finnished.
  13.  
  14. Option Explicit
  15. Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long
  16. Private Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO)
  17. Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
  18. Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
  19. Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
  20. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  21. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  22.  
  23. Private Type SECURITY_ATTRIBUTES
  24.  nLength As Long
  25.  lpSecurityDescriptor As Long
  26.  bInheritHandle As Long
  27. End Type
  28.  
  29. Private Type PROCESS_INFORMATION
  30.  hProcess As Long
  31.  hThread As Long
  32.  dwProcessId As Long
  33.  dwThreadId As Long
  34. End Type
  35.  
  36. Private Type STARTUPINFO
  37.  cb As Long
  38.  lpReserved As Long
  39.  lpDesktop As Long
  40.  lpTitle As Long
  41.  dwX As Long
  42.  dwY As Long
  43.  dwXSize As Long
  44.  dwYSize As Long
  45.  dwXCountChars As Long
  46.  dwYCountChars As Long
  47.  dwFillAttribute As Long
  48.  dwFlags As Long
  49.  wShowWindow As Integer
  50.  cbReserved2 As Integer
  51.  lpReserved2 As Byte
  52.  hStdInput As Long
  53.  hStdOutput As Long
  54.  hStdError As Long
  55. End Type
  56.  
  57. Private Type OVERLAPPED
  58.    ternal As Long
  59.    ternalHigh As Long
  60.    offset As Long
  61.    OffsetHigh As Long
  62.    hEvent As Long
  63. End Type
  64.  
  65. Private Const STARTF_USESHOWWINDOW = &H1
  66. Private Const STARTF_USESTDHANDLES = &H100
  67. Private Const SW_HIDE = 0
  68. Private Const EM_SETSEL = &HB1
  69. Private Const EM_REPLACESEL = &HC2
  70.  
  71. Private Sub Command1_Click()
  72.  Command1.Enabled = False
  73.  Redirect Text1.Text, Text2
  74.  Command1.Enabled = True
  75. End Sub
  76. Private Sub Form_Load()
  77.    Text1.Text = "ping"
  78. End Sub
  79. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  80.  If Command1.Enabled = False Then Cancel = True
  81. End Sub
  82.  
  83. Sub Redirect(cmdLine As String, objTarget As Object)
  84.  Dim i%, t$
  85.  Dim pa As SECURITY_ATTRIBUTES
  86.  Dim pra As SECURITY_ATTRIBUTES
  87.  Dim tra As SECURITY_ATTRIBUTES
  88.  Dim pi As PROCESS_INFORMATION
  89.  Dim sui As STARTUPINFO
  90.  Dim hRead As Long
  91.  Dim hWrite As Long
  92.  Dim bRead As Long
  93.  Dim lpBuffer(1024) As Byte
  94.  pa.nLength = Len(pa)
  95.  pa.lpSecurityDescriptor = 0
  96.  pa.bInheritHandle = True
  97.  
  98.  pra.nLength = Len(pra)
  99.  tra.nLength = Len(tra)
  100.  
  101.  If CreatePipe(hRead, hWrite, pa, 0) <> 0 Then
  102.    sui.cb = Len(sui)
  103.    GetStartupInfo sui
  104.    sui.hStdOutput = hWrite
  105.    sui.hStdError = hWrite
  106.    sui.dwFlags = STARTF_USESHOWWINDOW Or STARTF_USESTDHANDLES
  107.    sui.wShowWindow = SW_HIDE
  108.    If CreateProcess(vbNullString, cmdLine, pra, tra, True, 0, Null, vbNullString, sui, pi) <> 0 Then
  109.      SetWindowText objTarget.hwnd, ""
  110.      Do
  111.        Erase lpBuffer()
  112.        If ReadFile(hRead, lpBuffer(0), 1023, bRead, ByVal 0&) Then
  113.          SendMessage objTarget.hwnd, EM_SETSEL, -1, 0
  114.          SendMessage objTarget.hwnd, EM_REPLACESEL, False, lpBuffer(0)
  115.          DoEvents
  116.        Else
  117.          CloseHandle pi.hThread
  118.          CloseHandle pi.hProcess
  119.          Exit Do
  120.        End If
  121.        CloseHandle hWrite
  122.      Loop
  123.      CloseHandle hRead
  124.    End If
  125.  End If
  126. End Sub

Miratelo, al principio pueden costar, pero son faciles de usar ;)

Salu2
259  Seguridad Informática / Abril negro / Re: Abril Negro 2008: Taller de ASM by E0N en: 2 Mayo 2008, 00:54 am
Veo q has hecho progresos ^^ Si quieres dejar el código un poco más legible te recomiendo el uso de invoke para poder llamar a las apis como se haria en un lenguaje de alto nivel. Por ejemplo esto:
Código
  1. push 0
  2. push 0
  3. push archivo
  4. push web
  5. push 0
  6. call [Descargar]

Te quedaría así:
Código
  1. invoke Descargar, 0, web, archivo, 0, 0
Mucho más legible :P
Salu2
260  Seguridad Informática / Abril negro / Re: Abril Negro 2008: Taller de ASM by E0N en: 1 Mayo 2008, 16:53 pm
No :P Puedes adaptarte un poco el codigo, pero copiando y pegando tal cual no te va a funcionar. Mejor aprende a programarte un crypter tu mismo ;)



He actualizado el primer post. Se han añadido tres capitulos, uno con unas cuantas instrucciones que nos faltaban por aprender, otro con las distintas estructuras que puede tomar el código en FASM y otro en el que explico como declarar variables, asi que cuando los leais ya sabreis hacer algún programilla básico ;)

Salu2 E0N
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ... 115
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines