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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12
61  Seguridad Informática / Análisis y Diseño de Malware / [TLB][VB6] Indetectar DllFunctionCall y CopyBytes en: 24 Marzo 2010, 00:43 am
Bueno, me han comentado que DllFunctionCall y __vbaCopyBytes es detectado por el paranoico de Avira... asi que aqui esta el TLB que debe hacer indetectable la llamada a estas APIs :D
Código:
http://www.box.net/shared/58sikxl3nu


Para gastarlo? Pues eliminar la declaracion de las APIs del codigo en VB y agregar el TLB a la lista de referencias:
Proyecto->Referencias...


Saludos :D
62  Programación / Programación Visual Basic / [m][SRC][Semaforos!] Alternativa a CreateMutex en: 16 Marzo 2010, 15:58 pm
Ya puse una alternativa hace un tiempo:
Código:
http://foro.elhacker.net/programacion_vb/srcmaltmutexbas_alternativa_a_createmutex-t243771.0.html

Pues aqui va otra trabajando con Semaforos :P
Código
  1. Option Explicit
  2. 'KERNEL32
  3. Private Declare Function CreateSemaphoreW Lib "kernel32.dll" (ByVal lpSemaphoreAttributes As Long, ByVal lInitialCount As Long, ByVal lMaximumCount As Long, ByVal lpName As Long) As Long
  4.  
  5. Private Const ERROR_ALREADY_EXISTS  As Long = 183&
  6.  
  7. Public Function bWasIOpened(ByVal lpName As String) As Boolean
  8.    bWasIOpened = (CreateSemaphoreW(0&, 0&, 1&, StrPtr(lpName)) > 0) And (Err.LastDllError = ERROR_ALREADY_EXISTS)
  9. End Function
Minimalista, como a mi me gusta >:D

Bueno, para que no sepa para que sirve esto lo explico, es bastante facil. Sirve para que no hayan dos instancias de nuestra aplicacion ejecutandose simultaneamente...
Una mejor explicacion de nuestro amigo MadAntrax :P
sirve para controlar que nuestra aplicación no sea ejecutada 2 veces en un mismo equipo. Algunos pensareis que eso ya se puede hacer con

Código
  1. If App.PrevInstance = True Then End

pero eso no es cierto... si nuestra aplicación se copia en System32 como: programa1.exe y programa2.exe... el usuario podrá ejecutar el programa1.exe y el programa2.exe simultáneamente! Eso puede suponer un problema en el caso de estar programando un troyano o un keylogger (donde lo importante es solo tener una instancia de nuestro malware a la vez).

Ejemplo de uso del code:
Código
  1. Private Sub Form_Load()
  2.    If bWasIOpened("Cualquier_Cosa") = True Then End
  3. End Sub

Nota:Probar solo compilado.

Saludos :D
63  Programación / Programación Visual Basic / [FIX] Error sacar BaseAddress Kernel32 W7 {cInvoke,cRunPe...} en: 3 Marzo 2010, 17:46 pm
Bueno, supongo que algunos se habran dado cuenta que en W7 algunos CallAPI no funcionan... Eso es porque el W7 pone primero NTDLL antes que KERNEL32 en los modules cargados (Peb->InInitOrder[0]->BaseAddress != &KERNEL32 ::) :xD)... Es por eso que he programado (Basandome en otros) este shellcode que saca el BaseAddress de K32 en cualquier W$ NT aqui tenies el codigo:
Código:
http://karcrack.pastebin.com/TWmj5G5c

Y bueno, para solucionar el problema en los codigos que utilizan un pequeño shellcode para sacar el BaseAddres basta con reemplazar la constante THUNK_KERNELBASE por estos OPCODES:
Código:
8B4C2408565531C0648B70308B760C8B761C8B6E088B7E208B3638471875F3803F6B7407803F4B7402EBE789295D5EC3

Saludos :D

Originalmente posteado (En Ingles):
Código:
http://www.advancevb.com.ar/?p=499
:)
64  Programación / Programación Visual Basic / [SNIPPET]Alternativa App.TaskVisible en: 12 Febrero 2010, 23:35 pm
Código
  1. 'USER32
  2. Private Declare Function ShowWindow Lib "USER32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  3. Private Declare Function FindWindowA Lib "USER32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  4.  
  5. Private Const SW_HIDE   As Long = 0
  6. Private Const SW_NORMAL As Long = 1
  7. Private Const CLASSNAME As String = "ThunderRT6Main"
  8.  
  9. Public Sub AppTaskVisible(ByVal bVisible As Boolean)
  10.    Dim lHwnd           As Long
  11.  
  12.    lHwnd = FindWindowA(CLASSNAME, App.Title)
  13.    If lHwnd Then
  14.        Call ShowWindow(lHwnd, IIf((bVisible = True), SW_NORMAL, SW_HIDE))
  15.    End If
  16. End Sub
