
أداة بحث سلبي عن أسماء المضيفات والنطاقات وعناوين IP لغير الروبوتات
أداة بحث سلبية عن أسماء المضيفين والنطاقات وعناوين IP مخصصة للبشر


wtfis هي أداة سطر أوامر تجمع معلومات حول نطاق أو FQDN أو عنوان IP باستخدام خدمات OSINT المختلفة. على عكس الأدوات الأخرى من نوعها، فهي مبنية خصيصًا للاستهلاك البشري، حيث تقدم نتائج جميلة (قد تختلف النتائج حسب رأيك) وسهلة القراءة والفهم.
تفترض هذه الأداة أنك تستخدم حسابات المستوى المجاني / المجتمعي، ولذلك فهي تقوم بأقل عدد ممكن من استدعاءات API لتقليل الوصول إلى الحصص والحدود القصوى.
اسم المشروع هو تلاعب لفظي بكلمة "whois".
| الخدمة | تُستخدم في البحث | مطلوبة | الباقة المجانية |
|---|---|---|---|
| Virustotal | الكل | لا | نعم |
| AbuseIPDB | عنوان IP | لا | نعم |
| Greynoise | عنوان IP | لا | نعم |
| IP2Location | عنوان IP | لا | نعم |
| IP2Whois | النطاق/FQDN | لا | نعم |
| IPinfo | عنوان IP | لا | نعم (بدون تسجيل) |
| IPWhois | عنوان IP | لا | نعم (بدون تسجيل) |
| Shodan | عنوان IP | لا | لا |
| URLhaus | الكل | لا | نعم |
المصدر الأساسي للمعلومات. يجلب:
AbuseIPDB هي قاعدة بيانات جماعية المصادر لعناوين IP الضارة المبلغ عنها. من خلال واجهة API الخاصة بها، تعرض wtfis:
مصدر بديل للبحث عن الموقع الجغرافي وASN لعناوين IP (الافتراضي هو IPWhois). يجلب:
IP2Whois وIP2Location هما ميزتان مختلفتان من نفس الخدمة، لذا تحتاج إلى التسجيل مرة واحدة فقط. يمكن بعد ذلك استخدام مفتاح API للبحثين معًا.
تُستخدم اختياريًا إذا تم توفير بيانات الاعتماد. تجلب:
يُنصح باستخدام IP2Whois بدلاً من Virustotal لبيانات whois لعدة أسباب:
مصدر بديل آخر للبحث عن الموقع الجغرافي وASN لعناوين IP. يجلب:
مصدر البحث الافتراضي للموقع الجغرافي وASN لعناوين IP. يجلب:
لا ينبغي الخلط بين IPWhois وIP2Whois، الذي يوفر بيانات Whois للنطاقات.
باستخدام واجهة API المجتمعية الخاصة بـ Greynoise، ستعرض wtfis ما إذا كان عنوان IP موجودًا في إحدى مجموعات بيانات Greynoise:
مزيد من المعلومات حول مجموعات البيانات هنا.
بالإضافة إلى ذلك، تُرجع الواجهة أيضًا تصنيف Greynoise لعنوان IP (إن كان متاحًا). القيم الممكنة هي benign و malicious و unknown.
يجلب البيانات من نقطة النهاية /shodan/host/{ip} (انظر الوثائق). لكل عنوان IP، يسترجع:
URLhaus هي قاعدة بيانات جماعية المصادر لعناوين URLs الضارة المبلغ عنها. يوفر هذا الإثراء نظرة ثاقبة حول ما إذا كان اسم المضيف أو عنوان IP الذي تم الاستعلام عنه يُستخدم أو كان يُستخدم لتوزيع البرامج الضارة عبر HTTP أو HTTPS. تتضمن البيانات المقدمة:
$ pip install wtfis
للتثبيت عبر conda (من conda-forge)، انظر wtfis-feedstock.
للتثبيت عبر brew:
brew install wtfis
يستخدم wtfis متغيرات البيئة التالية (جميعها اختيارية):
VT_API_KEY - مفتاح API الخاص بـ VirustotalABUSEIPDB_API_KEY - مفتاح API الخاص بـ AbuseIPDBIP2LOCATION_API_KEY - مفتاح API الخاص بـ IP2LocationIP2WHOIS_API_KEY - مفتاح API الخاص بـ IP2WhoisGREYNOISE_API_KEY - مفتاح API الخاص بـ GreynoiseSHODAN_API_KEY - مفتاح API الخاص بـ ShodanURLHAUS_API_KEY - مفتاح API الخاص بـ URLhausWTFIS_DEFAULTS - الوسائط المنطقية الافتراضيةGEOLOCATION_SERVICE - خدمة بحث الموقع الجغرافي / ASN المطلوب استخدامهاعيّن هذه باستخدام طريقتك الخاصة.
بدلاً من ذلك، أنشئ ملفًا في دليل منزلك ~/.env.wtfis يحتوي على الخيارات المذكورة أعلاه. انظر .env.wtfis.example للحصول على قالب. ملاحظة: لا تنسَ تنفيذ chmod 400 على الملف!
usage: wtfis [-h] [-A] [-s] [-g] [-a] [-u] [-m N] [-n] [-1] [-V] [--geolocation-service {ip2location,ipinfo,ipwhois}] entity
positional arguments:
entity Hostname, domain or IP
options:
-h, --help show this help message and exit
-A, --all Enable all possible enrichments
-s, --use-shodan Use Shodan to enrich IPs
-g, --use-greynoise Enable Greynoise for IPs
-a, --use-abuseipdb Enable AbuseIPDB for IPs
-u, --use-urlhaus Enable URLhaus for IPs and domains
-m N, --max-resolutions N
Maximum number of resolutions to show (default: 3)
-n, --no-color Show output without colors
-1, --one-column Display results in one column
-V, --version Print version number
--geolocation-service {ip2location,ipinfo,ipwhois}
Geolocation service to use (default: ipwhois)
ببساطة:
$ wtfis FQDN_OR_DOMAIN_OR_IP
وستحصل على النتائج منظمة في لوحات، على غرار الصورة أعلاه.
يتم قبول الإدخال المعطّل (Defanged)، مثل api[.]google[.]com.
إذا كانت الطرفية تدعم ذلك، فإن بعض الحقول والعناوين تكون روابط تشعبية قابلة للنقر تشير إلى مواقع الخدمات المعنية.
بدلاً من تحديد كل علامة إثراء على حدة، يمكنك استخدام العلامة -A / --all لتمكينها جميعًا حيثما أمكن. هذه العلامة لا يمكن استخدامها مع علامات --use-* في نفس الوقت.
استخدم العلامة -a أو --use-abuseipdb لتمكين إثراء AbuseIPDB لأسماء المضيفين والنطاقات وعناوين IP.

اسم الحقل AbuseIPDB هو ارتباط تشعبي (إذا كانت الطرفية تدعم ذلك) ينقلك إلى صفحة قاعدة بيانات AbuseIPDB المحددة لاستعلامك.
لتمكين Greynoise، قم بالاستدعاء بالعلامة -g أو --use-greynoise. نظرًا لأن حصة API منخفضة جدًا (50 طلبًا في الأسبوع اعتبارًا من مارس 2023)، فإن هذا البحث معطل افتراضيًا.

اسم الحقل GreyNoise هو أيضًا ارتباط تشعبي (إذا كانت الطرفية تدعم ذلك) يشير إلى إدخال IP في واجهة ويب Greynoise، حيث يتم عرض مزيد من السياق.
يمكن استخدام Shodan لإظهار المنافذ أو الخدمات المفتوحة لعنوان IP، ونظام التشغيل في بعض النتائج. استدعِ بالعلامة -s أو --use-shodan.

إذا كانت الطرفية تدعم ذلك، فإن حقل Services هو ارتباط تشعبي قابل للنقر ينقلك إلى واجهة ويب Shodan.
استخدم العلامة -u أو --use-urlhaus لتمكين إثراء URLhaus لأسماء المضيفين والنطاقات وعناوين IP.

اسم الحقل Malware URLs هو ارتباط تشعبي (إذا كانت الطرفية تدعم ذلك) ينقلك إلى صفحة قاعدة بيانات URLhaus المحددة لاستعلامك.
بالنسبة لعمليات البحث عن FQDN والنطاق، يمكنك زيادة أو تقليل الحد الأقصى لعدد دقة IP المعروضة باستخدام -m NUMBER أو --max-resolutions=NUMBER. الحد الأعلى هو 10. إذا كنت لا تحتاج إلى الدقة على الإطلاق، فاضبط الرقم على 0.
لعرض جميع اللوحات في عمود واحد، استخدم العلامة -1 أو --one-column.

يمكن عرض اللوحات بدون ألوان باستخدام -n أو --no-color.

يمكن تعريف الوسائط الافتراضية عن طريق تعيين متغير البيئة WTFIS_DEFAULTS. على سبيل المثال، لاستخدام Shodan وعرض النتائج في عمود واحد افتراضيًا:
WTFIS_DEFAULTS=-s -1
إذا كانت وسيطة موجودة في WTFIS_DEFAULTS، فإن تحديد نفس الوسيطة أثناء استدعاء الأمر يلغي تلك الوسيطة. لذا في المثال أعلاه، إذا قمت بعد ذلك بتشغيل:
$ wtfis example.com -s
فلن يتم استخدام Shodan.
لاحظ أنه لا يمكن تعريف الحد الأقصى من الدقة (-m N, --max-resolutions N) في الإعدادات الافتراضية في الوقت الحالي.
الطريقة الموصى بها لتغيير ذلك هي تعيين المتغير GEOLOCATION_SERVICE. على سبيل المثال، لاستخدام IPinfo:
GEOLOCATION_SERVICE=ipinfo
بدلاً من ذلك، عيّن --geolocation-service عند استدعاء الأمر:
$ wtfis --geolocation-service=ipinfo 1.1.1.1
إذا تم تعيين كل ما سبق، فإن علامة سطر الأوامر لها الأسبقية.
يمكن تشغيل wtfis من صورة Docker. أولاً، قم ببناء الصورة (باستخدام Dockerfile المرفق) عن طريق تشغيل:
$ make docker-image
ستحتوي الصورة على أحدث إصدار موسوم (وليس بالضرورة من أحدث commit) من wtfis. يضمن هذا حصولك على إصدار مستقر.
طريقتان يمكنك من خلالهما تشغيل الصورة:
تأكد من وجود .env.wtfis في دليل منزلك وأنه مضبوط بمتغيرات البيئة اللازمة. ثم قم ببساطة بتشغيل:
$ make docker-run
هذا اسم مستعار لـ
$ docker run --env-file=${HOME}/.env.wtfis -it wtfis
لاحظ أن كل تعريف يجب ألا يحتوي على أي مسافات قبل وبعد علامة المساواة (FOO=bar، وليس FOO = bar).
بدلاً من ذلك، يمكنك تعيين متغيرات البيئة بنفسك، ثم تشغيل، على سبيل المثال:
$ docker run -e VT_API_KEY -e SHODAN_API_KEY -it wtfis