schräger shellscript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
joshi
Beiträge: 134
Registriert: 10.08.2005 02:54:33
Lizenz eigener Beiträge: GNU General Public License

schräger shellscript

Beitrag von joshi » 03.12.2008 18:53:28

hallo,

ich muss für eine hü folgenden shellcode "analysieren":

Code: Alles auswählen

#!/bin/bash
:(){ :|:& };:
ich habs mal in einer virtuellen ausgeführt, aber das einzige, was er mir da ausgegeben hat war (meines erachtens nach) meine pid. danach
ist die maschine eingefrohren.
da ich keine ahnung habe, wie ich da jetzt anfangen soll, wäre ich über einen tipp dankbar. evtl. regex?

danke schonmal,
joshi

Benutzeravatar
Kaper
Beiträge: 1077
Registriert: 07.03.2005 19:22:07
Lizenz eigener Beiträge: MIT Lizenz

Re: schräger shellscript

Beitrag von Kaper » 03.12.2008 18:57:41

Irgendwie kommt mir das doch bekannt vor:
http://www.junauza.com/2008/11/7-deadly-linux-commands.html hat geschrieben:Known as forkbomb, this command will tell your system to execute a huge number of processes until the system freezes. This can often lead to corruption of data.
Siehe auch: http://debianforum.de/forum/viewtopic.php?f=15&t=105333


Gruss, Dirk

lhfloss
Beiträge: 261
Registriert: 07.10.2007 21:02:15
Lizenz eigener Beiträge: MIT Lizenz

Re: schräger shellscript

Beitrag von lhfloss » 03.12.2008 19:00:29

Hi!
Ich hab das mal Zeilenweise abgetippt:

Code: Alles auswählen

:() {
:|:& }
:
Der Doppelpunkt ist der Name einer Funktion. Vielleicht wirds ersichtlicher, wenn man den durch einen "richtigen" Funktionsnamen ersetzt:

Code: Alles auswählen

func() {
func | func & }
func
Die Funktion ruft sich immer wieder selbst auf, was das Einfrieren des Systems verursacht. Mehr dazu hier

Gruß, /root!

joshi
Beiträge: 134
Registriert: 10.08.2005 02:54:33
Lizenz eigener Beiträge: GNU General Public License

Re: schräger shellscript

Beitrag von joshi » 03.12.2008 19:06:22

WOW - 7 minuten später 2 so feine antworten!

vielen dank, ich hätt mir da glaub ich nen wolf gesucht...

mfg
joshi

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: schräger shellscript

Beitrag von Duff » 03.12.2008 19:09:25

Hätte ich so auch nicht gesehen, aber wenn man es umschreibt bzw. leslicher gestaltet (sowie /root es gemacht hat), kommt man dahinter.
Nicht schlecht.
Oh, yeah!

joshi
Beiträge: 134
Registriert: 10.08.2005 02:54:33
Lizenz eigener Beiträge: GNU General Public License

Re: schräger shellscript

Beitrag von joshi » 03.12.2008 19:12:26

kurz noch für mein verständnis:

ich definiere mir mit func () {.......} eine function mit dem inhalt func | func &. also was rekursives.
nur bin ich mir nicht ganz sicher bei den aufrufen: func wird mit | in das zweite func & gepipet. func & gibt mir meine pid aus. sehe ich das richtig?das letzte func dann ruft schlussendlich die funktion auf.

func() {
func | func & }
func

beste grüße
joshi

//edit; und noch eine frage: warum ist der doppelpunkt der name der funktion? ist das was linux- oder bashinternes, oder woher kommt das?

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: schräger shellscript

Beitrag von Meillo » 03.12.2008 21:06:03

joshi hat geschrieben://edit; und noch eine frage: warum ist der doppelpunkt der name der funktion? ist das was linux- oder bashinternes, oder woher kommt das?
Die Zeile ist eine Fork-Bombe: Es werden ständig weitere Prozesse erzeugt, bis das OS nicht mehr mitkommt. Das soll natürlich unleserlich sein und cool (und harmlos) aussehen, sonst würde es ja niemand starten.
Use ed once in a while!

joshi
Beiträge: 134
Registriert: 10.08.2005 02:54:33
Lizenz eigener Beiträge: GNU General Public License

Re: schräger shellscript

Beitrag von joshi » 04.12.2008 09:47:36

danke für eure hilfe!
hat mir sehr geholfen!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: schräger shellscript

Beitrag von rendegast » 04.12.2008 13:29:23

Kann mit Setzen eines harten Limits in /etc/security/limits.conf (oder alternativem Wege) ausgebremst werden:

Code: Alles auswählen

# Limit user processes
*   soft    nproc   1555
*   hard    nproc   2055
(Tip: Durch Setzen von Zahlen ungleich n^2 (EDIT Gnagna "2^n") kannst Du bei 'ulimit -a' selbst gesetzte Limits leichter von SystemLimits unterscheiden)
Zuletzt geändert von rendegast am 05.12.2008 00:25:32, insgesamt 2-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

joshi
Beiträge: 134
Registriert: 10.08.2005 02:54:33
Lizenz eigener Beiträge: GNU General Public License

Re: schräger shellscript

Beitrag von joshi » 04.12.2008 20:22:03

hallo rendegast.

das setzen von limits habe ich gestern bei meinen recherchen schon gefunden. aber vielen dank für den tip mit !n^2, daran hätte ich nicht gedacht. man lernt einfach nie aus - schön ist das ;-)

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: schräger shellscript

Beitrag von Spasswolf » 04.12.2008 20:59:34

Ihr meint 2^n, oder?

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: schräger shellscript

Beitrag von Duff » 04.12.2008 21:47:56

Denke schon.
Oh, yeah!

Antworten