Bueno, la gente se queja de que App.TaskVisible es detectada... asi que aqui esta, el sustituto :P

Lo he probado en W$ XP SP3, a ver si alguien puede probarlo en otro W$ ;)

Olvidaba decir que hay que probarlo compilado!

Saludos ;)
65  Programación / Programación Visual Basic / [NTDLL] Enumerar dispositivos (p.e Unidades Extraibles...) - ProcessDeviceMap en: 11 Febrero 2010, 16:18 pm
Código
  1. Option Explicit
  2. '---------------------------------------------------------------------------------------
  3. ' Module    : mNativeEnumDrives
  4. ' Author    : Karcrack
  5. ' Date      : 11/02/2010
  6. ' Purpose   : Enumerate Drives, allow filtering by device type
  7. '---------------------------------------------------------------------------------------
  8. 'NTDLL
  9. Private Declare Function NtQueryInformationProcess Lib "NTDLL" (ByVal hProcess As Long, ByVal ProcessInformationClass As Long, ProcessInformation As Any, ByVal ProcessInformationLength As Long, ReturnLength As Long) As Long
  10.  
  11. Private Type PROCESS_DEVICEMAP_INFORMATION
  12.    DriveMap                As Long
  13.    DriveType(1 To 32)      As Byte
  14. End Type
  15.  
  16. Public Enum DeviceType
  17.    DRIVE_NOFILTER = -1
  18.    DRIVE_UNKNOWN
  19.    DRIVE_NO_ROOT_DIR
  20.    DRIVE_REMOVABLE
  21.    DRIVE_FIXED
  22.    DRIVE_REMOTE
  23.    DRIVE_CDROM
  24.    DRIVE_RAMDISK
  25. End Enum
  26.  
  27. Private Const ProcessDeviceMap = 23
  28.  
  29. Public Function NtGetDrives(Optional ByVal lFilterType As DeviceType = DRIVE_NOFILTER) As Collection
  30.    Dim tPDC                As PROCESS_DEVICEMAP_INFORMATION
  31.    Dim i                   As Long
  32.  
  33.    Set NtGetDrives = New Collection
  34.  
  35.    If NtQueryInformationProcess(-1, ProcessDeviceMap, tPDC, Len(tPDC), ByVal 0&) = 0 Then
  36.        For i = 0 To 25
  37.            If tPDC.DriveMap And 2 ^ i Then
  38.                If (lFilterType = -1) Or (tPDC.DriveType(i + 1) = lFilterType) Then
  39.                    NtGetDrives.Add Chr$(65 + i) & ":\"
  40.                End If
  41.            End If
  42.        Next i
  43.    End If
  44. End Function

Simplemente es una modificación de este código:
http://www.advancevb.com.ar/?p=335

Ejemplo de uso:
Código
  1. Private Sub Form_Load()
  2.    Dim vItem               As Variant
  3.  
  4.    For Each vItem In NtGetDrives(DRIVE_REMOVABLE)
  5.        MsgBox vItem
  6.    Next vItem
  7. End Sub

Mostrará las unidades extraibles!
Hay que tener en cuenta que no todos los PenDrives USB son detectados como unidades extraibles, para mas precision mirar este codigo que saca el BusType:
http://www.advancevb.com.ar/?p=345


Cualquier duda preguntar! :)

