Пенетрациско тестирање на биометриски систем за контрола на пристап - Кратка приказна
1. Пенетрациско тестирање на биометриски систем за контрола на пристап
FaceSentry Biometric Access Control System
13.07.2019
Имавме можност да извршиме пенетрациско тестирање на FaceSentry системот за
контрола на физички пристап развиен од компанијата iWT Ltd. од Хонг Конг –
http://www.iwt.com.hk. Тестирањето беше симулирано од типот Black-Box, што претставува
уште позабавно искуство бидејќи се што добивме како информација е името на
производот.
“FaceSentry е револуционерен паметен апарат за управување со идентитети кој нуди влез
преку биометричка идентификација на лице, безконтактна паметна картичка, лична карта
или QR-код.”
За време на ова истражување, пронајдовме неколку критчни ранливости што овозможуваат
далечински да го заобиколиме самиот безбедносен систем за пристап и да добиеме
целосна контрола врз уредот со највисоки (root) привилегии.. и да ги отклучиме/отвориме
заклучените врати во самата зграда.
Листа на пронајдени ранливости:
1. Cleartext Password Storage
2. Authentication Credentials MiTM (Man-in-the-Middle) Disclosure
3. Reflected Cross-Site Scripting (XSS)
4. Hardcoded Weak SSH Credentials
5. Default Credentials
6. Privilege Escalation
7. Cross-Site Request Forgery
8. Command Injection / Arbitrary Command Execution
Започнуваме со собирање на информации (Open Source Intelligence Gathering – OSINT) со
помош на Google и барање на официјален прирачник за инсталација и прирачник за
користење за крајни корисници. Го бараме и самиот firmware доколку е јавно достапен.
Потоа продолжуваме со мапирање на отворени порти и вклучени сервиси. Извршуваме
2. динамичка анализа на софтверот и пронаоѓаме ранливост што ни овозможува да го
преземеме целиот оперативен систем (firmware) на мрежниот уред. Го анализираме
системот и пронаоѓаме уште повеќе ранливости со помош на статичка анализа на изворен
код и обратен инженеринг на бинарни податоци. Развиваме експлоатациски и Доказ на
Концепт (Proof of Concept – PoC) кодови и се обидуваме да го известиме производителот.
На крај креираме безбедносни предупредувања и ги објавуваме наодите за самите
корисници да имаат можност да си ги заштитат своите системи доколку самиот
прозиводител не покажува интерест во тоа поле.
При експлоатирањето на овие ранливости, напаѓачот има можност да:
- Ја отклучи вратата што е поврзана со тој контролер
- Добие пристап до лични и осетливи податоци за самите корисници на тој систем
- Добие пристап до фотографии и логови направени од камерите на системот
- Додаде корисник со администрациски привилегии
- Ја заобиколи контролата на пристап од далечина
- Манипулира со самата база на податоци и системот и да одбие/добие пристап
- Го исклучи целиот систем
- Заклучи човек во просторија
При читање на прирачникот, ги наоѓаме зададените креденцијали за автентикација на веб
администраторскиот панел: administrator / 123456.
Како и неколкуте чекори за користење на системот и додавање на нова персона со сликање
на своето лице, избирање своеволен ПИН код и скенирање на RFID картичка.
3. FaceSentry камерите ви го скенираат лицето и со помош на алгоритмот за разпознавање на
лице, ве известува дали сте авторизирани да влезете во таа просторија или не, и со оглед
на резултатите ви ја отклучува/отвара вратата.
Типична архитектура на FaceSentry:
4. Откако добивме пристап во веб интерфејсот, најдовме Command Injection ранливост во
функционалноста за користење на Ping Test од сетот на алатките за дијагноза:
Во полето на “Remote IP Address” наместо да ја внесуваме IP адресата од контролерот за
тестирање на комуникација, ние внесуваме специјални Linux команди и извршуваме
системски команди во оперативниот систем. Со помош на sudo командата, успешно ги
качуваме нашите привилегии на администраторско ниво, или во овој случај со корисникот
root.
Потврдување на Reflected Cross-Site Scripting (XSS) ранливост во скриптата за инсталирање
на плагини:
На параметарот ‘msg’ не се извршува доволно санирање и валидација на корисничко
внесување при што добиваме извршување на HTML и/или JS код.
Користени ‘payload’-и:
5. http://192.168.11.1/pluginInstall.php?msg=%22%3E%3Cmarquee%3Etestingus%3C/marquee%3E
http://192.168.11.1/pluginInstall.php?msg=Reflected</div><script>confirm('XSS.')</script>
Откако извршивме скенирање на отворени порти, портата 23445 беше пронајдена
отворена. Додавајќи -sSCV (Syn, Script, Version scan) аргумент на алатката Nmap, добиваме
информација дека портата е користена за SSH комуникација. Со помош на претходно
пронајдена ранливост, имавме пристап до фајлот со лозинки и откривме дека корисникот
wwwuser е зададен со слаба лозинка: 123456. Се логиравме и ја злоупотребивме
неконфигурираната sudo алатка да добиеме root:
Обидот за комуникација со продизовдителот беше неуспешен.
Безбедносните предупредувања и екплоатациските кодови како и повеќе детали за
останатите ранливости можат да се најдат на страницата на Zero Science Lab.
6.
7. Референци:
1. FaceSentry Access Control System 6.4.8 Cleartext Password Storage -
https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5529.php
2. FaceSentry Access Control System 6.4.8 Authentication Credentials MiTM Disclosure -
https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5528.php
3. FaceSentry Access Control System 6.4.8 Reflected Cross-Site Scripting -
https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5527.php
4. FaceSentry Access Control System 6.4.8 Remote SSH Root Access Exploit -
https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5526.php
5. FaceSentry Access Control System 6.4.8 Remote Root Exploit -
https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5525.php
6. FaceSentry Access Control System 6.4.8 Cross-Site Request Forgery -
https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5524.php
7. FaceSentry Access Control System 6.4.8 Remote Command Injection -
https://www.zeroscience.mk/en/vulnerabilities/ZSL-2019-5523.php