Інцидент неминучий. Є лише дві речі, на які ви можете вплинути. Це те, наскільки легко вас буде зламати, та чи будете ви та ваші колеги знати, що робити коли це станеться.
Сьогодні чогось згадалося, як я кілька років тому майже одночасно спілкувався з двома джентльменами на тему неминучості настання інциденту, тобто факту компрометації інформаційних систем. Контексти були різні: в одному випадку ми обговорювали принципи побудови систем та процесів виявлення та реагування на інциденти (Security Operations Center, SOC), в іншому – доцільність проведення тесту на проникнення по соціальному каналу. Але реакція була майже однакова та досить типова: як це інцидент настане? що значить неминуче? та у нас тут і моніторинг, і реагування, і гайки скрізь закручені.
Пройшов час, і обидва ці джентльмени, точніше інфраструктури, безпеку яких вони забезпечували, стали цілями досить типових атак з використанням все тієї ж соціальної інженерії. Інциденти були досить потужні, але залишмо хоч трохи інтриги. Скажу лише, що це вочевидь вплинуло напрямок їхньої подальшої кар’єри.
До чого це я? Ні, я не про те, що коли ваші аргументи не діють, варто трохи почекати. Хоча інколи це непогана стратегія. Я просто хочу вам повторити те, що казав їм.
Вас зламають. Якщо у вас є що красти та якщо немає. Якщо у вас є Політика безпеки та якщо немає. Якщо у вас є сертифікат PCI DSS або ISO27000 та якщо є обидва. Якщо у вас три антивіруси або нуль. Якщо ви не проводите кібернавчання для персоналу та якщо ви їх проводите. Якщо ви робите пентести в повному обсязі та якщо ви навіть не скануєте периметр nmap-ом зі скриптами. Вас зламають: хтось, колись, з відомих або невідомих вам причин це зробить, тому що це можна зробити. Я знаю як — і повірте, це не вища математика (її я теж знаю). А ще, звичайно ж, я на власній шкурі знаю як це, коли вас зламують.
Тому кажу вам безплатно те, що їм сказав за гроші: інцидент неминучий. Є лише дві речі, на які ви можете вплинути. Це те, наскільки легко вас буде зламати, та чи будете ви та ваші колеги знати, що робити коли це станеться.
Якщо ви не помітили, то зараз на хвилі “неприємного” для деяких голосування України в Радбезі ООН піднімається хвиля пропаганди під заголовком “Ви взагалі на чийому боці?” Але сьогодні не про це. Сьогодні я вам розкажу про групову ментальність і чому не люблять євреїв.
Написати цей пост я вирішив після того, як почав читати відверто пропагандистську статтю з таким само заголовком, яка, у суто маніпулятивній манері, розпочиналася тезою про те, що люди просто так ненавидять одне одного. Буцімто це їхня нормальна особливість, з цього і виходимо. Далі я не читав, і ось чому.
Люди не ненавидять одне одного, вони бояться та оминають “інших” людей, та мають природну властивість бути кращої думки про “своїх”, ніж про “чужих”. Насправді це все, і тут пояснення можна завершувати, тому що ксенофобія, нацизм та антисемітизм пояснюються саме цими особливостями людської природи. Але продовжимо.
Є в соціальній психології поняття in- та out-груп. Воно досить абстрактне, але основна думка така: для кожного індивідуума є певні групи, в які він входить (сім’я, клас, коло друзів, колектив на роботі, мешканці району, міста, держави й т.і.) Так ось, наука явища полягає в тому, що люди схильні поважати, підтримувати та захищати членів своєї in-групи та їхні інтереси. При цьому все те саме помножене на -1 вони відчувають до представників out-груп, про яких вони можуть не мати жодного уявлення: важливо лише те, що вони “з ними”, а не “з нами”.
Якщо посидіти та подумати, то це дуже крутий механізм соціального самозахисту. Природа нас ним наділила, щоб ми елементарно вижили. Людина сама по собі була нічого не варта в цьому світі років так 40000 тому. Вона була слабша та повільніша майже за всіх інших тварин її розміру. Вона занадто довго мала піклуватися про своє потомство у порівнянні з іншими видами. Тому єдиний шлях до виживання лежав через соціальну організацію: лише разом люди могли вистояти як вид. А природі тільки цього і треба: виживи, залиши потомство, а потім давай до побачення.
Отже, люди почали об’єднуватися в групи, племена, етноси, нації тощо. Десь по дорозі вони почали складати основну загрозу одне для одного, тому навіть коли на планеті не залишилося видів, які могли б скласти нам конкуренцію, концепція об’єднання та протистояння все ще актуальна і є основною рушійною силою зовнішньої політики. Та, що цікаво наразі, пропаганди. Пропаганда в цьому контексті полягає в правильному формуванні уявлення населення про те, хто сьогодні “з нами”, а хто ні.
Всі жителі України помітили, як під час Майдану, а пізніше — окупації Криму та частини Донбасу, в російських пропагандистських ЗМІ розпочалася тотальна кампанія під гаслом “нас хотят разъединить, нас хотят поссорить”. Як психолог-аматор я бачу в цьому підлу, цинічну, але при цьому дуже професійну маніпуляцію. Таким чином російські пропагандисти по суті нав’язали населенню потрібну думку: все, чуваки, ми з хохлами тепер не браття, нас роз’єднали. Ми тепер в різних групах, кінчайте вважати їх своїми. Можна брати в руки калаша і йти захищати нових своїх — тих мешканців України, які розмовляють російською. Точніше, тих з них, що рвуться до влади в східному регіоні. Ну ви зрозуміли.
Ще один показовий приклад це антисемітизм як системний прояв концепції свої/чужі протягом тисячоліть. Юдаїзм — єдина всесвітня етнічна релігія, євреї — самобутня та цілісна нація, поширена майже по всій планеті. Асиміляція євреїв в країнах перебування — явище вкрай рідке. І ми можемо довго дискутувати про причини нелюбові до євреїв, але психологія за цим явищем проста: люди не люблять не євреїв, а інших. Так сталося, що бути іншими — основний зовнішній прояв єврейської культури. І політики та пропагандисти не оминають шансу скористатися цим. Навіщо? Щоб об’єднати своїх прихильників для боротьби з чужаками. Історичні приклади ми всі знаємо.
Сподіваюся, що тепер ви, читаючи та слухаючи спроби маніпулювати вами за допомогою принципу in-/out-груп, зможете їх розрізнити та дати їм відсіч. А ще, я майже впевнений, що тепер ця картинка виглядає для вас дещо по-новому.
Бережіть себе, своїх близьких, та зовсім незнайомих людей.
Нещодавно в інтернеті знову набули популярності історії про шкідливі програми, які поширюються у SVG файлах, відправлених у Facebook. Ви можете дізнатися більше про цей вектор атаки та методи зловмисників в цьому пості, але мою увагу привернуло інше.
Як ви, напевно, знаєте, SVG це векторний графічний формат, який, по суті, є файлом XML, що містить інструкції з малювання різних зображень та, що декому може здатися дивним, може містити програмний код JavaScript. Ось приклад SVG, відкривши який в більшості сучасних браузерів, ви побачите синє коло та запустите зовнішній сценарій, на який вказує відредаговане посилання:
На щастя, це спрацює лише тоді, коли в адресному рядку браузера явно вказати URL SVG-файлу, або ж якщо файл буде відкрито з диска; <IMG SRC = більш не працює з очевидних причин.
Отже, коли тема поширення шкідливих програм у SVG піднялася знову, цього разу в контексті недостатньої фільтрації вмісту в Facebook Messenger, я подумав про наслідки для приватності, які несе цей (не дуже ефективний) захід безпеки. Я гадав, що було б гарною ідеєю використати JavaScript-код в зображенні SVG, щоб перевірити, як сучасні месенджери обробляють цей формат файлів.
Після низки повідомлень, відправлених моїй дружині та колегам, я сподіваюся, що мені не заборонять використовувати месенджери, які я використав під час тестування. І, звичайно ж, у мене є чим з вами поділитися.
Гарна новина полягає в тому, що Signal, Viber, WhatsApp, та Facebook Messenger і Telegram у своїх «секретних» режимах, не брешуть, стверджуючи, що шифрують повідомлення з кінця в кінець. Хоча, в разі WhatsApp і Telegram, вставлені в повідомлення URL викликали деяку активність з боку клієнта, крім цього ніхто більше не “з’явився” в журналах вебсервера.
Погана новина в тому, що на цьому хороші новини закінчуються.
Розпочнемо з очевидного: Slack здійснює активний перегляд вмісту за посиланням для того, щоб показати його в графічному інтерфейсі. Це круто, ми всі знаємо що так і потрібно, в цьому пості я просто використаю це як приклад того, як ця діяльність виглядає. Отже, коли ви відправляєте посилання, вебсервер, що його містить, реєструє в журналі ось такий запит:
Пояснюю. Спершу якийсь хост Facebook підтягує SVG-файл, а після цього відбувається низка запитів, які генеруються “вбудованим” у SVG скриптом, а це наочно демонструє, що сценарій насправді виконуються в якомусь “браузері”. Цілком можливо, що це і є елемент фільтрації вмісту, тому що це відбувається не кожного разу та виглядає як начебто поведінка “живого” користувача. Все одно, це якось дивно 🙂
Як не дивно, Google Hangouts не показав жодних ознак інтересу до мого посилання.
Це залишає багато запитань відкритими, проте, очевидно одне: політики конфіденційності нам не брешуть і ми насправді не є власниками даних, які ми пересилаємо за допомогою месенджерів, якщо наше спілкування не зашифроване з кінця в кінець.
Під час цих тестів я використовував дивовижний JavaScript-кейлоггер by John Leitch.
Various stories about malware spreading over SVG files sent on Facebook were circulating over the interwebs lately. You can read more about this vector and the methods used by malicious hackers in this post, but what caught my interest was not the attack itself.
As you probably know, SVG is a vector image format that is, in fact, an XML file containing various drawing instructions and, surprisingly to some, capable of containing and running JavaScript code. For example, when opening in most modern browsers, this SVG will show you a blue circle and run an external script loaded from the redacted host.
This will work only when the browser is explicitly pointed to the SVG file URL or if the file is open from the disk; <img src= does not work anymore for obvious reasons.
So, when this SVG topic has popped up again, this time in the context of poor content filtering in Facebook Messenger, I instinctively thought about privacy implications introduced by this (apparently inefficient) security measure. I thought it could be a good idea to use JavaScript code delivered in SVG to check how modern instant messengers process this file format.
After a series of messages sent to my wife and colleagues, I feel a subtle hope that I will not be banned from using the messengers I’ve tested. And, of course, I have some results to share.
The good news is that Signal, Viber, WhatsApp, and both Facebook Messenger and Telegram in their “secret” modes, all five claiming end-to-end encrypted communications, were not caught cheating. Although in WhatsApp and Telegram, pasted URLs resulted in some activity originating from the client, no one else appeared in the web-server logs.
Bad news is that that’s pretty much all good news.
Starting from expected obvious: Slack does an active preview of the linked content to show it in the GUI. That’s cool; we all know that, so I use it as an example of how this kind of activity looks like for this post. So, when you send a link, the web-server serving it registers this request in the log:
As you can see, first, some Facebook-owned host fetches the SVG, and after that, there is a series of requests to “embedded” script URL, which demonstrates that the script is actually run at some “browser.”
Strangely enough, Google Hangouts haven’t shown any sign of interest in my links.
This leaves a lot of questions open. However, one thing is obvious: privacy policies are correct, and we don’t really own the stuff we send over Instant Messengers unless our comms are encrypted end-to-end.
During these tests I used awesome JavaScript keylogger by John Leitch.
I have enabled Slack notifications in my standalone XSS Hunter installation that I’ve finally debugged out of complete uselessness earlier today.
Thanks to @igorblum, who has, besides pushing me to try out XSS Hunter in the first place, pointed my attention to the lack of timeliness of notifications in XSS Hunter’s default notifications delivery method: emails sent via MailGun. In addition to abovementioned delays, MailGun has established the procedure of “Business Verification” of all accounts and domains you register. Which is, in fact quite convenient, but requires service desk manual interaction anyway.
Igor’s initial idea was to push notifications to the Telegram channel, which is quite cool. However, after reading his instructions on accomplishing this task, I felt that it’s a little bit too much for me for the rest of the day. So I made a quick and dirty hack: I created a bot in my ‘personal’ Slack team and made it push notifications to #general channel.
Now, every time an XSS is fired in XSS Hunter, I get something like this:
You can do it to using this short cheat sheet I’ve published on GitHub.
Update: I have added the option of sending direct messages instead of posting to a channel. This gives you cleaner channels and a nice bot logo in messages. Enjoy!