Saludos! ::)
66  Programación / Programación Visual Basic / [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress() en: 10 Febrero 2010, 18:06 pm
Código
  1. Option Explicit
  2.  
  3. 'NTDLL
  4. Private Declare Function LdrLoadDll Lib "NTDLL" (ByVal pWPathToFile As Long, ByVal Flags As Long, ByRef pwModuleFileName As UNICODE_STRING, ByRef ModuleHandle As Long) As Long
  5. Private Declare Function LdrGetProcedureAddress Lib "NTDLL" (ByVal ModuleHandle As Long, ByRef paFunctionName As Long, ByVal Ordinal As Integer, ByRef FunctionAddress As Long) As Long
  6. Private Declare Sub RtlInitUnicodeString Lib "NTDLL" (DestinationString As Any, ByVal SourceString As Long)
  7.  
  8. Private Type UNICODE_STRING
  9.    uLength         As Integer
  10.    uMaximumLength  As Integer
  11.    pBuffer         As Long
  12. End Type
  13.  
  14. Public Function NtLoadLibrary(ByVal sName As String) As Long
  15.    Dim US          As UNICODE_STRING
  16.  
  17.    Call RtlInitUnicodeString(US, StrPtr(sName))
  18.    Call LdrLoadDll(ByVal 0&, ByVal 0&, US, NtLoadLibrary)
  19. End Function
  20.  
  21. Public Function NtGetProcAddr(ByVal lModuleHandle As Long, ByVal sProc As String) As Long
  22.    Dim i           As Long
  23.    Dim ANSI()      As Byte
  24.  
  25.    ReDim ANSI(0 To Len(sProc))
  26.    For i = 1 To Len(sProc)
  27.        ANSI(i - 1) = Asc(Mid$(sProc, i, 1))
  28.    Next i
  29.  
  30.    Call LdrGetProcedureAddress(lModuleHandle, VarPtr(ANSI(0)), ByVal 0&, NtGetProcAddr)
  31. End Function

Es el equivalente nativo de LoadLibrary+GetProcAddress :D

Ejemplo:
Código
  1. Option Explicit
  2. 'KERNEL32
  3. Private Declare Function LoadLibrary Lib "KERNEL32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  4. Private Declare Function GetProcAddress Lib "KERNEL32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  5.  
  6. Private Sub Form_Load()
  7.    MsgBox Hex$(NtGetProcAddr(NtLoadLibrary("KERNEL32"), "ExitProcess")) & vbCrLf & Hex$(GetProcAddress(LoadLibrary("KERNEL32"), "ExitProcess"))
  8. End Sub

Cualquier duda... preguntar! ;)

Saludos ::)
67  Programación / Programación Visual Basic / [ASM+VB6][ANTI] IsVirtualPC - Saber si estamos en un VPC! en: 10 Febrero 2010, 18:04 pm
Código
  1. Option Explicit
  2.  
  3. '---------------------------------------------------------------------------------------
  4. ' Module    : mAntiVirtualPC
  5. ' Author    : Karcrack
  6. ' Now$      : 06/09/2009  17:35
  7. ' Used for? : Known if being Virtualized inside M$ Virtual PC
  8. ' Thanks    : Kiash > He tested on Virtual PC
  9. ' Original C source:
  10. '    BOOL IsVirtualPC(void){
  11. '        __try{
  12. '            __asm{
  13. '                mov eax, 1
  14. '                _emit 0x0F
  15. '                _emit 0x3F
  16. '                _emit 0x07
  17. '                _emit 0x0B
  18. '                _emit 0xC7
  19. '                _emit 0x45
  20. '                _emit 0xFC
  21. '                _emit 0xFF
  22. '                _emit 0xFF
  23. '                _emit 0xFF
  24. '                _emit 0xFF
  25. '            }
  26. '        }__except(1){
  27. '            return FALSE;
  28. '        }
  29. '        return TRUE;
  30. '    }
  31. '---------------------------------------------------------------------------------------
  32.  
  33. 'KERNEL32
  34. Private Declare Function SetUnhandledExceptionFilter Lib "KERNEL32" (ByVal lpTopLevelExceptionFilter As Long) As Long
  35. 'USER32
  36. Private Declare Function CallWindowProc Lib "USER32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  37. 'MSVBVM60
  38. Private Declare Sub PutMem8 Lib "MSVBVM60" (inDst As Any, ByVal inSrc As Currency)
  39.  
  40. Private Const THUNK_ANTI1       As Currency = -104917872100.9905@           'db 0x0F, 0x3F,0x07,0x0B,0xC7,0x45,0xFC,0xFF
  41. Private Const THUNK_ANTI2       As Currency = -802975918416356.9665@        'db 0xFF,0xFF,0xFF + RET + NOP + NOP + NOP + NOP
  42.  
  43. Private m_bFlag                 As Boolean
  44.  
  45. Public Function IsVirtualPC() As Boolean
  46.    On Error Resume Next
  47.    Dim bvASM(&HF)              As Byte
  48.    Dim lOldSEH                 As Long
  49.  
  50.    m_bFlag = True
  51.    lOldSEH = SetUnhandledExceptionFilter(AddressOf ExceptionHandler)
  52.  
  53.    Call PutMem8(ByVal VarPtr(bvASM(0)), THUNK_ANTI1)
  54.    Call PutMem8(ByVal VarPtr(bvASM(0)) + 8, THUNK_ANTI2)
  55.  
  56.    Call CallWindowProc(VarPtr(bvASM(0)), 0&, 0&, 0&, 0&)
  57.  
  58.    Call SetUnhandledExceptionFilter(lOldSEH)
  59.    IsVirtualPC = m_bFlag
  60. End Function
  61.  
  62. Public Function ExceptionHandler(ByRef uException As Long) As Long
  63.    m_bFlag = False: ExceptionHandler = -1
  64.    ' VB Will process our error :P
  65.    Call Mid$(vbNullString, 0)
  66. End Function

