Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
aws-recon — أداة متعددة الخيوط لجمع مخزون AWS مع التركيز على الموارد والبيانات الوصفية ذات الصلة بالأمان. | Kitploit
أدوات/GitHubGitHub/joshlarsen/aws-recon
أمن البنية التحتية السحابيةالاستطلاعتحليل الثغرات الأمنيةالبرمجة النصية والأتمتةتدقيق التكوينجمع المعلوماتأمن السحابةDevSecOpsArchived
GitHubjoshlarsen/aws-recon

aws-recon

أداة متعددة الخيوط لجمع مخزون AWS مع التركيز على الموارد والبيانات الوصفية ذات الصلة بالأمان.

55850منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

Docker Pulls Gem Version GitHub Workflow Status (branch) AWS Service Regions

AWS Recon

أداة متعددة الخيوط لجمع قوائم جرد AWS موجهة للأمان، مكتوبة بلغة Ruby.

تم إنشاء هذه الأداة لتسهيل الجمع الفعّال لعدد كبير من سمات وبيانات وصف موارد AWS. تهدف إلى جمع كل ما هو تقريبًا ذو صلة بتكوين الأمان ووضعية بيئة AWS.

الأدوات الحالية (مثل AWS Config) التي تقوم بجمع الموارد تفتقر إلى التغطية والدقة اللازمة لقياس وضعية الأمان بدقة (مثل بيانات سمات الموارد المفصلة، ووثائق السياسات المحللة بالكامل، وعلاقات الموارد المتداخلة).

تتعامل AWS Recon مع الجمع من الحسابات الكبيرة من خلال الاستفادة من إعادة المحاولة التلقائية (سواء بسبب موثوقية الشبكة أو تقييد API)، والترحيل التلقائي للاستجابات الكبيرة (> 100 مورد لكل استدعاء API)، وطلبات متوازية متعددة الخيوط لتسريع الجمع.

أهداف المشروع

  • تغطية موارد أكثر اكتمالاً من الأدوات المتاحة (خاصة لـ ECS و EKS)
  • تفاصيل موارد أكثر دقة، بما في ذلك الموارد المرتبطة المتداخلة في المخرجات
  • مخرجات مرنة (وحدة التحكم، سطور JSON، JSON عادي، ملف، حاوية S3، والمخرجات القياسية)
  • فعّالة (متعددة الخيوط، محدودة المعدل، إعادة محاولة تلقائية، وترحيل النتائج تلقائيًا)
  • سهلة الصيانة والتوسيع

شركات رائعة تستخدم AWS Recon**

  • Netflix
  • HashiCorp
  • Workday
  • Stripe
  • PayPal
  • Typeform
  • Amazon Web Services
  • Plaid
  • Expel
  • Mozilla
  • Bugcrowd
  • Dropbox
  • Pinterest
  • HackerOne
  • MuleSoft
  • Slack
  • Drata
  • Google
  • Sophos
  • Sumo Logic
  • Coalfile
  • Xero

** الاستخدام لا يعني المصادقة

الإعداد

المتطلبات

تحتاج AWS Recon إلى دور أو بيانات اعتماد لحساب AWS مع صلاحية ReadOnlyAccess. صلاحية AdministratorAccess الكاملة هي صلاحية مفرطة، ولكنها ستعمل أيضًا. سياسة SecurityAudit ليست كافية لأنها تفتقر إلى الوصول إلى العديد من الخدمات.

التشغيل عبر Docker

استخدم إصدار Docker 19.x أو أعلى لتشغيل الصورة المبنية مسبقًا دون الحاجة إلى تثبيت أي شيء.

التشغيل محليًا عبر Ruby

إذا كان لديك Ruby مثبتًا بالفعل (2.6.x أو 2.7.x)، فقد ترغب في تثبيت الـ gem.

التثبيت

يمكن تشغيل AWS Recon محليًا عبر حاوية Docker أو عن طريق تثبيت الـ gem الخاص بـ Ruby.

للتشغيل عبر حاوية Docker، قم بتمرير بيانات اعتماد AWS اللازمة إلى أمر run الخاص بـ Docker. على سبيل المثال:

