
يستخرج الأسرار (كلمات المرور، مفاتيح API، الرموز) من أرشيفات الويب WARC باستخدام قواعد Gitleaks. يدعم HTTP وS3 والملفات المحلية والأرشيفات المضغوطة مع المعالجة المتزامنة.
Troll-A هي أداة سطر أوامر لاستخراج الأسرار مثل كلمات المرور ومفاتيح API والرموز من ملفات WARC (أرشيف الويب). Troll-A هي حل سهل الاستخدام وشامل وسريع للعثور على الأسرار في أرشيف الويب.
*.megawarc.warc.zst).c7g.12xlarge. يمكن تحسين ذلك بشكل أكبر عن طريق تضييق نطاق سجلات WARC المراد معالجتها، عبر خيار --filter.Troll-A كملفات ثنائية مبنية مسبقًا، أو كصورة Docker، أو في شكل كود مصدري.Troll-A متاح على سجل حاويات GitHub ويمكن استخدامه كالتالي:
docker run --rm ghcr.io/crissyfield/troll-a [flags] [url]
Troll-A متاح أيضًا في شكل ثنائي لأنظمة macOS و Linux على صفحة الإصدارات.
[!NOTE] على عكس صورة Docker، يتم تجميع الملفات الثنائية المبنية مسبقًا باستخدام تعبيرات Go العادية في مكتبتها القياسية وبالتالي تكون أبطأ بشكل ملحوظ. إذا كنت تفضل الملفات الثنائية الأصلية وكان الأداء مهمًا، فمن المستحسن بناء الملفات الثنائية من المصدر.
للحصول على أداء أفضل، يوصى ببناء Troll-A من المصدر، حيث يسمح ذلك باستخدام محرك التعبيرات المنتظمة المحسّن المقدم من go-re2. لكي يعمل هذا، يجب تثبيت تبعية RE2 أولاً.
# Install dependencies
brew install re2
# Install with RE2 activated
go install -tags re2_cgo github.com/crissyfield/[email protected]
# Install dependencies
sudo apt install -u build-essential libre2-dev
# Install with RE2 activated
go install -tags re2_cgo github.com/crissyfield/[email protected]
Usage:
troll-a [flags] [url]
This tool allows to extract (potential) secrets such as passwords, API keys, and tokens
from WARC (Web ARChive) files. Extracted information is output as structured text org
JSON, which simplifies further processing of the data.
"url" can be either a regular HTTP or HTTPS reference ("https://domain/path"), an Amazon
S3 reference ("s3://bucket/path"), a file path (either "file:///path" or simply "path"),
or a dash ("-") to read from STDIN. If "url" is omitted data is read from STDIN. If the
input data is compressed with either GZip, BZip2, XZ, or ZStd it is automatically
decompressed. ZStd with a prepended custom dictionary (as used by "*.megawarc.warc.zstd")
is also handled transparently.
This tool uses rules from the Gitleaks project (https://gitleaks.io) to detect secrets.
Flags:
-c, --custom stringArray additional custom rule to apply. Secrets that match the
given regular expression (using RE2 syntax) will also be
reported. Can be specified multiple times.
-e, --enclosed only report secrets that are enclosed within their context
-f, --filter string filter for the target URL of each WARC record. Only WARC
records that match the given regular expression (using RE2
syntax) will be checked for secrets. An empty filter will
match everything.
-h, --help help for troll-a
-j, --jobs uint detect secrets with this many concurrent jobs (default 8)
-s, --json output detected secrets as JSON
-p, --preset rules-preset rules preset to use. This could be one of the following:
all: All known rules will be applied, which can
result in a significant amount of noise for
large data sets.
most: Most of the rules are applied, skipping the
biggest culprits for false positives.
secret: Only rules are applied that are most likely
to result in an actual leak of a secret.
none: No rules at all are applied. This can be used
in combination with custom rules via the
--custom/-c switch.
No other values are allowed. (default secret)
-q, --quiet suppress success message(s)
-r, --retry retry-strategy retry strategy to use. This could be one of the following:
never: This strategy will fail after the first fetch
failure and will not attempt to retry.
constant: This strategy will attempt to retry up to 5
times, with a 5s delay after each attempt.
exponential: This strategy will attempt to retry for 15
minutes, with an exponentially increasing
delay after each attempt.
always: This strategy will attempt to retry forever,
with no delay at all after each attempt.
No other values are allowed. (default never)
-t, --timeout duration fetching timeout (does not apply to files) (default 30m0s)
-v, --version version for troll-a
تتيح هذه الأداة استخراج الأسرار (المحتملة) مثل كلمات المرور ومفاتيح API والرموز من ملفات WARC (أرشيف الويب). يتم إخراج المعلومات المستخرجة كنص منظم أو JSON، مما يبسط معالجة البيانات بشكل أكبر.
يمكن أن يكون "url" إما مرجع HTTP أو HTTPS عادي ("https://domain/path")، أو مرجع Amazon S3 ("s3://bucket/path")، أو مسار ملف (إما "file:///path" أو ببساطة "path")، أو شرطة ("-") للقراءة من STDIN. إذا تم حذف "url" تتم قراءة البيانات من STDIN. إذا كانت بيانات الإدخال مضغوطة باستخدام GZip أو BZip2 أو XZ أو ZStd، فسيتم فك ضغطها تلقائيًا. يتم أيضًا التعامل مع ZStd مع قاموس مخصص مرفق (كما هو مستخدم في "*.megawarc.warc.zstd") بشكل شفاف.
تستخدم هذه الأداة قواعد من مشروع Gitleaks (https://gitleaks.io) للكشف عن الأسرار.
Common Crawl يحتفظ بمستودع مفتوح ومجاني لبيانات الزحف على الويب يمكن لأي شخص استخدامه. تحتوي مجموعة Common Crawl على بيتابايت من البيانات التي يتم جمعها بانتظام منذ عام 2008.
على سبيل المثال، لاستخراج الأسرار من جميع الصفحات البالغ عددها 3.35 مليار صفحة من زحف نوفمبر/ديسمبر 2023 (المسمى CC-MAIN-2023-50)، يمكنك القيام بما يلي:
# Download the list of all 90.000 WARC paths
curl -sSL -O https://data.commoncrawl.org/crawl-data/CC-MAIN-2023-50/warc.paths.gz
# Iterate through all paths using 64 scanning jobs, output matches as JSON
gzcat warc.paths.gz | \
xargs -I{} -- troll-a -e -s -j64 https://data.commoncrawl.org/{} > secrets.json
[!WARNING] سيستغرق هذا وقتًا طويلاً! اعتمادًا على أجهزتك واتصالك بالإنترنت، قد يستغرق هذا من أسبوع إلى عدة أشهر. قد ترغب في تشغيل هذا المثال فقط للأسطر القليلة الأولى من
warc.paths.gz.
فريق Archive Team هو مجموعة مكرسة للحفظ الرقمي وأرشفة الويب تأسست في عام 2009. يتم تخزين أرشيفات الويب كملفات WARC (بشكل أكثر تحديدًا، في تنسيق MegaWARC) وتُتاح من خلال Internet Archive.
على سبيل المثال، لاستخراج الأسرار من 113,372 صفحة زحفها Archive Team من pastebin.com في أبريل 2023 (إليك المنشور المقابل على Internet Archive)، يمكنك القيام بما يلي:
# Call troll-a directly with the MegaWARC URL
troll-a -e https://archive.org/download/archiveteam_pastebin_20230421003309_a3b951b4/pastebin_20230421003309_a3b951b4.1603050931.megawarc.warc.zst
...والذي ينتج عنه...
Detected: secret="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" rule="rapidapi-access-token" uri="https://pastebin.com/raw/bKMJXkQE" line=36 column=15
Detected: secret="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" rule="rapidapi-access-token" uri="https://pastebin.com/raw/bKMJXkQE" line=36 column=15
Detected: secret="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" rule="rapidapi-access-token" uri="https://pastebin.com/raw/nferefe2" line=37 column=6
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/print/cQEA2GCS" line=39 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_js/cQEA2GCS" line=11 column=2688
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_iframe/cQEA2GCS?theme=dark" line=49 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/cQEA2GCS" line=222 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/raw/cQEA2GCS" line=22 column=22
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_iframe/cQEA2GCS" line=48 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_js/cQEA2GCS?theme=dark" line=11 column=2796
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/clone/cQEA2GCS" line=152 column=27
Success: Processed https://archive.org/download/archiveteam_pastebin_20230421003309_a3b951b4/pastebin_20230421003309_a3b951b4.1603050931.megawarc.warc.zst (113372 records)
مجموعة القواعد المستخدمة للكشف عن الأسرار الفعلية هي جزء من مشروع Gitleaks. نحن ممتنون جدًا للعمل الهائل الذي قاموا به في تجميع كل هذه المعلومات!
منصة Troll A هي منصة غاز طبيعي في حقل غاز Troll قبالة الساحل الغربي للنرويج. اعتبارًا من عام 2014، كانت أطول هيكل تم نقله إلى موضع آخر، نسبة إلى سطح الأرض، وهي من بين أكبر وأكثر المشاريع الهندسية تعقيدًا في التاريخ. في عام 1996، سجلت المنصة الرقم القياسي العالمي في موسوعة غينيس لأكبر منصة غاز بحرية.
[!NOTE] بينما نكره بشدة استغلال الموارد الطبيعية، فإننا نعجب بالإنجاز الهندسي!