Como siempre, cualquier duda... preguntar! :D

Este es un codigo que detecta si estamos siendo ejecutados en un M$ Virtual PC, simplemente pase el codigo de C a VB ;)

Saludos ::)
68  Programación / Programación Visual Basic / [ASM+VB6] Deteccion Virtual Machine - Interrupt Descriptor Table en: 10 Febrero 2010, 18:00 pm
Código
  1. Option Explicit
  2. '---------------------------------------------------------------------------------------
  3. ' Module        : mVirtualized
  4. ' Author        : Karcrack
  5. ' Date          : 09/09/09
  6. ' Used for?     : Detect Virtualized Machines... like VMWare/V.PC/QEmu...
  7. ' Tested On     :
  8. '                   - Virtual PC 2007, 1.0      (Tested by: KIASH!)
  9. '                   - VMWare ,6.5.3.185404      (Tested by: SkyWeb!)
  10. '
  11. ' Reference     :
  12. '                   :http://www.cs.nps.navy.mil/people/faculty/irvine/publications/2000/VMM-usenix00-0611.pdf
  13. '                   :http://invisiblethings.org/papers/redpill.html
  14. '                   :http://www.ntsecurity.nu/onmymind/2007/2007-02-27.html
  15. '                   :http://blog.assarbad.net/wp-content/uploads/2006/11/redpill_getting_colorless.pdf
  16. '---------------------------------------------------------------------------------------
  17.  
  18. 'USER32
  19. Private Declare Function CallThunk8 Lib "USER32" Alias "CallWindowProcW" (ByRef cThunk As Currency, Optional ByVal Param1 As Long, Optional ByVal Param2 As Long, Optional ByVal Param3 As Long, Optional ByVal Param4 As Long) As Long
  20.  
  21. Public Function ImVirtualized() As Boolean
  22.    Dim tIDT(2 + 4)     As Byte
  23.  
  24. '    mov ecx, [esp+4]\
  25. '    sidt [ecx]       |->; -439297879751758.3221@
  26. '    retn            /
  27.  
  28.    Call CallThunk8(-439297879751758.3221@, ByVal VarPtr(tIDT(0)))
  29.    ImVirtualized = (tIDT(5)  > &HD0)
  30. End Function

Es muy recomendable leer los links citados en los comentarios para mas info sobre el tema :D

Cualquier duda... preguntar! ;)

Saludos ::)
69  Programación / Programación Visual Basic / [ASM+VB6] Alternativa GetCurrentProcessId() - [FS:0x20] en: 10 Febrero 2010, 17:55 pm
Código
  1. 'USER32
  2. Private Declare Function CallThunk8 Lib "USER32" Alias "CallWindowProcW" (ByRef cThunk As Currency, Optional ByVal Param1 As Long = 0, Optional ByVal Param2 As Long = 0, Optional ByVal Param3 As Long = 0, Optional ByVal Param4 As Long = 0) As Long
  3.  
  4. '---------------------------------------------------------------------------------------
  5. ' Procedure : FS_GetCurrentProcessId
  6. ' Author    : Karcrack
  7. ' Date      : 23/09/2009
  8. ' Purpose   : GetCurrentProcessId@Kernel32 alternative. Reads info from TIB
  9. '---------------------------------------------------------------------------------------
  10. '
  11. Public Function FS_GetCurrentProcessId() As Long
  12.    '                                   mov eax, [FS:0x20]
  13.    FS_GetCurrentProcessId = CallThunk8(-801556291178721.2444@)
  14. End Function
Pensaba que lo habia posteado aqui, pero no lo he encontrado, asi que aqui teneis! ;)

Lo que hace este codigo es leer el TIB para sacar nuestro PID :P

Cualquier duda... preguntais! ;D

Saludos ::)
70  Media / Juegos y Consolas / [TORNEO-XBOX360] Call of Duty: Modern Warfare 2 en: 1 Diciembre 2009, 23:07 pm

Aquí tenéis un torneo de Call of Duty: Modern Warfare 2 CON PREMIOS

Los premios serán lo más seguro, unas camisetas de Modern Warfare 2 con el GT del jugador impreso (esta por ver toda esta parte).

El torneo será, probablemente, por equipos (dependemos de la gente que se apunte). Por ahora, que la gente se registre y apunte su Gamertag y ya se irá actualizando esto. Cuanta más gente, antes empezamos y lo hacemos por equipos!
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines