Pull to refresh

Управление памятью в Objective C, работа с KeyChain, GUI-утилита для монтирования SSHFS

Reading time 6 min
Views 14K
Development for iOS *
Цель моей статьи — дать начальное представление читателю о том, как работать с памятью в Objective C, рассказать о работе с KeyChain и показать новую версию своего приложения для монтирования SSHFS, которая была написана всего за несколько дней (в сумме), но уже вполне может составлять конкуренцию громоздкому Macfusion.app, и которая работает без напильника и не пишет ваши пароли в открытом виде в системный лог.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 10

Выделение паролей в MAC OS X — эволюция malware?

Reading time 3 min
Views 9.8K
Group-IB corporate blog Information Security *
Финский исследователь Juuso Salonen опубликовал специальную утилиту (http://juusosalonen.com/post/30923743427/breaking-into-the-os-x-keychain), назначение которой заключается в выделении паролей из подсистемы управления парольной информации Keychain. Keychaindump уже привлекала внимание исследователей, которые убеждены, что подобный подход можно успешно использовать при разработке вредоносного кода под MAC OS X.
Впервые, она была представлена в MAC OS 8.6. Keychain хранит различные типы парольной информации (формы к WEB-сайтам, FTP, SSH-аккаунты, доступ к сетевым «шарам», беспроводным сетям, цифровые сертификаты).

Файлы Keychain хранятся в ~/Library/Keychains/, /Library/Keychains/, и /Network/Library/Keychains/ соответственно. «login», файл Keychain по-умолчанию, автоматически снимает блокировку сразу же после успешного логина пользователя в систему со своим пользовательским паролем. Тем не менее, реальный пароль к нему может и не отличаться от того, что используется пользователем. При этом не разрешено устанавливать нулевой пароль, автоматическая блокировка осуществляется с течением времени при длительном простое системы.

image
image

Как только пользователь разлочил keychain, пароль превращается в 24-байтовй «master key» и хранится в сегменте памти процесса «securityd». Путем отдельного исследования, была выявлена конкретная хранимая структура в области памяти, которая указывает на «master key». Она содержит поле размером в 8 байт с соответствующим значением «0x18» (24 в HEX'е).
Читать дальше →
Total votes 14: ↑10 and ↓4 +6
Comments 8

Security Week 39: Вечер восхитительных историй о том, как бизнесу наплевать на безопасность

Reading time 4 min
Views 12K
«Лаборатория Касперского» corporate blog Information Security *
В этот раз новости из нашего дайджеста содержат самоочевидную мораль: многим компаниям плевать на безопасность их клиентов, пока это не наносит прямой финансовый ущерб. К счастью, это касается не всех компаний, но эта неделя выдалась особенно богатой на подобные постыдные истории.

Едва успела выйти новая версия MacOS (недели не прошло), как исследователь из Synack Патрик Уордл опубликовал шикарный пост о High Sierra. Оказывается, что Keychain – защищенный контейнер для учетных данных, PIN-кодов, номеров банковских карт и прочих важных данных – на самом деле уже версии три как ничего не защищает. То есть по факту Keychain это такое место, откуда можно разом украсть вот это вот все.

Товарищ Уордл заявил, что приложение, хоть подписанное, хоть неподписанное, может сливать дамп всего содержимого Keychain в открытом, незашифрованном виде. Строго говоря, приложения вполне официально имеют доступ к Keychain, но только к своим данным – а тут вроде бы ко всем. Важный нюанс: эксплойт работает только с разблокированным Keychain, однако по умолчанию он разблокируется при логине в систему.
Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 3

Изучаем Adversarial Tactics, Techniques & Common Knowledge (ATT@CK). Enterprise Tactics. Часть 6

Reading time 24 min
Views 7.6K
Information Security *
Tutorial

Получение учетных данных (Credential Access)


Ссылки на все части:
Часть 1. Получение первоначального доступа (Initial Access)
Часть 2. Выполнение (Execution)
Часть 3. Закрепление (Persistence)
Часть 4. Повышение привилегий (Privilege Escalation)
Часть 5. Обход защиты (Defense Evasion)
Часть 6. Получение учетных данных (Credential Access)
Часть 7. Обнаружение (Discovery)
Часть 8. Боковое перемещение (Lateral Movement)
Часть 9. Сбор данных (Collection)
Часть 10 Эксфильтрация или утечка данных (Exfiltration)
Часть 11. Командование и управление (Command and Control)

Заполучив учетные данные злоумышленник получает доступ или даже контроль над системой, доменом или служебными (технологическими) учетными записями. Противник, вероятно, будет пытаться заполучить легитимные учетные данные пользовательских и административных учетных записей, чтобы идентифицироваться в системе и получить все разрешения захваченной учетной записи, тем самым усложняя защищающей стороне задачу по обнаружению вредоносной активности. Противник также, при наличии возможности, может создавать учетные записи с целью их последующего использования в атакуемой среде.
Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 0

Создание инкрементального сервера для iOS Team

Reading time 3 min
Views 2.7K
Development for iOS *
image

Бесплатная книга

После пяти лет наступаний на одни и те же грабли, и полугода поисков DevOps-а, который знает что-такое Provision Profile и как от него зависит развертывание приложения, было принято решение составить пошаговую инструкцию, в картинках, о том, настраивать рабочее окружение в iOS Team с минимальными финансовыми вложениями (к примеру, когда нет проплаченных аккаунтов GitHub или Jira), а работа кипит.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Comments 1

Keychain API в iOS

Reading time 3 min
Views 9K
Information Security *Development for iOS *Swift *
Всем привет!

Не так давно столкнулся с необходимостью использования Keychain-а для обеспечения дополнительной защиты при входе в приложение.

Я нашел много хороших статей по этой теме, но в основном там описываются сторонние фреймворки, упрощающие жизнь, а было интересно посмотреть, как работать с API напрямую. В этой статье я попытался объединить документацию Apple с практикой на простом примере.

Начнем с небольших определений


Keychain — зашифрованная база данных, куда сохраняются небольшие объемы пользовательской информации (см. документацию Apple).

Общая схема работы продемонстрирована на рисунке.

image

Keychain API Services в свои очередь являются часть фреймворка Security, но его рассмотрение требует отдельной статьи.

Добавление элемента


let keychainItemQuery = [
     kSecValueData: pass.data(using: .utf8)!,
     kSecClass: kSecClassGenericPassword
 ] as CFDictionary

 let status = SecItemAdd(keychainItemQuery, nil)
 print("Operation finished with status: \(status)")

Выше приведен пример сохранения пароля в Keychain.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Comments 0

Swift. KeyChain. Property wrapper

Reading time 5 min
Views 1.7K
Development for iOS *Swift *

Так или иначе, все реже можно найти приложение, которое не требует создания аккаунта для полноценной работы. В связи с этим возникает необходимость в некоторого рода защищенном хранилище аутентификационных данных. В iOS для этих целей используется framework Security и его сервис KeyChain. Далее будет описан подход для работы с этим сервисом.

Читать далее
Total votes 1: ↑1 and ↓0 +1
Comments 0