root@kitploit:~
$ docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -v -s EC2 -r global,us-east-1,us-east-2

للتشغيل محليًا، قم أولاً بتثبيت الـ gem:

root@kitploit:~
$ gem install aws_recon
Fetching aws_recon-0.5.17.gem
Fetching aws-sdk-3.0.1.gem
Fetching parallel-1.20.1.gem
...
Successfully installed aws-sdk-3.0.1
Successfully installed parallel-1.20.1
Successfully installed aws_recon-0.5.17

أو أضفه إلى ملف Gemfile الخاص بك باستخدام bundle:

root@kitploit:~
$ bundle add aws_recon
Fetching gem metadata from https://rubygems.org/
Resolving dependencies...
...
Using aws-sdk 3.0.1
Using parallel-1.20.1
Using aws_recon 0.5.17

الاستخدام

ستستفيد AWS Recon من أي بيانات اعتماد AWS (انظر المتطلبات) المتاحة حاليًا للبيئة التي تعمل فيها. إذا كنت تجمع من حسابات متعددة، فقد ترغب في استخدام شيء مثل aws-vault لإدارة بيانات الاعتماد المختلفة.

root@kitploit:~
$ aws-vault exec profile -- aws_recon

المتغيرات البيئية العادية ستعمل أيضًا بشكل جيد.

root@kitploit:~
$ AWS_PROFILE=<profile> aws_recon

للتشغيل من حاوية Docker باستخدام بيانات اعتماد مُدارة بواسطة aws-vault (المخرجات إلى stdout):

root@kitploit:~
$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  darkbitio/aws_recon:latest \
  aws_recon -j -s EC2 -r global,us-east-1,us-east-2

للتشغيل من حاوية Docker باستخدام بيانات اعتماد مُدارة بواسطة aws-vault والمخرجات إلى ملف، ستحتاج إلى تلبية شرطين. أولاً، يحتاج Docker إلى صلاحية الوصول إلى ربط المسار الذي تحدده (أو مسار رئيسي فوقه). ثانيًا، تحتاج إلى إنشاء ملف فارغ لحفظ المخرجات فيه (مثل output.json). وذلك لأن هذا الملف فقط هو الذي يتم تركيبه داخل حاوية Docker وقت التشغيل. على سبيل المثال:

أنشئ ملفًا فارغًا.

root@kitploit:~
$ touch output.json

شغّل حاوية aws_recon، مع تحديد ملف المخرجات.

root@kitploit:~
$ aws-vault exec <vault_profile> -- docker run -t --rm \
  -e AWS_REGION \
  -e AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY \
  -e AWS_SESSION_TOKEN \
  -v $(pwd)/output.json:/recon/output.json \
  darkbitio/aws_recon:latest \
  aws_recon -s EC2 -v -r global,us-east-1,us-east-2

قد ترغب في استخدام العلامة -v أو --verbose في البداية لرؤية الحالة والنشاط أثناء تشغيل الجمع.

في الوضع المفصّل، ستعرض مخرجات وحدة التحكم ما يلي:

root@kitploit:~
<thread>.<region>.<service>.<operation>

البادئة t تشير إلى أي خيط يتم تشغيل طلب معين تحته. تشير المنطقة والخدمة والعملية إلى طلب العملية الجاري حالياً وأين.

root@kitploit:~
$ aws_recon -v

t0.global.EC2.describe_account_attributes
t2.global.S3.list_buckets
t3.global.Support.describe_trusted_advisor_checks
t2.global.S3.list_buckets.acl
t5.ap-southeast-1.WorkSpaces.describe_workspaces
t6.ap-northeast-1.Lightsail.get_instances
...
t2.us-west-2.WorkSpaces.describe_workspaces
t1.us-east-2.Lightsail.get_instances
t4.ap-southeast-1.Firehose.list_delivery_streams
t7.ap-southeast-1.Lightsail.get_instances
t0.ap-south-1.Lightsail.get_instances
t1.us-east-2.Lightsail.get_load_balancers
t7.ap-southeast-2.WorkSpaces.describe_workspaces
t2.eu-west-3.SageMaker.list_notebook_instances
t3.eu-west-2.SageMaker.list_notebook_instances

