четвъртък, 4 юли 2013 г.

Достъп до потребителско име и парола на потребител на Facebook чрез използване на браузърна добавка.

Като курсова работа и най-вече като забавление написах една браузерна добавка, с чиято помощ се записва паролата на потребител, използващ facebook. По-долу ще Ви представя въпросната курсова работа. Браузърните добавки (add-ons) са често подценявани от гледна точка на сигурност. Болшинството системни администратори страдат от заблудата, че ако ограничат правата на потребителя да инсталира приложения това ще реши всички проблеми със сигурноста. Целта на тази курсова работа е да покаже нагледно как може да бъде записана конфиденциална за потребителя информация и после да бъде видяна. Браузърна добавка може да бъде инсталирана в почти всеки браузер без текущият потребител да притежава администраторски права за системата. Тази курсова работа е написана само с цел демонстрация. Авторът по никакъв начин няма за цел да използва тази добавка за незаконни цели и кражба на лични данни и не поема никаква отговорност, ако някой друг употреби приложения сорс код и информация с такава цел. Всеки, употребил информацията, описана тук с подобни цели, подлежи на наказание съгласно закона. Браузърните добавки имат достъп до файловата система, могат да изпълняват native функции на операционната система, да записват текста, който потребителят въвежда в браузера си и много други неща. Повечето производители на браузери предоставят множество инструменти за лесна разработка на подобни добавки, обединени в пакет и известни като software development kit (SDK). Почти всяко SDK ни позволява да инжектираме наш JavaScript на ниво страница, да получим данни от него или да изпратим данни до него. Добавката е разработена само за Mozilla FireFox с помощта на FireFox add-on SDK, но може с малко модификации да бъде инсталирана и във Google Chrome. FireFox add-on SDK, известен още като Jetpack е проект на Mozilla Fondation, който ни предоставя инструменти и framework за лесна разработка на добавки (add-ons) за браузера Mozilla Firefox. Освен локална версия, в която има инструмент за командния ред с която помощ може да се създават и тестват добавки, той стартира и web базирано IDE. Добавките, разработени с Jetpack не изискват браузерът да бъде рестартиран за да бъдат инсталирани или деинсталирани. Модулите на SDK-то са предвидени да бъдат преносими и да спестяват промени, при ъпгрейди на браузера. Добавките се разбработват с използване на HTML, CSS и JavaScript чрез използване на CommonJS конвенцията. За разработката на тази добавка ще използваме FireFox add-on SDK от командния ред тъй, като кодът, писан в онлайн версията на IDE-то е достъпен за всеки потребител на мрежата. FireFox add-on SDK е напълно безплатно и с отворен код. Текущата му версия е 1.14 и може да бъде свалена от https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/addon-sdk-1.14.zip. Това е файловата структура на добавката, показана в конзолата:
. 
├── data 
│   ├── passwordStealer.js 
│   └── passwordStealerResults.js 
├── doc 
│   └── main.md 
├── lib 
│   └── main.js 
├── package.json 
├── README.md 
└── test 
    └── test-main.js 

