AWS Pentesting
Основна інформація
Перш ніж почати пентест середовища AWS, є кілька основних речей, які вам потрібно знати про те, як працює AWS, щоб допомогти вам зрозуміти, що вам потрібно робити, як знайти неправильні конфігурації та як їх експлуатувати.
Концепції, такі як ієрархія організації, IAM та інші основні концепції пояснюються в:
pageAWS - Basic InformationЛабораторії для вивчення
Інструменти для симуляції атак:
Методологія пентестера/червоної команди AWS
Для аудиту середовища AWS дуже важливо знати: які сервіси використовуються, що викладено, хто має доступ до чого і як внутрішні AWS сервіси підключені до зовнішніх сервісів.
З точки зору Червоної Команди, першим кроком для компрометації середовища AWS є здійснення отримання деяких підтверджень. Ось деякі ідеї про те, як це зробити:
Витоки в github (або подібне) - OSINT
Соціальна інженерія
Повторне використання паролів (витоки паролів)
Вразливості в застосунках, розміщених в AWS
Підроблення запиту на бік сервера з доступом до кінцевої точки метаданих
Читання локальних файлів
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3-ті сторони вкрали
Внутрішній співробітник
Cognito підтвердження
Або шляхом компрометації невпізнаної служби, яка викладена:
pageAWS - Unauthenticated Enum & AccessАбо якщо ви робите огляд, ви можете просто запитати підтвердження з цими ролями:
pageAWS - Permissions for a PentestПісля того, як вам вдалося отримати підтвердження, вам потрібно знати кому належать ці підтвердження, і до чого вони мають доступ, тому вам потрібно виконати деяку базову енумерацію:
Базова Енумерація
SSRF
Якщо ви знайшли SSRF на машині всередині AWS, перевірте цю сторінку для хитрощів:
Хто я
Одне з перших речей, які вам потрібно знати, - це хто ви (в якому обліковому записі ви знаходитесь та інша інформація про середовище AWS):
Зверніть увагу, що компанії можуть використовувати канарські токени для виявлення, коли токени були вкрадені та використані. Рекомендується перевірити, чи є токен канарським, перш ніж використовувати його. Для отримання додаткової інформації перегляньте цю сторінку.
Перелік організацій
pageAWS - Organizations EnumПерелік IAM
Якщо у вас достатньо дозволів, перевірка привілеїв кожної сутності в межах облікового запису AWS допоможе вам зрозуміти, що ви та інші ідентифікатори можете робити та як підвищити привілеї.
Якщо у вас недостатньо дозволів для переліку IAM, ви можете використовувати перебір для їх визначення. Перевірте, як робити перелік та перебір в:
pageAWS - IAM EnumТепер, коли у вас є деяка інформація про ваші облікові дані (і якщо ви - червона команда, сподіваюся, вас не виявили), настав час визначити, які сервіси використовуються в середовищі. У наступному розділі ви можете перевірити деякі способи переліку деяких загальних сервісів.
Перелік сервісів, пост-експлуатація та постійність
AWS має вражаючу кількість сервісів, на наступній сторінці ви знайдете базову інформацію, шпаргалки з переліку, як уникнути виявлення, отримати постійність та інші трюки пост-експлуатації щодо деяких з них:
pageAWS - ServicesЗверніть увагу, що вам не потрібно виконувати всю роботу вручну, нижче в цьому пості ви знайдете розділ про автоматичні інструменти.
Більше того, на цьому етапі ви можли виявити більше сервісів, які відкриті для неавтентифікованих користувачів, ви можете змогти їх використати:
pageAWS - Unauthenticated Enum & AccessПідвищення привілеїв
Якщо ви можете перевірити принаймні свої власні дозволи на різні ресурси, ви можете перевірити, чи можете ви отримати додаткові дозволи. Вам слід зосередитися принаймні на дозволах, вказаних у:
pageAWS - Privilege EscalationПублічно відкриті сервіси
Під час переліку сервісів AWS ви можли знайти деякі з них, які викладені в Інтернет (порти ВМ/контейнерів, бази даних або сервіси черг, знімки або віджети...). Як пентестер/червона команда вам завжди слід перевіряти, чи можете ви знайти чутливу інформацію / вразливості на них, оскільки вони можуть надати вам додатковий доступ до облікового запису AWS.
У цій книзі ви повинні знайти інформацію про те, як знайти відкриті сервіси AWS та як їх перевірити. Щодо того, як знайти вразливості в відкритих мережевих сервісах, я б рекомендував вам шукати конкретний сервіс в:
Компрометація організації
Від кореневого/управлінського облікового запису
Коли управлінський обліковий запис створює нові облікові записи в організації, в новому обліковому записі створюється нова роль, за замовчуванням названа OrganizationAccountAccessRole
та надається політика AdministratorAccess управлінському обліковому запису для доступу до нового облікового запису.
Таким чином, для доступу як адміністратор до дочірнього облікового запису вам потрібно:
Компрометувати управлінський обліковий запис та знайти ID дочірніх облікових записів та назви ролі (за замовчуванням OrganizationAccountAccessRole), які дозволяють управлінському обліковому запису доступ як адміністратор.
Щоб знайти дочірні облікові записи, перейдіть до розділу організацій в консолі aws або виконайте
aws organizations list-accounts
Ви не можете знайти назву ролей безпосередньо, тому перевірте всі власні політики IAM та шукайте будь-яку, яка дозволяє
sts:AssumeRole
для раніше виявлених дочірніх облікових записів.Компрометуйте принципала в управлінському обліковому записі з дозволом
sts:AssumeRole
для ролі в дочірніх облікових записах (навіть якщо обліковий запис дозволяє будь-кому з управлінського облікового запису уособлювати, оскільки це зовнішній обліковий запис, необхідні конкретні дозволиsts:AssumeRole
).
Автоматизовані інструменти
Рекон
aws-recon: Багатопотоковий інструмент збору інвентаризації, спрямований на безпеку AWS, написаний на Ruby.
cloudlist: Cloudlist - це багатохмарковий інструмент для отримання активів (імен хостів, IP-адрес) від постачальників хмарних послуг.
cloudmapper: CloudMapper допомагає вам аналізувати ваші середовища Amazon Web Services (AWS). Тепер він містить набагато більше функціональності, включаючи аудит для виявлення проблем безпеки.
картографія: Картографія - це інструмент на Python, який об'єднує активи інфраструктури та взаємозв'язки між ними в інтуїтивному графічному вигляді, що працює на базі бази даних Neo4j.
starbase: Starbase збирає активи та зв'язки з послуг та систем, включаючи хмарну інфраструктуру, додатки SaaS, контролі безпеки та інше у зручному графічному вигляді на базі бази даних Neo4j.
aws-inventory: (Використовує python2) Це інструмент, який намагається виявити всі ресурси AWS, створені в обліковому записі.
aws_public_ips: Це інструмент для отримання всіх публічних IP-адрес (як IPv4, так і IPv6), пов'язаних з обліковим записом AWS.
Підвищення привілеїв та експлуатація
SkyArk: Виявлення найбільш привілейованих користувачів у сканованому середовищі AWS, включаючи адміністраторів AWS Shadow. Використовує powershell. Ви можете знайти визначення привілейованих політик у функції
Check-PrivilegedPolicy
в https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1.pacu: Pacu - це відкрита фреймворк експлуатації AWS, призначений для тестування на проникнення в хмарні середовища. Він може перелічити, знайти неправильні налаштування та експлуатувати їх. Ви можете знайти визначення привілейованих дозволів в https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 всередині словника
user_escalation_methods
.Зверніть увагу, що pacu перевіряє лише ваші власні шляхи підвищення привілеїв (не на рівні облікового запису).
PMapper: Principal Mapper (PMapper) - це скрипт та бібліотека для ідентифікації ризиків у конфігурації AWS Identity and Access Management (IAM) для облікового запису AWS або організації AWS. Він моделює різних користувачів IAM та ролі в обліковому записі як направлений граф, що дозволяє перевіряти підвищення привілеїв та альтернативні шляхи, які може використати зловмисник для отримання доступу до ресурсу або дії в AWS. Ви можете перевірити дозволи, використані для пошуку шляхів привілеїв у файлах, які закінчуються на
_edges.py
за посиланням https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
cloudsplaining: Cloudsplaining - це інструмент оцінки безпеки AWS IAM, який ідентифікує порушення принципу найменшого дозволу та генерує звіт у форматі HTML з відсортованим за ризиком. Він покаже вам потенційно надмірно привілейованих клієнтів, вбудовані та aws політики та ті суб'єкти, які мають до них доступ. (Він не лише перевіряє підвищення привілеїв, але й інші цікаві дозволи, рекомендується використовувати).
cloudjack: CloudJack оцінює облікові записи AWS на вразливості захоплення піддоменів внаслідок роз'єднаних конфігурацій Route53 та CloudFront.
ccat: Вивести репозиторії ECR -> Витягти репозиторій ECR -> Заднім вхід -> Запустити з заднім вхідом.
Dufflebag: Dufflebag - це інструмент, який шукає через публічні снапшоти Elastic Block Storage (EBS) секрети, які можуть бути випадково залишені.
Аудит
cloudsploit: CloudSploit від Aqua є проектом з відкритим кодом, призначеним для виявлення ризиків безпеки в облікових записах інфраструктури хмари, включаючи: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) та GitHub (він не шукає ShadowAdmins).
Prowler: Prowler - це відкритий інструмент безпеки для виконання оцінок найкращих практик з безпеки AWS, аудитів, реагування на інциденти, постійного моніторингу, зміцнення та готовності до форензики.
CloudFox: CloudFox допомагає вам отримати ситуаційну свідомість в незнайомих хмарних середовищах. Це відкритий інструмент командного рядка, створений для допомоги тестувальникам на проникнення та іншим професіоналам з області кібербезпеки знаходити вразливі шляхи атак в хмарній інфраструктурі.
ScoutSuite: Scout Suite - це відкритий інструмент для аудиту безпеки багатох облак, який дозволяє оцінювати безпеку хмарних середовищ.
cs-suite: Cloud Security Suite (використовує python2.7 і виглядає необслуговуваним)
Zeus: Zeus - потужний інструмент для найкращих практик забезпечення безпеки AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (виглядає необслуговуваним). Він перевіряє лише стандартно налаштовані облікові дані в системі.
Постійна аудиторія
cloud-custodian: Cloud Custodian - це правила для управління обліковими записами та ресурсами публічного хмарного середовища. Воно дозволяє користувачам визначати політики для забезпечення добре керованої хмарної інфраструктури, яка є як безпечною, так і оптимізованою з точки зору витрат. Воно об'єднує багато адгок скриптів організацій в легкий та гнучкий інструмент з єдиною метрикою та звітністю.
pacbot: Policy as Code Bot (PacBot) - це платформа для постійного моніторингу відповідності, звітності про відповідність та автоматизації безпеки для хмари. У PacBot політики безпеки та відповідності реалізовані як код. Всі ресурси, виявлені PacBot, оцінюються згідно з цими політиками для оцінки відповідності політики. Фреймворк авто-виправлення PacBot надає можливість автоматично реагувати на порушення політики шляхом виконання попередньо визначених дій.
streamalert: StreamAlert - це безсерверний, реальний час фреймворк аналізу даних, який дозволяє вам впроваджувати, аналізувати та сповіщати про дані з будь-якого середовища, використовуючи джерела даних та логіку сповіщення, яку ви визначаєте. Команди з комп'ютерної безпеки використовують StreamAlert для сканування терабайтів журнальних даних щодня для виявлення та реагування на інциденти.
DEBUG: Захоплення запитів AWS cli
Посилання
Last updated