Jump to content
a13x4nd7u

Cum sa blochezi un calculator care are Linux daca ai root

Recommended Posts

Posted

Urmatorul program compilat si rulat pe Linux va bloca calculatorul. Merge doar daca este rulat de pe root. Este facut de mine si contine parti luate din kernelul Linux.

Porgramul schimba in continuu ledurile de la tastatura blocand tastatura si calculatorul.

Daca sunt sterse comentariile din main programul va schimba cate un led la fiecare sir de caractere mai mic de 1000 de caractere citit. (daca introduceti un sir de caractere mai mare veti obtine buffer overflow)


#include <stdio.h>
#include <sys/perm.h>

#ifdef BSD
#include <machine/sysarch.h>
#include <machine/cpufunc.h>
#else
#include <sys/io.h>
#endif

#define KBD_STATUS_REG 0x64
#define KBD_DATA_REG 0x60
#define KBD_CMD_SET_LEDS 0xED
#define KBD_STAT_IBF 0x02

int kdb_send(unsigned char byte)
{
while(inb(KBD_STATUS_REG) & KBD_STAT_IBF)
;
outb(byte, KBD_DATA_REG);

return 0;
}

//0x01 = num lock
//0x02 = caps lock
//0x03 = scroll lock
int leds(int f)
{
static int flags;

flags ^= f;

kdb_send(KBD_CMD_SET_LEDS);
kdb_send((unsigned char)flags);
}

int activate_io_ports(void)
{
#ifdef BSD
if(i386_set_ioperm(0x60,5,1) == -1)
return -1;
#else
if(iopl(3) == -1)
return -1;
#endif
return 0;
}

int l;

int main(int argc,char **argv)
{
//char c[1000];

if(getuid() != 0)
return -1;
if(activate_io_ports() != 0)
return -1;

while(1) {
if(l == 0x01)
l=0x02;
else if(l == 0x02)
l=0x04;
else
l=0x01;
leds(l);

//scanf("%s",&c);
}

return 0;
}

Acest program este prezentat in scop educativ. Nu sunt responsabil pentru ceea ce faceti cu el.

Posted

Nu prea ma pricep la titluri.

Nu o consider vulnerabilitate sau chiar daca este nu este folositoare. E un rahat cu care schimbi ledurile si poti bloca calculatorul.

Dar este luat de mine si facut de mine cu parti din kernelul Linux.

In schimb acest program este vulnerabil (buffer overflow, cum am mai spus) si poti deschide un shell cu ajutorul lui daca il compilezi dupa ce ai sters commenturile din "int main".

EDIT:

Pe linux se poate bloca cat de cat calculatorul si cu:


int main(int argc,char** argv)
{
while(1)
;

return 0;
}

Posted

Dragut. Dar cum sta treaba cu #ifdef BSD? Sa inteleg ca merge si pe sisteme de operare inrudite cu GNU/Linux?

EDIT:

Pe linux se poate bloca cat de cat calculatorul si cu:


int main(int argc,char** argv)
{
while(1)
;

return 0;
}

Desigur. Se numeste fork bomb ;-)

Posted

Da, merge foarte bine si pe sisteme inrudite cu cu GNU/Linux. :)

Dar nu mi se pare mare lucru. Eu eram fericit ca am inteles kernelul Linux. Si de mult voiam sa fac asta pentru ca mi se parea ceva deosebit sa poti schimba ledurile de la tastatura fara sa apesi Num Lock, Caps Lock sau Scroll Lock, sa te joci cu ele si acum am reusit. :)

EDIT:

Cred ca gresesti.

Eu stiam ca fork bomb inseamna sa folosesti fork() in while si sa iti creeze procese la fel cu cel curent in memorie. :)

Bine ca mi-ai dat idei. Poate fi combinat cu fork bomb si atunci chiar ca blocheaza tot.

Posted (edited)

De la programelul asta pana la intelegerea kernelului Linux ii cale lunga. Este bine ca te intereseaza subiectul (any kernel == truly l337 stuff ).

Iti recomand niste carti:

Understanding The Linux Kernel (sau Linux Kernel in a Nutshell pentru o introducere blitz)

Linux Device Drivers

EDIT:

Cred ca gresesti.

Eu stiam ca fork bomb inseamna sa folosesti fork() in while si sa iti creeze procese la fel cu cel curent in memorie. :)

Bingo. Stiam eu ca vazusem undeva bucata aia de cod; in wiki este apelat fork(). La tine este doar o bucla infinita.

Edited by wvw
Posted

Eu nu glumesc. M-am uitat in codul kernelului ca dobitocul cateva saptamani pana sa inteleg ce face si sa gasesc anumite parti mai importante din el. Desi poate ca mai am mult de invatat.

Multumesc pentru carti. :)

EDIT:

Am o idee. As putea ajuta la o distributie Linux a RST cu toate programele importante de securitate gata instalate. (inclusiv programe de windows rulate cu Wine)

Dar cred ca la inceput o sa fie foarte greu pentru ca nu am mai facut asa ceva si nu o sa iasa mare lucru. Dar sunt sigur ca pana la urma o sa merite munca.

Posted (edited)
Eu nu glumesc. M-am uitat in codul kernelului ca dobitocul cateva saptamani pana sa inteleg ce face si sa gasesc anumite parti mai importante din el. Desi poate ca mai am mult de invatat.

Strong. Astfel te-ai convins ca versiunea 2.6 a kernelului este dracoasa.

Ar fi o idee sa incepi cu o versiune mai veche/mai putin complexa daca vrei sa intelegi si sa faci Linux haxxing.

Studiaza situl asta: http://kernelnewbies.org/

Ah... si nu uita de assembler.

Edited by wvw
Posted
Strong. Astfel te-ai convins ca versiunea 2.6 a kernelului este dracoasa.

Ar fi o idee sa incepi cu o versiune mai veche/mai putin complexa daca vrei sa intelegi si sa faci Linux haxxing.

Studiaza situl asta: http://kernelnewbies.org/

Ah... si nu uita de assembler.

Imi place asamblarea, stiu baza desi am probleme la programele mai complexe.

EDIT:

Gata, am facut destul offtopic. Multumesc pentru linkuri si carti.

Posted
Nu prea ma pricep la titluri.

Nu o consider vulnerabilitate sau chiar daca este nu este folositoare. E un rahat cu care schimbi ledurile si poti bloca calculatorul.

Dar este luat de mine si facut de mine cu parti din kernelul Linux.

In schimb acest program este vulnerabil (buffer overflow, cum am mai spus) si poti deschide un shell cu ajutorul lui daca il compilezi dupa ce ai sters commenturile din "int main".

EDIT:

Pe linux se poate bloca cat de cat calculatorul si cu:


int main(int argc,char** argv)
{
while(1)
;

return 0;
}

nu vad de ce s-ar bloca daca faci treaba aia? Atata timp cat procesul respectiv nu ruleaza pe real time un alt process ii da kill lejer. ctrl+alt+F1,2,3,4.... sa treci la alta consola si dai kill :)

Daca pui fork in bucla e alta mancare de peste pt ca umplii RAM-ul cu procese la infinit. Faza este ca nu e chiar infinit. In kernel ai limita de threaduri si de procese. Una din temele de laborator din faculta a fost sa aflam care e aceasta limita :D Iti dai cum s-a testat nu?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...