Finished in 46 seconds. Saving resources to output.json.

مثال على خيارات سطر الأوامر

root@kitploit:~
# جمع موارد S3 و EC2 العالمية، بالإضافة إلى us-east-1 و us-east-2

$ AWS_PROFILE=<profile> aws_recon -s S3,EC2 -r global,us-east-1,us-east-2
root@kitploit:~
# جمع موارد S3 و EC2 العالمية، بالإضافة إلى us-east-1 و us-east-2

$ AWS_PROFILE=<profile> aws_recon --services S3,EC2 --regions global,us-east-1,us-east-2
root@kitploit:~
# حفظ المخرجات إلى حاوية S3

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket
root@kitploit:~
# حفظ المخرجات إلى حاوية S3 مع منطقة رئيسية غير us-east-1

$ AWS_PROFILE=<profile> aws_recon \
  --services S3,EC2 \
  --regions global,us-east-1,us-east-2 \
  --verbose \
  --s3-bucket my-recon-bucket:us-west-2

مثال على مخرجات بتنسيق OpenCSPM (NDJSON).

root@kitploit:~
$ AWS_PROFILE=<profile> aws_recon -l \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom

أو

root@kitploit:~
$ AWS_PROFILE=<profile> aws_recon -j \
  -s S3,EC2 \
  -r global,us-east-1,us-east-2 \
  -f custom > output.json

الأخطاء

يتم تجاهل استثناءات API المتعلقة بالأذونات بصمت في معظم الحالات. ترجع هذه الأخطاء عادةً إلى إحدى هذه الحالات:

  • استخدام دور بدون أذونات كافية
  • الاستعلام عن حساب مع وجود سياسات SCP تمنع استخدام خدمات معينة
  • محاولة الاستعلام عن خدمة غير مُفعّلة/متاحة في منطقتك/حسابك

في الوضع verbose، سترى سجلات الاستثناءات في المخرجات:

root@kitploit:~
t2.us-east-1.EC2.describe_subnets.0
t4.us-east-1.SSM.describe_instance_information.0
t6.us-east-1.SecurityHub.InvalidAccessException   <-----
t2.us-east-1.EC2.describe_addresses.0
t4.us-east-1.SSM.describe_parameters.0
t1.us-east-1.GuardDuty.list_detectors.0

استخدم خيار سطر الأوامر -q لإعادة إثارة هذه الاستثناءات لتسهيل استكشاف أخطاء الوصول.

root@kitploit:~
Traceback (most recent call last):
arn:aws:sts::1234567890:assumed-role/role/my-audit-role is not authorized to perform:
 codepipeline:GetPipeline on resource: arn:aws:codepipeline:us-west-2:1234567890:pipeline
 (Aws::CodePipeline::Errors::AccessDeniedException)

يتم الإشارة إلى عملية API الدقيقة التي تسببت في الاستثناء في السطر الأخير من تتبع المكدس. إذا لم تتمكن من حل الوصول اللازم، فيجب عليك استبعاد تلك الخدمات باستخدام -x أو --not-services، أو ترك خيار -q حتى يستمر الجمع.

الخيوط

تستخدم AWS Recon خيوطًا متعددة لمحاولة التغلب على بعض تحديات الإدخال/الإخراج عند تنفيذ العديد من استدعاءات API لنقاط نهاية في جميع أنحاء العالم.

بالنسبة للخدمات العالمية مثل IAM و Shield و Support، لا يتم استخدام خيوط متعددة. وحدة S3 متعددة الخيوط لأن كل حاوية تتطلب عدة استدعاءات إضافية لجمع البيانات الوصفية الكاملة.

بالنسبة للخدمات الإقليمية، يتم إنشاء خيط (حتى حد الخيط) لكل خدمة في منطقة. افتراضيًا، سيتم استخدام ما يصل إلى 8 خيوط. إذا كان حسابك يحتوي على موارد موزعة عبر مناطق عديدة، فقد ترى تحسنًا في السرعة عن طريق زيادة الخيوط باستخدام -t X، حيث X هو عدد الخيوط.