4 directories, 7 files
Добавката закача свой собствен манипулатор (handler), който се задейства, когато потребителят напише потребителското си име и парола във логин формата на https://www.facebook.com/ и на всички форми по този домейн, където има поле за записване на парола. Този манипулатор изпраща данните към друг модул на добавката, който от своя страна го записва във simple-storage-а на браузъра (simple-storage е просто хранилище, където може да пазим информация във браузъра между рестартите). Това е кодът, който извършва взимането на написаните от потребителя данни. Намира се в passwordStealer.js файла. Този код се задейства преди формата да бъде изпратена към фейсбук. Взима стойностите на полетата и чрез self.port.emit('getPassword', stolenPasswordAndEmailString); подава взетите данни към основния модул на добавката. В основния модул – main.js, когато се случи събитието getPassword, манипулаторът, задачен за него взима подадените данни и ги записва в simple-storage. Този манипулатор може да бъде видян в main.js. След това можем да достъпваме тези данни по различен начин. Можем да ги запишем в текстови файл, който по-късно да може да бъде отворен, можем да ги изпратим на имейл и пр., но целта ни в случая е проста демонстрация за това ще покажем данните само на страница, която потребителят не знае. В случая аз избирам това да е този url http://get.bg/index.html?gnaa=true. Както може да бъде видяно на screenshot-a, показан по-долу той връща грешка.
Отворен, обаче през Mozilla FireFox на която е инсталирана добавката може да бъде видян списък със записаните потребителски имена и пароли.
Когато засече този url добавката променя страницата и добавя таблицата и бутона Clear saved info. При натискане на този бутон се изчистват всички запаметени потребителски имена и пароли. Кодът, който засича този url може да бъде видян в main.js файла. Както се вижда ние викаме passwordStealerResults.js като на onAttach събитието му подаваме всички записани пароли. Освен това осигуряваме обработка на clearSavedInfo събитието, при което ще изчистваме записаните данни. Във passwordStealerResults.js сглобяваме таблица със записаните данни и създаваме бутон, причиняващ clerSavedInfo събитието. Описаното до тук е нужно да се билдне със cfx инструмента от командния ред на FireFox add-on SDK. Инструментът cfx ни дава възможност да разработваме, тестваме и експортваме към готова браузърна добавка. Най-крато с него се работи по следния начин. Описанието е как се работи под Linux, но под Windows всичко е почти същото.
  1. От командния ред отиваме до мястото където сме разпакетирали архива на FireFox add-on SDK-то и пишем следната команда:
    source bin/activate. 
    
    Като резултат получаваме следното:
    georgi@sepulcher:~/Documents/addon-sdk-1.14$ source bin/activate 
    Welcome to the Add-on SDK. Run 'cfx docs' for assistance.
    
  2.      Създаваме директория с името името на бъдещата добавка.
    (addon-sdk-1.14)georgi@sepulcher:~/Documents/addon-sdk-1.14$ mkdir passwordStealer
    
  3. Отиваме в директорията и изпълнявме командата cfx init. Това създава скелета на бъдещата добавка:
    (addon-sdk-1.14)georgi@sepulcher:~/Documents/addon-sdk-1.14$ cd passwordStealer 
    (addon-sdk-1.14)georgi@sepulcher:~/Documents/addon-sdk-1.14/passwordStealer$ cfx init 
    * lib directory created 
    * data directory created 
    * test directory created 
    * doc directory created 
    * README.md written 
    * generated jID automatically: jid1-2lQn4A7yK6W9BA 
    * package.json written 
    * test/test-main.js written 
    * lib/main.js written 
    * doc/main.md written 
    
    Your sample add-on is now ready. 
    Do "cfx test" to test it and "cfx run" to try it.  Have fun! 
    (addon-sdk-1.14)georgi@sepulcher:~/Documents/addon-sdk-1.14/passwordStealer$    
    
  4. Инструментът cfx ни предлага приятната възможност да тестваме добавката в отделна инстанция на FireFox, където е инсталирана само тя. За да ползваме тази възможност просто трябва да изпълним cfx run. По-долу прилагам изображение на резултата от командата.
  5. След като приключим с разработката и тестовете изпълняваме cfx xpi командата, чрез която инструмента ни създава добавката, пакетирана за инсталиране в браузер.
    (addon-sdk-1.14)georgi@sepulcher:~/Documents/addon-sdk-1.14/passwordStealer$ cfx xpi 
    Exporting extension to passwordstealer.xpi. 
    (addon-sdk-1.14)georgi@sepulcher:~/Documents/addon-sdk-1.14/passwordStealer$ 
    
  6. Чрез командата deactivate деактивираме командния ред на FireFox add-on SDK.
    (addon-sdk-1.14)georgi@sepulcher:~/Documents/addon-sdk-1.14$ deactivate 
    georgi@sepulcher:~/Documents/addon-sdk-1.14$ 
    
Kaто резултат от cfx xpi получаваме .xpi файл, който представлява инсталационния модул на добавката. Той може да бъде инсталиран във Mozilla FireFox по следния начин.
  1. Стартираме Mozilla FireFox и избираме от менюто File -> Open File.
  2. Отиваме до .xpi файла, който искаме да инсталираме.
  3. Избираме го и кликаме на Open. След това трябва да се съгласим с инсталацията като кликнем на Install бутона.
Добавката се дейнсталира по следния начин.
  1. От менюто Tools се отива на Add-Ons и се избира добавката.
  2. Клика се на Remove.
Добавката, която беше разработена и описана в тази курсова работа показва, че потребителят трябва да бъде внимателен и да инсталира добавки към браузера си само от сигурни източници, на които има доверие, защото както се вижда може с лесна модификация на кода да записваме не само паролата за фейсбук а и всички пароли и потребителски имена. Всички файлове, описани тук, заедно с инсталатора могат да бъдат свалени от тук.

Няма коментари:

Публикуване на коментар