povoleni sluzby WAS: script utok

Petr Vileta stoupa na practisoft.cz
Sobota Září 3 23:55:12 CEST 2005


Resilo se tu, jak nastavit pomoci hosts.allow/deny ssh demona, aby se nemohl 
pripojit kdejaky hejhula, ale zaroven aby si clovek nezablokoval moznost se 
nekdy pripojit z pocitace, jehoz identita je znama az v okamziku, kdy si 
clovek k nemu sedne.

Takze me napadla nasledujici vec a davam to k verejne diskuzi, nez to zacnu 
programovat. Pokud se moderatorovi nebude diskuze libit, muze me s ni 
samozrejme hned vyhnat, ale nevim kam jinam to dat.

Takze pokud se k povoleni pristupu k nekterym sluzbam pouziva tcp wrapper 
(inetd, xinetd), to znamena soubory /etc/hosts.allow a /etc/host.deny, pak 
je mozne vyuzit jednu malo znamou informaci z manualu. Misto zapisovani IP 
adres/rozsahu primo do prislusne radky v prisluslenm souboru je mozne zapsat 
odkaz na soubor. Podle manualu vse, co zacina lomitkem (/) je povazovano za 
takovyto odkaz. Dale se podle manualu pristup posuzuje tak, ze se nejprve 
prohleda soubor host.allow a pokud je nalezena shoda, pristup se povoli a 
dale se nehleda. Pokud shoda nalezena neni, prohleda se soubor host.deny a 
pokud je nalezena shoda, pristup se zakaze. Pokud ani zde neni nalezena 
shoda, pristup se povoli. Tolik manual.

Takze me napadlo, ze pokud na stejnem pocitaci, na kterem chci manipulovat s 
pristupem ke sluzbam, bezi take SMTP, tak to muzu vyuzit. Poslu mail na 
tento smtp, v .procmailrc (nebo v jinem filtru) tento mail zachytim a predam 
memu programu ke zpracovani.
K odesilani ridiciho mailu pouziju mobilni telefon a to proto, ze snizim 
pravdepodobnost zfalsovani zpravy. U nas jsou 3 operatori a nazvy jejich 
domen urcenych pro mailovani jsou pevne dany a na urcitem miste mailu se 
tedy musi objevit.
Uvedu priklad. Jestlize mam mobil u Eurotelu, pak hlavicka zpravy musi 
vypadat nejak takto (radky cisluji pro upresneni):

1) Return-Path: <00420724123456 na sms.eurotel.cz>
2) X-Priority: 3
3) X-MSMail-Priority: Normal
4) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
5) Received: from sgs21.eurotel.cz (sgs21.eurotel.cz [160.218.10.221]) by 
ns.zivnosti.cz
        (8.11.6/8.11.6) with ESMTP id iAHJ2HW00807 for <petr na practisoft.cz>; 
Wed, 17 Nov 2004 20:02:17 +0100
6) Received: from Eosat_V (xgs1.eurotel.cz [160.218.160.253]) by 
sgs21.eurotel.cz
        (Postfix) with SMTP id 2DE809952E for <petr na practisoft.cz>; Wed, 17 
Nov 2004 20:01:46 +0100 (CET)
7) From: <00420724123456 na sms.eurotel.cz>
8) Message-ID: <1100721732 na Eosat_V>
9) Date: Wed, 17 Nov 2004 20:02:12 +0100
10) Subject: Zprava - GSM InfoText eMAILserver
11) To: <petr na practisoft.cz>
12) Sender: <00420724123456 na sms.eurotel.cz>
13) Reply-To: <00420724123456 na sms.eurotel.cz>
14) Status:

Je dulezite, ze radky 1,7,12 a 13 obsahuji stejneho odesilatele, coz myslim 
dost dobre zfalsovat nelze (opravte me, pokud se mylim).

Dale bude dulezity format mailu, tedy v podstate SMS. Bude to skupina znaku, 
kde:

Prvni skupina bude uzivatelske heslo. Toto heslo bude zapsane primo v mem 
programu a nebude slouzit k nicemu jinemu ani nepujde na dalku zmenit jinak, 
nez primou editaci programu.

Druha skupina bude urcovat, zda se ma zapisovat do hosts.allow nebo 
hosts.deny.

Treti skupina bude jmeno sluzby (demona), ktereho se zprava tyka.

Ctvrta skupina bude urcovat, zda se ma zapis pridat, nebo smazat.

Pata skupina bude primo udaj, ktery se ma zapsat.

Pripadny dalsi obsah zpravy se muze
a) ignorovat ???
b) povazovat za duvod k odmitnuti zpracovani zpravy ???

Dale soubory s IP adresami/rozsahy nemusi byt nutne v /etc. Jednak se tim 
opet trochu znesnadni pripadne hacknuti a za druhe je potreba, aby do nich 
mohl zapisovat uzivatel, pod kterym bezi SMTP.

Takze SMTP (v mem pripade sendmail) dostane zpravu. Preda ji procmailu (nebo 
jinemu filtru) a tam bude pravidlo, ze se to ma predat programu (jako by 
filtrovacimu) a v kazdem pripade se to bude povazovat za dorucene.

Tak a ted nastupuje na scenu muj program v Perlu. Ten nejprve zjisti, pres 
ktereho ze 3 operatoru zprava prisla (podle Return-Path). Pak provede 
kontrolu, zda pro tohoto operatora je definovany (v programu v array) 
opravneny odesilatel a zda se shoduje. Predpokladam totiz, ze nekdo muze mit 
dva nebo vice mobilu a v okamziku, kdy chce pomoci SMS otevrit neco na svem 
serveru, tak ma zrovna jiny, nez obvykle nosi sebou ;-)
Takze pokud odesilatel je overen pro daneho operatora, tak se vyhodnoti 
obsah zpravy, tedy
a) spravnost hesla
b) zda pro udanou sluzbu (treti skupina v SMS) existuje zapis v pozadovanem 
hosts.? (druha skupina v SMS).
c) zda pro udaje podle b) existuje externi seznam IP
Pokud cokoliv selze, program odesle mail na predem urcenou mailovou adresu a 
ukonci se.
Predpokladejme, ze se vsechno povedlo, takze se do externiho seznamu IP pro 
prislusnou sluzbu zapise/smaze zaslany udaj (pata skupina v SMS) a odesle se 
zprava tomu, kdo SMS zaslal. Tim se i odesilatel dozvi, ze se mu prislusny 
demon povolil/zakazal.

Pro adminy s vice rozvinutou paranoiou je jeste mozne primo k serveru pomoci 
RS232 pripojit nejaky stary mobil, zakoupit u Oskara sluzbu za 10Kc mesicne 
a zpracovavat primo SMS. I tohle umim (hotovo a vyzkouseno s Ericsonnem, ale 
neni problem predelat na jiny mobil).

Tak a ted prosim pripominky a napady. Pokud bude zajem a opravdu to 
naprogramuji, pak to samozrejme i s kompletnim navodem vystavim na svem webu 
k volnemu pouziti.
-- 
Petr

Skype: callto://fidokomik

Na mail uvedeny v headeru zpravy nema cenu nic posilat, konci to v PR* :-)
Odpovidejte na petr na practisoft cz



Další informace o konferenci Linux