الأداء

ستقوم AWS Recon بإجراء ما لا يقل عن ~2,000 استدعاء API في حساب جديد/فارغ، فقط للاستعلام عن الخدمات المدعومة في جميع المناطق العشرين القياسية (غير GovCloud، غير الصين). من المحتمل جدًا مواجهة تحديد معدل API (الاختناق) على الحسابات الكبيرة إذا قمت بتمكين خيوط أكثر من الافتراضي (8).

ستقوم Recon تلقائيًا بالتراجع واحترام حدود إعادة المحاولة في استجابة API. إذا لاحظت فترات توقف طويلة أثناء الجمع، فمن المحتمل أن هذا ما يحدث. أعد محاولة الجمع باستخدام خيار -d أو --debug لمراقبة تتبع الأسلاك ومعرفة ما إذا كنت تتعرض للاختناق. فكر في استخدام عدد أقل من الخيوط أو طلب حدود معدل أعلى من AWS إذا كنت تتعرض لتقييد المعدل بانتظام.

الخيارات

معظم المستخدمين سيرغبون في تقييد الجمع بالخدمات والمناطق ذات الصلة. التشغيل دون أي استثناءات سيحاول جمع جميع الموارد من جميع المناطق المفعّلة للحساب.

root@kitploit:~
$ aws_recon -h

AWS Recon - AWS Inventory Collector (0.5.17)

Usage: aws_recon [options]
    -r, --regions [REGIONS]          Regions to scan, separated by comma (default: all)
    -n, --not-regions [REGIONS]      Regions to skip, separated by comma (default: none)
    -s, --services [SERVICES]        Services to scan, separated by comma (default: all)
    -x, --not-services [SERVICES]    Services to skip, separated by comma (default: none)
    -c, --config [CONFIG]            Specify config file for services & regions (e.g. config.yaml)
    -b, --s3-bucket [BUCKET:REGION]  Write output file to S3 bucket (default: '')
    -o, --output [OUTPUT]            Specify output file (default: output.json)
    -f, --format [FORMAT]            Specify output format (default: aws)
    -t, --threads [THREADS]          Specify max threads (default: 8, max: 128)
    -l, --json-lines                 Output NDJSON/JSONL format (default: false)
    -u, --user-data                  Collect EC2 instance user data (default: false)
    -z, --skip-slow                  Skip slow operations (default: false)
    -g, --skip-credential-report     Skip generating IAM credential report (default: false)
    -j, --stream-output              Stream JSON lines to stdout (default: false)
    -v, --verbose                    Output client progress and current operation
    -q, --quit-on-exception          Stop collection if an API error is encountered (default: false)
    -d, --debug                      Output debug with wire trace info
    -h, --help                       Print this help information

المخرجات

المخرجات دائمًا ما تكون بصيغة JSON - إما سطور JSON أو JSON عادي. يتم كتابة المخرجات إما إلى ملف (الافتراضي) أو إلى stdout (مع -j).

عند الكتابة إلى حاوية S3، يتم ضغط مخرجات JSON تلقائيًا باستخدام gzip.

دعم المناطق المفعّلة يدويًا

إذا كنت قد قمت بتفعيل المناطق المفعّلة يدويًا:

  • me-south-1 - الشرق الأوسط (البحرين)
  • af-south-1 - أفريقيا (كيب تاون)
  • ap-east-1 - آسيا والمحيط الهادئ (هونغ كونغ)
  • eu-south-1 - أوروبا (ميلان)

وتستخدم STS لافتراض دور إلى حساب، ستحتاج إلى تفعيل رموز STS v2 في الحساب الذي تفترض الدور منه لتتمكن من تشغيل AWS Recon ضد تلك المناطق.

رموز الإصدار 1 صالحة فقط في مناطق AWS المتاحة افتراضيًا. لا تعمل هذه الرموز في المناطق المفعّلة يدويًا، مثل آسيا والمحيط الهادئ (هونغ كونغ). رموز الإصدار 2 صالحة في جميع المناطق. ومع ذلك، فإن رموز الإصدار 2 أطول وقد تؤثر على الأنظمة التي تخزن فيها الرموز مؤقتًا.

إذا كنت تستخدم مفتاح وصول/سري ثابت، يمكنك الجمع من هذه المناطق بغض النظر عن إصدار رمز STS.

الخدمات والموارد المدعومة

التغطية الحالية "حسب الخدمة" مدرجة أدناه. الخدمات بدون تغطية ستتم إضافتها في النهاية. نرحب بالمساهمات (PRs) بالتأكيد. :)

تهدف AWS Recon إلى جمع جميع الموارد والبيانات الوصفية ذات الصلة في تحديد وضعية الأمان لحساب (حسابات) AWS الخاصة بك. ومع ذلك، فإنها لا تقوم في الواقع بفحص الموارد لوضعية الأمان - فهذه مهمة أدوات أخرى تأخذ مخرجات AWS Recon كمدخل.

  • AccessAnalyzer
  • AdvancedShield
  • ApplicationAutoScaling
  • Athena
  • Backup
  • GuardDuty
  • Macie
  • Systems Manager
  • Trusted Advisor
  • ACM
  • API Gateway
  • AutoScaling
  • CodePipeline
  • CodeBuild
  • CloudFormation
  • CloudFront
  • CloudWatch

تغطية إضافية

كان أحد الدوافع الرئيسية لـ AWS Recon هو بناء أداة سهلة الصيانة والتوسيع. إذا كنت تشعر أنه يمكن تحسين التغطية لخدمة معينة، فنحن نرحب بالمساهمات (PRs) لتحقيق ذلك. أي شخص لديه إلمام معتدل بـ Ruby سيكون قادرًا على محاكاة النمط المستخدم من قبل المجمعين الحاليين للاستعلام عن خدمة معينة وإضافة النتائج إلى مجموعة الموارد.

التطوير

استنساخ هذا المستودع:

root@kitploit:~
$ git clone [email protected]:darkbitio/aws-recon.git
$ cd aws-recon

أنشئ مجموعة gemset لاصقة إذا كنت تستخدم RVM:

root@kitploit:~
$ rvm use 2.7.2@aws_recon_dev --create --ruby-version

قم بتشغيل bin/setup لتثبيت التبعيات. ثم قم بتشغيل rake test لتشغيل الاختبارات. يمكنك أيضًا تشغيل bin/console للحصول على موجه تفاعلي يسمح لك بالتجربة.

لتثبيت هذه الـ gem على جهازك المحلي، قم بتشغيل bundle exec rake install. لإصدار إصدار جديد، قم بتحديث رقم الإصدار في version.rb، ثم قم بتشغيل bundle exec rake release، والذي سينشئ علامة git للإصدار، ويدفع التزامات git والعلامات، ويدفع ملف .gem إلى rubygems.org.

TODO

  • تغطية اختبارية مع موارد AWS SDK المُنمذجة

شكر وتقدير

تم إلهام AWS Recon من العمل الممتاز للأشخاص والفرق وراء هذه الأدوات:

  • CloudMapper https://github.com/duo-labs/cloudmapper
  • Prowler https://github.com/toniblyx/prowler
  • CloudSploit https://github.com/cloudsploit/scans
تنزيل الأداة
  • CloudWatch Logs
  • CloudTrail
  • Config
  • DirectoryService
  • DirectConnect
  • DMS
  • DynamoDB
  • EC2
  • ECR
  • ECRPublic
  • ECS
  • EFS
  • EKS
  • ELB
  • EMR
  • Elasticsearch
  • ElastiCache
  • Firehose
  • FMS
  • Glacier
  • Glue
  • IAM
  • KMS
  • Kafka
  • Kinesis
  • Lambda
  • Lightsail
  • Organizations
  • RDS
  • Redshift
  • Route53
  • Route53Domains
  • S3
  • SageMaker
  • SES
  • SecretsManager
  • SecurityHub
  • ServiceQuotas
  • Shield
  • SNS
  • SQS
  • Transfer
  • VPC
  • WAF
  • WAFv2
  • Workspaces
  • Xray