
هدف هذا الدليل بسيط جدًا - تعليم أي شخص مهتم بالأمن السيبراني، بغض النظر عن مستوى معرفته، كيفية الاستفادة القصوى من Netlas.io.
الهدف من هذا الدليل هو تعليم أي شخص مهتم بالأمن السيبراني، بغض النظر عن مستوى معرفته، كيفية الاستفادة القصوى من أدوات البحث في Netlas. هذا دليل طويل. لقد جمعنا أكبر عدد ممكن من حالات الاستخدام البسيطة وأظهرنا كيفية أتمتتها.
⭐️ امنحنا نجمة لإظهار تقديرك
👁️ اشترك للحصول على التحديثات
Netlas هو محرك بحث مصمم للعثور على معلومات حول جميع عناوين IP والنطاقات المتاحة على الإنترنت وتحليلها. يحتوي Netlas على بعض ميزات إدارة سطح الهجوم، لكن هذا الدليل يركز بشكل أساسي على أدوات البحث في Netlas وكيفية استخدامها في الأتمتة.
يتضمن Netlas عدة أدوات بحث:
سنستخدم بشكل أساسي بحث الاستجابة (نتائج فحص الإنترنت)، لكن جميع الأدوات تعمل بنفس الطريقة. إذا فهمت كيفية استخدام أداة بحث الاستجابة، يمكنك التعامل مع أي أداة أخرى.
قبل أن نتعمق في التفاصيل التقنية، دعنا نرى كيف يعمل Netlas.io مع بعض الأمثلة البسيطة.

افتح Netlas.io معلومات IP/النطاق وأدخل اسم النطاق أو IP. سيتم عرض المعلومات التالية كنتيجة:

إذا كنت بحاجة إلى العثور على نطاقات صينية أو غيرها من أسماء النطاقات الدولية، فقم بتحويلها إلى Punycode. على سبيل المثال:``` domain:*.xn--fiqs8s
يمكنك القيام بذلك بمساعدة أدوات عبر الإنترنت خاصة. على سبيل المثال - [Charset.org](https://www.charset.org/punycode)
### البحث عن مواقع ويب تحتوي على كلمة معينة في عنوانها

افتح [Netlas.io response search](https://app.netlas.io/responses/) وأدخل:```
http.title:g*thub
سيؤدي هذا إلى العثور على جميع الخوادم التي تحتوي عناوين HTTP الخاصة بها على كلمة تبدأ بـ "g" وتنتهي بـ "thub". اقرأ المزيد عن استخدام العلامات النجمية أدناه.
الآن دعنا نتعلم المزيد حول كيفية عمل استعلامات البحث في Netlas.io.
يعتمد Netlas.io على Elasticsearch، وهو محرك بحث موزع ومفتوح المصدر ومجاني وقائم على REST. وطرق البحث في Netlas.io مشابهة جدًا لتلك المستخدمة في قواعد البيانات الأخرى القائمة على Elasticsearch.

يتيح لك البحث في الاستجابات و DNS و IP والشهادات استخدام عوامل التصفية (الحقول) في استعلامات البحث. على سبيل المثال:``` http.body:netlas
[Try in Netlas](https://app.netlas.io/responses/?q=http.body%3Anetlas&page=1&indices=)
يمكنك استخدام هذا الاستعلام للعثور على الصفحات التي تحتوي على الكلمة "netlas" داخل وسم <body> الخاص بـ HTML.
تظهر قائمة بالفلاتر المتاحة لكل نوع بحث على الجانب الأيمن من الصفحة.

تتيح لك الفلاتر البحث عن الخوادم بناءً على العديد من المعاملات المختلفة. على سبيل المثال:
* `domain`
* `ip`
* `protocol`
* `certificate`
* `cve`
* `geolocation` (`city`, `continent`, `country`)
والعديد من الخيارات الأخرى.
### المعاملات المنطقية
يمكنك استخدام عدة فلاتر في استعلام واحد ودمجها باستخدام المعاملات المنطقية `AND`، `OR`، `NOT`. على سبيل المثال:```
http.title:netlas NOT port:443
إذا كنت ترغب في دمج شروط متعددة في استعلامك، استخدم الأقواس:``` http.title:(netlas OR shodan) NOT port:443
[Try in Netlas](https://nt.ls/OrFOY)
### النطاقات
إذا استخدمت قيمة رقمية كقيمة لحقل، يمكنك تعيينها كقيمة من وإلى (الحدود القصوى لنطاق القيمة):```
ip:[173.194.222.0 TO 173.194.222.255]
أو حدد فقط الحد الأعلى أو الحد الأدنى للقيمة:``` host:"1.1.1.1" port:<=1000
[جرب في Netlas](https://app.netlas.io/responses/?q=host%3A%221.1.1.1%22%20port%3A%3C%3D1000&page=1&indices=)
### رموز البدل
إذا كنت لا تعرف الوصف الدقيق لحرف معين في استعلامك (على سبيل المثال، لا تعرف المنطقة المحددة لنطاق أو طريقة كتابة اسم)، يمكنك استبداله بعلامة النجمة:```
domain:google.*
يمكنك أيضًا استخدام علامة الاستفهام:``` domain:google.?
[Try in Netlas](https://app.netlas.io/responses/?q=domain%3Agoogle.%3F&page=1&indices=)
`*` - العديد من الرموز، `?` - رمز واحد.
يمكنك أيضًا استخدام العلامات النجمية في الفلاتر. على سبيل المثال:```
\*.banner:database
يقوم هذا الاستعلام بالبحث في جميع أنواع البانر في وقت واحد ويستبدل عدة عوامل تصفية: amqp.banner: و ftp.banner: و dns.banner: و telnet.banner: إلخ.

إذا كنت بحاجة إلى البحث ليس بالقيمة الدقيقة بل بالقيمة التقريبية لحقل (مثل الصفحات التي تحتوي عناوينها على جميع الأسماء المتوافقة مع Joseph)، فقط أضف ~ إلى الاستعلام:```
http.title:Joseph~
[جرب في Netlas](https://app.netlas.io/responses/?q=http.title%3AJoseph~&page=1&indices=)
### التعبيرات المنتظمة
التعبير المنتظم هو تسلسل من الأحرف يتيح لك البحث عن واسترداد واستبدال أجزاء من النص في مستند مصدر تطابق أنماطًا معينة. على سبيل المثال:
* أي عنوان بريد إلكتروني: ```text
([a-zA-Z0–9+._-]+@[a-zA-Z0–9._-]+\.[a-zA-Z0–9_-]+)
لمزيد من المعلومات حول استخدام التعبيرات العادية، راجع الأمثلة في كتاب طبخ Netlas (ما تقرؤه الآن) والروابط أدناه:
دليل صيغة التعبيرات العادية في توثيق Elasticsearch

يمكنك حفظ نتائجك (جميع الحقول أو الحقول المحددة) بتنسيق JSON وCSV لعرضها بالتنسيق الذي تفضله أو تحليلها تلقائياً باستخدام أدوات مختلفة.

يمكنك تجميع النتائج حسب قيم حقول مختلفة لتسريع وقت البحث، على سبيل المثال، حسب اسم النطاق أو الموقع الجغرافي.

يمكنك مشاركة روابط نتائج البحث بحرية (لا يلزم التسجيل لفتحها، ما لم يتجاوز المستخدم الحد المجاني البالغ 50 طلباً).

تذكر أيضاً أنه يمكن الاطلاع على جميع الاستعلامات التي أجريتها في صفحة ملفك الشخصي (الرابط في الزاوية العلوية اليمنى).
أهم وظيفة لـ Netlas.io هي مساعدة الأشخاص على إجراء أبحاث الأمن السيبراني بشكل أسرع وأكثر كفاءة. تحتوي الخدمة على واجهة برمجة تطبيقات (API) تتيح لك أتمتة تنفيذ الطلبات المختلفة.
يمكن تنفيذ ذلك في نصوص Python أو Bash بسيطة تتكون من بضعة أسطر أو في تطبيقات معقدة متعددة الوظائف.
يمكنك قراءة المزيد حول استخدام Netlas API في كتاب طبخ Netlas (ما تقرؤه الآن) أو في التوثيق الرسمي:
هذه هي البداية الأولى مع API. لا تحتاج حتى لدفع اشتراك (50 طلباً يومياً مجاناً). فقط اذهب إلى صفحة الملف الشخصي.

لا تحتاج إلى كتابة نصوص أو إنشاء تطبيقات لبدء استخدام Netlas API. يمكنك ببساطة اختبارها باستخدام عميل API المفضل لديك. راجع التعليمات هنا.

مثل واجهات API الأخرى، تتكون استجابة Netlas API من رؤوس ونص استجابة بتنسيق JSON. تحتوي ملفات JSON على بيانات بتنسيق مفتاح-قيمة ويمكن تحليلها باستخدام أي لغة برمجة تقريباً.
إذا كنت تستخدم Swagger، يمكنك نسخ أو تنزيل نص الاستجابة وعرضه في أي محرر نصوص أو محلل JSON.

نصيحة صغيرة ستكون مفيدة عند كتابة التعليمات البرمجية باستخدام Netlas API. لفهم هيكل ملف JSON بشكل أسرع والعثور على المسار للحصول على قيمة معينة، استخدم أدوات مثل:
أسهل طريقة لأتمتة الطلبات إلى Netlas API هي استخدام مكتبة Python المصممة خصيصاً (حزمة).
مستودع مكتبة Netlas-Python على Github
لنر كيف تعمل بمثال بسيط. جميع نماذج التعليمات البرمجية من كتاب طبخ Netlas موجودة في مجلد scripts. يمكنك استنساخ هذا المستودع وتشغيلها على جهازك:```shell git clone https://github.com/netlas-io/netlas-cookbook
إذا لم تكن قد قمت بتشغيل سكربت بايثون من قبل ولا تعرف كيفية القيام بذلك، يمكنك البدء بفتح مستودع Netlas Cookbook في Gitpod.
Gitpod هي بيئة تطوير سحابية تستند إلى Ubuntu (توزيعة لينكس). فقط افتح هذا الرابط في متصفحك (سجل الدخول باستخدام حساب Github الخاص بك):
[تشغيل Netlas Cookbook في Gitpod](https://gitpod.io#https://github.com/netlas-io/netlas-cookbook)

قم بتثبيت مكتبة Netlas لبايثون باستخدام pip (مثبت حزم بايثون). أدخل في سطر الأوامر:```shell
pip install netlas
تحقق من التثبيت. أدخل في سطر الأوامر:```shell netlas --help
قم بتشغيل netlas_python_example.py:```shell
python3 scripts/netlas_python_example.py
وبالطبع، يمكنك فقط نسخ الكود وحفظه في الملفات. إليك كود المثال الأول:```python import netlas
apikey = "YOUR API KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
port:7001netlas_query = netlas_connection.query(query="port:7001")
for response in netlas_query['items']: print(f"{response['data']['ip']}:{response['data']['port']}{response['data']['path']} [{response['data']['protocol']}]")
### أمثلة على مفاتيح الاستجابة للحصول على بيانات مفيدة
ذُكر أعلاه أنه للعثور على تصحيحات JSON لاستجابة API للحصول على البيانات التي تحتاجها، يمكنك استخدام تطبيقات عبر الإنترنت خاصة (JSON-evaluators). ولتسهيل حياتك أكثر، إليك قائمة صغيرة من الأمثلة على مفاتيح استجابة مكتبة Python الأكثر احتياجًا.```python
# Main domain/ip info
response['data']['uri']
response['data']['ip']
response['data']['http']['title']
response['data']['http']['meta']
response['data']['http']['body']
# Geo info
response['data']['geo']['continent']
response['data']['geo']['country']
response['data']['geo']['city']
response['data']['geo']['location']['lat']
response['data']['geo']['location']['long']
# Whois geo info
response['data']['whois']['net']['country']
response['data']['whois']['net']['address']
response['data']['whois']['net']['city']
response['data']['whois']['net']['contacts']['emails']
response['data']['whois']['net']['contacts']['phones']
# Http status and favicon ico info
response['data']['port']
response['data']['http']['status_code']
response['data']['http']['status_line']
response['data']['http']['favicon']['image']
response['data']['http']['favicon']['path']
# Basic CVE info
response['data']['cve'][0]['name']
response['data']['cve'][0]['description']
response['data']['cve'][0]['base_score']
response['data']['cve'][0]['has_exploit']
response['data']['cve'][0]['exploit_links']

عند العمل مع مكتبة Netlas بايثون، من المهم جدًا تحديد نوع البيانات التي ترغب في استرجاعها بشكل صحيح. يتم إرجاع نوع response افتراضيًا وتستخدم العديد من أمثلة Netlas CookBook هذا النوع.
ولكن بالنسبة لبعض المهام، مثل الحصول على معلومات whois حول نطاق أو البحث عن نطاقات في شبكة فرعية، تحتاج إلى استخدام نوع بيانات مختلف. على سبيل المثال:```python netlas_query = netlas_connection.query(query='a:"163.114.132.0/24"',datatype="domain")
إذا كنت تعتقد أن استعلامًا معينًا لا يعيد نتائج عندما يفترض أن يعيدها - فقط حاول تغيير قيمة معامل **datatype**. من المحتمل جدًا أن يساعد هذا.
أنواع البيانات المتاحة:
- **datatype="response"** يتوافق مع النتائج التي يمكن الحصول عليها في [Netlas Responses Search](https://app.netlas.io/responses/).
- **datatype="domain"** يتوافق مع النتائج التي يمكن الحصول عليها في [Netlas DNS search](https://app.netlas.io/domains/)
- **datatype="domain-whois"** يتوافق مع النتائج التي يمكن الحصول عليها في [Netlas Domain Whois Search](https://app.netlas.io/whois_domains/).
- **datatype="ip-whois"** يتوافق مع النتائج التي يمكن الحصول عليها في [Netlas IP Whois Search](https://app.netlas.io/whois_ip/).
- **datatype="cert"** يتوافق مع النتائج التي يمكن الحصول عليها في [Netlas Certificates Search](https://app.netlas.io/certs/).
### أدوات Netlas CLI

يمكنك أيضًا استخدام مكتبة Netlas Python مباشرة من سطر الأوامر. على سبيل المثال:```bash
netlas search "http.title:johnsmith" -f json >results.json
هذا الأمر البسيط يبحث عن جميع الخوادم التي تحتوي على كلمة johnsmith في عنوانها، ويعيد النتائج بتنسيق JSON، ويخزن النتائج في ملف resutls.json.
يمكن استخدام جميع الميزات الأخرى لواجهة Netlas API بنفس الطريقة. يمكنك معرفة المزيد حول هذا من خلال المساعدة (الأمر -h) والأمثلة الموجودة في Netlas Cookbook (ما تقرأه الآن).``` Usage: netlas [OPTIONS] COMMAND [ARGS]...
Options: -h, --help Show this message and exit.
Commands: count Calculate count of query results. download Download data. host Host (ip or domain) information. indices Get available data indices. profile Get user profile data. savekey Save API key to the local system. search (query) Search query. stat Get statistics for query.
قبل تشغيل أوامر Netlas CLI Tools المختلفة، احفظ API key في الإعدادات:```bash
netlas savekey YOUR_API_KEY
لدينا أيضًا مستودع على Github يحتوي على بعض الأمثلة لأتمتة المهام المختلفة باستخدام سكريبت bash وأدوات Netlas CLI:
واجهة برمجة تطبيقات Netlas لديها العديد من الطرق، ولكن الطرق الأكثر استخدامًا هي search و download. إنهما متشابهان جدًا مع بعضهما البعض، ولكن لا يزال لديهما بعض الاختلافات.
طريقة search تقوم بتحميل صفحة واحدة من النتائج (20 عنصرًا) في المرة الواحدة وتسمح بتحميل حد أقصى 200 صفحة (20*200=4000 عنصر). طريقة download تقوم بتحميل جميع النتائج (ولكنها تتطلب موارد أكثر للتنفيذ).
هناك أيضًا طريقة host التي تقوم ببساطة بإرجاع المعلومات الأساسية حول نطاق معين أو عنوان IP (لا يلزم تحديد datatype (مثل الطرق الأخرى)):```bash netlas host "51.159.153.170"
### معلمات الطلب الإضافية
تتيح لك واجهة برمجة تطبيقات Netlas ضبط البيانات التي يتم إرجاعها بواسطة الطلبات بشكل مرن باستخدام معلمات إضافية. على سبيل المثال:
* indices - المعرف الذي يتوافق مع تاريخ فهرسة معين. لمعرفة المعرف لتاريخ محدد، افتح app.netlas.io، وانقر على التقويم الموجود على يمين شريط إدخال استعلام البحث، وحدد التاريخ الذي تهتم به، ولاحظ كيف يتغير معامل indices في عنوان URL في شريط عنوان المتصفح.
* start - رقم صفحة النتائج (الافتراضي 0)
* fields - أسماء الحقول التي سيتم تضمينها في النتائج (جميع الحقول افتراضيًا). سيكون هذا مفيدًا لتسريع وتحسين الشيفرة البرمجية عند وجود عدد كبير من الطلبات.
### إجراء الطلبات باستخدام بايثون (بدون مكتبة Netlas بايثون)
قد تجد أنه من الأسهل في بعض الحالات عدم استخدام مكتبة Netlas بايثون، بل استخدام حزمة الطلبات القياسية (request package) في بايثون، وهي مألوفة لدى العديد من المطورين:
أدخل في سطر الأوامر:```bash
python scripts/python_example.py
الكود المصدري لـ python_example.py:```python import requests
response = requests.get("https://app.netlas.io/api/domains/?q=ivanov.com&source_type=include&start=0&fields=*",{'X-API-Key': 'YOUR API KEY'})
print(response.json())
لكن مكتبة Netlas Python لا تزال مفضلة لأنها مصممة للتعامل مع مشاكل مختلفة في معالجة الاستعلامات (الأخطاء، الانتظار الطويل، إلخ).
### أمثلة للغات برمجة أخرى
بينما نوصي باستخدام مكتبة Python الخاصة بنا لأتمتة بحث Netlas، تجدر الإشارة إلى أنه يمكن دمج API Netlas في معظم التطبيقات بمجموعة واسعة من حزم التقنيات. الشيء الرئيسي هو أن تكون قادرة على إجراء **طلبات REST** و**تحليل بيانات JSON**.
فيما يلي بعض الأمثلة بلغات برمجة شائعة مختلفة.
#### NodeJS <!-- omit in toc -->

أدخل في سطر الأوامر:```bash
node scripts/node_example.js
إذا كنت لا تستخدم Gitpod، فيجب أن يكون NodeJS مثبتًا على جهازك.
الكود المصدري لـ nodejs_example.js:```javascript fetch('https://app.netlas.io/api/domains/?q=ivanov.com&source_type=include&start=0&fields=*', { headers: { "X-API-Key": "YOUR_API_KEY", }, }) .then((response) => response.text()) .then((body) => { var jsonArray = JSON.parse(body); console.log(jsonArray['items'][0]); });
#### Ruby <!-- omit in toc -->

أدخل في سطر الأوامر:```bash
ruby scripts/ruby_example.rb
إذا كنت لا تستخدم Gitpod، فيجب أن يكون لديك Ruby مثبتًا على جهازك.
الكود المصدري لـ ruby_example.rb:```ruby require 'net/http' require 'uri' require 'json'
uri = URI("https://app.netlas.io/api/domains/?q=ivanov.com&source_type=include&start=0&fields=*") req = Net::HTTP::Get.new(uri) req['X-API-Key'] = "YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(req) }
jsonArray = JSON.parse(res.body)
puts jsonArray['items'][0]['data']['domain']
#### Bash <!-- omit in toc -->

أدخل في سطر الأوامر:```bash
bash scripts/bash_example.sh
الكود المصدري لـ bash_example.sh:```
curl -X 'GET'
'https://app.netlas.io/api/domains/?q=ivanov.com&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' | jq .items[0].data.last_updated
### أداة JQ
لاحظ في المثال أعلاه، تم استخدام أداة JQ لاستخراج الحقول من بيانات JSON.
يشار إليها أحيانًا بأنها "مثل sed لبيانات JSON". إنها أداة مفيدة بشكل مدهش للعمل مع أي بيانات JSON. فيما يلي بعض الأمثلة على الصياغة.
Print firt item of JSON-array:```
.items[0]
اطبع جميع عناصر JSON-array:``` .items[]
اطبع جميع العناصر الفرعية 'data' للعنصر الأول من مصفوفة JSON:```
.['items'][0]['data'][]
اطبع جميع العناصر الفرعية لكل عنصر من مصفوفة JSON:``` .items[].data.technical[]
يمكنك قراءة المزيد عن JQ هنا (أوصي بإيلاء اهتمام خاص لتصفية البيانات): [وثائق أداة JQ](https://jqlang.github.io/jq/)
### أدوات الذكاء الاصطناعي لكتابة الأكواد

إذا واجهت أي مشاكل عند تخصيص أمثلة Netlas Cookbook، نوصيك بطلب المساعدة من أدوات الذكاء الاصطناعي لتحسين وكتابة الأكواد. على سبيل المثال:
[ChatGPT](https://chatgpt.com)
[Code Llama](https://huggingface.co/spaces/codellama/codellama-playground)
[You.com](https://you.com/)
عند العمل مع مثل هذه الخدمات، تحتاج فقط إلى وصف المهمة التي تريد حلها بمساعدة الكود بالكلمات.
### مدققات الأكواد

عند إعادة صياغة أمثلة Netlas Cookbook لتناسب أغراضك، قد تجد أن الكود لن يعمل بسبب بعض الأخطاء. يمكن لأدوات عبر الإنترنت متخصصة مساعدتك في العثور عليها وإصلاحها:
[ExtendsClass Python Tester](https://extendsclass.com/python-tester.html)
[Snyk](https://snyk.io/code-checker/python/)
إذا كنت لا تريد نسخ الكود إلى خدمات طرف ثالث، يمكنك التحقق من وجود أخطاء على جهازك باستخدام Pylint (محلل الكود الثابت):
[حزمة Pylint للبايثون](https://pypi.org/project/pylint/)
## استخدام Netlas.io في استخبارات المصادر المفتوحة (OSINT)

يمكن أن يساعدك Netlas.io في جمع البيانات حول نطاق أو شركة، وكذلك العثور على إشارات إلى شخص (أو أي شخص) على الإنترنت.
يمكن استخدامه أيضًا للعثور على إصدارات قديمة من صفحات الويب (كبديل لـ Wayback Machine).
### البحث عن اسم مستخدم شخص أو بريد إلكتروني في جهات اتصال WHOIS
في الغالب، تحتوي بيانات WHOIS فقط على معلومات الاتصال الخاصة بالشركة المسجلة للنطاقات. لكن في بعض الأحيان قد تكون هناك جهات اتصال شخصية للأشخاص المعنيين. سيساعدك هذا الاستعلام في العثور عليهم.
*قد تتطلب هذه الطريقة اشتراكًا مدفوعًا.* [اطلع على الأسعار](https://netlas.io/pricing/)
**مثال على استعلام البحث**
```
whois.related_nets.contacts.emails:sweetwater
مثال طلب API
أدوات CLI الخاصة بـ Netlas:```bash netlas search "whois.related_nets.contacts.emails:sweetwater*" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=whois.related_nets.contacts.emails%3Asweetwater*&fields=' \
-H 'accept: application/json' \
-H 'X-API-Key: aqkd8L4MR93Tkcaz2UXDXrRleV8Vlvbv' | jq .items[].data.uri
مثال الكود (مكتبة Netlas بايثون)

قم بتشغيله في سطر الأوامر:```bash python scripts/osint/whois_email_search.py
الكود المصدري لـ scripts/osint/whois_email_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `whois.related_nets.contacts.emails:sweetwater`
netlas_query = netlas_connection.query(query="whois.related_nets.contacts.emails:sweetwater*")
# iterate over data and print: URL, Country, Related nets data
for response in netlas_query['items']:
print (response['data']['uri'])
print (response['data']['geo']['country'])
print (response['data']['whois']['related_nets'])
يتيح لك Netlas البحث عن ذكر كلمات معينة في العناوين وفي كود HTML لصفحات الويب. يمكنك البحث عن الكلمات بالتطابق التام، أو بالتطابق التقريبي (راجع قسم الاستعلامات المبهمة)، واستبدال الأحرف غير المؤكدة بعلامات نجمية.
مثال على استعلام البحث
```
http.title:sweetwater OR http.body:sweetwater
[Try in Netlas](https://app.netlas.io/responses/?q=http.title%3Asweetwater%20OR%20http.body%3Asweetwater&page=1&indices=)
**مثال لطلب API**
Netlas CLI Tools:```bash
netlas search "http.title:sweetwater OR http.body:sweetwater" -f json
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=whois.related_nets.contacts.emails%3Asweetwater*&fields='
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.uri
**مثال كود (Netlas Python Library)**

تشغيل في سطر الأوامر:```bash
python scripts/osint/title_body_search.py
الكود المصدري لـ scripts/osint/title_body_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
http.title:sweetwater OR http.body:sweetwaternetlas_query = netlas_connection.query(query="http.title:sweetwater OR http.body:sweetwater*")
for response in netlas_query['items']: print (response['data']['ip']) print (response['data']['uri']) print (response['data']['http']['title'])
### البحث عن "ملفات المعلومات القيمة" في النطاقات الفرعية لموقع الشركة على الويب

كان Metagoofil أداة شائعة بين ممارسي OSINT لسنوات عديدة. يبحث في Google عن ملفات الوثائق الموجودة على موقع الشركة (pdf, xlsx, docx وغيرها) ويحلل البيانات الوصفية الخاصة بها.
وما لا يتم فهرسته بواسطة Google يمكن العثور عليه باستخدام Netlas ثم تنزيله على جهاز الكمبيوتر الخاص بك وتحليله باستخدام أداة [MetaDetective](https://github.com/franckferman/MetaDetective).```
uri:*lidl.* AND http.body:pdf
يمكنك استبدال عامل التصفية uri: بـ domain: و host: (أوصي دائمًا بمقارنة النتائج عند استخدام هذه العوامل الثلاثة).
يمكنك أيضًا البحث عن مجموعة واسعة من امتدادات الملفات، حسب ما تريد العثور عليه. على سبيل المثال:``` http.body:xls http.body:xlsx http.body:doc http.body:docx http.body:ppt http.body:pptx http.body:mdb http.body:csv http.body:sql http.body:sqlite
**مثال لطلب API**
Netlas CLI Tools:```bash
netlas search "uri:*lidl.* AND http.body:pdf"
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=uri%3A*lidl.*%20AND%20http.body%3Apdf&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.domain
**مثال كود (مكتبة Netlas بايثون)**

تشغيل في سطر الأوامر:```bash
python scripts/osint/juicyinfo_search.py
رمز المصدر لـ scripts/osint/juicyinfo_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
uri:*lidl.* AND http.body:pdfnetlas_query = netlas_connection.query(query='uri:lidl. AND http.body:pdf')
for response in netlas_query['items']: print (response['data']['uri']) print (response['data']['http']['body'])
من أجل أتمتة الروابط إلى مستندات PDF من نص صفحة الويب، يمكنك استخدام حزمة Python [Re](https://docs.python.org/3/library/re.html).
### البحث عن ذكر أرقام الهواتف
كما هو الحال مع الأسماء المستعارة وعناوين البريد الإلكتروني، يمكنك أيضًا البحث عن ذكر رقم هاتف في كود صفحات الويب أو معلومات الاتصال في WHOIS.
نفرد هذه المهمة كمثال منفصل، لأن البحث عن رقم هاتف معقد نظرًا لإمكانية كتابته بتنسيقات مختلفة.
**مثال على استعلام البحث**
```
http.body:1?234?567?89?99 OR http.body:12345678999 OR http.body:1234?5678?999
عند تقديم طلب، يجب أن تأخذ في الاعتبار تنسيق تسجيل رقم الهاتف المقبول في الدولة التي يملك رقم الهاتف الذي تهتم به.
مثال على طلب API
Netlas CLI Tools:```bash netlas search "http.body:1?234?567?89?99 OR http.body:12345678999 OR http.body:1234?5678?999" -f json
لا تنس أنه يمكنك البحث عن أرقام الهواتف ليس فقط في نص الصفحة، بل أيضًا في معلومات الاتصال الخاصة بـ WHOIS. يمكن القيام بذلك باستخدام الفلتر **whois.related_nets.contacts.phones:**
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=http.body%3A1%3F234%3F567%3F89%3F99%20OR%20http.body%3A12345678999%20OR%20http.body%3A1234%3F5678%3F999&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' jq .items[].data.uri
مثال كود (مكتبة Netlas Python)

تشغيل في سطر الأوامر:```bash python scripts/osint/phonenumber_search.py
الكود المصدري لـ scripts/osint/phonenumber_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `http.body:1?234?567?89?99 OR http.body:12345678999 OR http.body:1234?5678?999`
netlas_query = netlas_connection.query(query="http.body:1?234?567?89?99 OR http.body:12345678999 OR http.body:1234?5678?999")
# iterate over data and print: ip, url
for response in netlas_query['items']:
print (response['data']['ip'])
print (response['data']['uri'])
لنتخيل أنك موسيقي وتريد العثور على جميع المواقع التي تم نشر مساراتك فيها. يمكنك القيام بذلك من خلال البحث عن الصفحات التي تذكر اسمك وتحتوي على روابط لملفات بامتداد .mp3.
مثال على استعلام البحث
```
(http.title:alla OR http.body:alla) AND http.body:*.mp3
[جرب في Netlas](https://nt.ls/HEhJj)
**مثال على طلب API**
Netlas CLI Tools:```bash
netlas search "(http.title:alla OR http.body:alla) AND http.body:*.mp3" -f json
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=(http.title%3Aalla%20OR%20http.body%3Aalla)%20AND%20http.body%3A*.mp3&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.http.title
**مثال الكود (مكتبة Netlas Python)**

تشغيل في سطر الأوامر:```bash
python scripts/osint/file_mentions_search.py
الكود المصدري لـ scripts/osint/file_mentions_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
(http.title:alla OR http.body:alla) AND http.body:*.mp3netlas_query = netlas_connection.query(query="(http.title:alla OR http.body:alla) AND http.body:*.mp3")
for response in netlas_query['items']: print (response['data']['ip']) print (response['data']['uri']) print (response['data']['http']['title'])
### جمع معلومات WHOIS للنطاق
WHOIS هي قاعدة بيانات عامة عالمية تخزن معلومات حول جميع النطاقات المسجلة في العالم.
**مثال على استعلام البحث**

استخدم [بحث WHOIS للنطاق](https://app.netlas.io/whois_domains/)```
github.com
مثال على طلب API
Netlas CLI Tools:```bash netlas host github.com -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/whois_domains/?q=github.com&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.technical.street
مثال كود (Netlas Python Library)

شغّل في سطر الأوامر:```bash python scripts/osint/whois_search.py
الكود المصدري لـ scripts/osint/whois_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from whois for google.com domain
netlas_query = netlas_connection.query(query="google.com",datatype="whois-domain")
# iterate over data and print: owner name
for response in netlas_query['items']:
print (response['data']['technical']['name'])
علامة <address> تقع داخل علامة <head> لصفحة الويب وقد تحتوي على عناوين فعلية. من خلال البحث باستخدام هذه العلامة، يمكنك العثور على مواقع مرتبطة بشارع معين، وأحيانًا حتى مبنى معين.
مثال على استعلام البحث
```
http.contacts.address:kirby
[جرّب في Netlas](https://app.netlas.io/responses/?q=http.contacts.address%3Akirby&page=1&indices=)
يمكنك أيضًا استخدام http.contacts.email: للبحث عن البريد الإلكتروني.
**مثال لطلب API**
Netlas CLI Tools:```bash
netlas search "http.contacts.address:kirby" -f json
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=http.contacts.address%3Akirby&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.http.contacts
**مثال على الكود (مكتبة Netlas Python)**

تشغيل في سطر الأوامر:```bash
python scripts/osint/contacts_search.py
الكود المصدر لـ scripts/osint/contacts_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
http.contacts.address:kirbynetlas_query = netlas_connection.query(query="http.contacts.address:kirby")
for response in netlas_query['items']: print (response['data']['uri']) print (response['data']['http']['contacts'])
### البحث عن اسم المؤلف في الوسوم الوصفية (Meta Tags)
توجد الوسوم `<meta>` داخل الوسم `<head>` لصفحة الويب، وتحتوي على أهم الكلمات المفتاحية والوصف ومعلومات الخدمة المتنوعة واسم المؤلف.
يتيح البحث عن الاسم المستعار والاسم/اللقب عبر الوسوم الوصفية (http.meta) العثور على مواقع مرتبطة بشخص معين بشكل أسرع من البحث في كود HTML بأكمله (http.body).
**مثال على استعلام البحث**
```
http.meta:nazar
مثال طلب API
أدوات سطر أوامر Netlas:```bash netlas search "http.meta:nazar" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=http.meta%3Anazar&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.http.meta
مثال الكود (Netlas Python Library)

شغّل في سطر الأوامر:```bash python scripts/osint/author_meta_search.py
Source code of scripts/osint/author_meta_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `http.meta:nazar`
netlas_query = netlas_connection.query(query="http.meta:nazar")
# iterate over data and print: ip, url
for response in netlas_query['items']:
print (response['data']['uri'])
print (response['data']['http']['title'])
print (response['data']['http']['meta'])
بالإضافة إلى اسم المؤلف، يمكن أن تحتوي علامات البيانات الوصفية على مجموعة متنوعة من المعلومات: الترميز، اللغة، الإذن بفهرسة الصفحة بواسطة روبوتات محركات البحث، نص بطاقات الروابط في شبكات التواصل الاجتماعي، بيانات OpenGraph، وأكثر من ذلك بكثير. فيما يلي بعض الأمثلة الإضافية لعلامات البيانات الوصفية التي قد تحتوي على معلومات مفيدة للتحقيقات:
<meta name="description"> - وصف محتوى صفحة الويب.<meta name="keywords"> - كلمات مفتاحية تصف محتوى صفحة الويب.<meta name="generator"> - اسم الأداة التي تم استخدامها لإنشاء محتوى الصفحة (مفيد للبحث عن أنظمة إدارة المحتوى ومنصات الاستضافة).<meta name="copyright"> - اسم الشخص أو الشركة التي تمتلك حقوق نشر محتوى صفحة الويب.خطوة مهمة أخرى في العثور على معلومات حول شخص أو شركة هي البحث عن ذكرها في نص لافتات خادم FTP. من الممكن أن يكون عنوان IP للخوادم التي تم العثور عليها هو المفتاح للعثور على مواقع أخرى مرتبطة بالشخص أو الشركة التي تهتم بها. وفي حالة الحظ القوي جداً، قد تجد شيئاً مثيراً للاهتمام في الملفات المنشورة هناك (إذا كان خادم FTP مفتوحاً).
مثال على استعلام البحث
```
ftp.banner:"Collado"
إذا كنت بحاجة إلى البحث عن خوادم FTP بواسطة معامل آخر (مثل المدينة أو نطاق عناوين IP)، فاستخدم عامل التصفية prot7:ftp.
[جرب في Netlas](https://app.netlas.io/responses/?q=ftp.banner%3A%22Collado%22%20&page=1&indices=)
**مثال على طلب API**
Netlas CLI Tools:```bash
netlas search 'ftp.banner:"Collado"' -f json
لاحظ أنه عند استخدام علامات الاقتباس المزدوجة في الاستعلامات، يتم كتابة الاستعلام نفسه داخل علامات الاقتباس المفردة.
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=ftp.banner%3A%22Collado%22&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.uri
**مثال كود (مكتبة Netlas Python)**

شغّل في سطر الأوامر:```bash
python scripts/osint/ftp_banner_search.py
الكود المصدري لـ scripts/osint/ftp_banner_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
ftp.banner:"Collado"netlas_query = netlas_connection.query(query='ftp.banner:"Collado"')
for response in netlas_query['items']: print (response['data']['ip']) print (response['data']['uri']) print (response['data']['ftp']['banner'])
### البحث عن معلومات الاتصال في شهادات SSL

شهادة SSL هي شهادة رقمية تتحقق من هوية موقع الويب وتسمح باستخدام اتصال مشفر. قد تحتوي على معلومات عن مالكها: اسم الشخص المسؤول، اسم المؤسسة، الدولة وأحيانًا العنوان والرمز البريدي. يمكنك البحث عن هذه المعلومات باستخدام الفلاتر التالية (والعديد غيرها):
- `certificate.issuer.email_address`
- `certificate.issuer.given_name`
- `certificate.issuer.organization`
- `certificate.issuer.postal_code`
- `certificate.issuer.street_address`
- `certificate.issuer.surname`
لنحاول البحث عن عناوين IP تحتوي على كلمة معينة في عنوان الشارع في شهادتها:```
certificate.issuer.street_address:*mcgill*
مثال على طلب API
أدوات CLI الخاصة بـ Netlas:```bash netlas search "certificate.issuer.street_address:mcgill" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=certificate.issuer.street_address%3A*mcgill*&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' jq .items[].data.uri
مثال الكود (Netlas Python Library)

تشغيل في سطر الأوامر:```bash python scripts/osint/certificates_search.py
الكود المصدري لـ scripts/osint/certificates_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `certificate.issuer.street_address:*mcgill*`
netlas_query = netlas_connection.query(query="certificate.issuer.street_address:*mcgill*")
print (type(netlas_query))
# iterate over data and print: ip, url, cetificate issuer
for response in netlas_query['items']:
print (response['data']['uri'])
print (response['data']['certificate']['issuer'])
لقد تم استخدام Archive.org من قبل متخصصي OSINT للبحث عن الإصدارات القديمة من المواقع وصفحات ملفات تعريف وسائل التواصل الاجتماعي للعثور على معلومات الاتصال وغيرها من المعلومات المحذوفة الآن.
ولكن، لسوء الحظ، لا يحفظ Archive.org نسخًا من جميع المواقع ولا يفعل ذلك كثيرًا (بالنسبة لبعض المواقع فقط مرتين في السنة أو أقل).
لكن Netlas يحفظ الإصدارات القديمة من المواقع منذ عام 2021 أيضًا!
غالبًا ما تُستخدم المرشحات التالية للبحث عن المواقع:``` http.title:"github.com"
domain:github.com
host:github.com

إذا نقرت على الأيقونة الخارجية في أقصى اليمين بجوار حقل إدخال استعلامات البحث، فسترى قائمة لاختيار تاريخ الفحص. يمكنك استخدامها لتصفية رموز HTML للمواقع المحفوظة في تاريخ محدد.

لمعرفة كيف يبدو الموقع، انسخ محتويات حقل "body" (علامة التبويب استجابة) إلى أي محرر نصوص واحذف الأحرف \t\r\n من كود HTML.

بعد ذلك، انسخ الكود إلى أحد المحولات الإلكترونية لـ HTML، مثل [Code beautify](https://codebeautify.org/htmlviewer). أو فقط احفظ الملف بصيغة html ثم افتحه في المتصفح.
### 9 طرق للبحث عن مواقع ويب ذات صلة

عند جمع المعلومات عن شخص أو شركة، قد يكون من المهم العثور على أكبر عدد ممكن من المواقع التي قد تكون مرتبطة بهم بطريقة ما. هناك 5 طرق على الأقل للقيام بذلك باستخدام Netlas.
1. معرف (ID) للخدمات المختلفة (أنظمة التحليل، أنظمة الإعلان، تطبيقات التكامل مع شبكات التواصل الاجتماعي وأنظمة النشر). قد يشير تداخلها إلى أن شخصًا واحدًا أو فريقًا واحدًا كان مسؤولاً. بعض الأمثلة:
Google Analytics:```
http.tracker.google_analytics:"G-X82FSVSMTV"
Google Tag Manager:``` http.tracker.google_analytics:"GTM-N6462KFQ"
AddThis:```
http.body:"AT-ra-500bcd681b192302"
بكسل فيسبوك:``` http.tracker.facebook_pixel:317853189093681
Yandex Metrika```
http.tracker.yandex_metrica:89723437
خدمات ناشر أمازون:``` http.body:APS-XXXX
نعم، كلها موجودة في الكود على بعض المواقع.
ومجموعة كبيرة من المعرفات الأخرى التي يمكن العثور عليها غالبًا في أعلى كود HTML (لكن أحيانًا في جميع أجزاء الكود).
[Try in Netlas](https://nt.ls/BCrw9)
2. معرفات البرامج التابعة (استخدم أيضًا http.body للبحث عنها). يمكنك العثور عليها في الروابط التابعة التي ينشرها الشخص على مواقع أخرى أو على شبكات التواصل الاجتماعي. قد تكون هذه معاملات URL التالية (وما يشابهها):```
aff_fcid=
user_id=
partner_id=
ref_id=
```
"GitHub, Inc."
[جرب في Netlas](https://app.netlas.io/whois_domains/?q=%22GitHub%2C%20Inc.%22&page=1&indices=)
4. ابحث عن خوادم البريد في DNS باستخدام Netlas
```
mx:*.parklogic.com
```
ns:ns?.parklogic.com
[جرب في Netlas](https://app.netlas.io/domains/?q=mx%3A*.parklogic.com&page=1&indices=)
6. الملفات (بشكل أساسي شعارات المستخدمين والصور الرمزية) بحث عن الإشارات [->](https://github.com/netlas-io/netlas-cookbook#search-file-mentions-looking-for-content-that-may-be-infringing-on-copyrights)
7. بحث النطاقات الفرعية [->](https://github.com/netlas-io/netlas-cookbook#search-subdomains)
8. بحث جهات اتصال Whois (في بحث استجابة Netlas) [->](https://github.com/netlas-io/netlas-cookbook#search-persons-nickname-or-email-in-whois-contacts)
9. بحث الأيقونة المفضلة [->](https://github.com/netlas-io/netlas-cookbook#favicon-search)
## الكشط (استخراج البيانات من نص صفحة الويب)
تعد واجهة برمجة تطبيقات Netlas أداة رائعة لجمع بيانات الاتصال وغيرها من بيانات المواقع. أولاً، تسمح لك بذلك بسرعة. ثانيًا، لا تتطلب استخدام وكيل. ثالثًا، تسمح لك بجمع البيانات من المواقع غير المتاحة حاليًا.
ومع ذلك، هناك بعض العيوب: يقوم Netlas بفحص الصفحات الرئيسية للمواقع فقط، وبعض المواقع النادرة غير مدرجة في قاعدة بياناته بسبب الحماية. لكنه لا يزال مفيدًا جدًا.
هناك ثلاثة طرق رئيسية للكشط: جمع المعلومات من وسوم HTML ومحددات CSS، واستخراج البيانات باستخدام التعبيرات العادية، والكشط بالذكاء الاصطناعي. دعنا نلقي نظرة فاحصة على الأولين.
### حزمة Beatifulsoup
[Beatifulsoup](https://pypi.org/project/beautifulsoup4/) هي واحدة من أشهر حزم Python في العالم لتحليل كود HTML وملفات XML. دعنا نحاول استخدامها لاستخراج عناوين الصفحات (من وسوم \<h1>، وليس وسوم \<title>).
أولاً، قم بتثبيت الحزمة:```bash
pip install beautifulsoup4
و تشغيل scripts/osint/scraping_beatifulsoup.py:```bash python scripts/osint/scraping_beatifulsoup.py

الكود المصدري لـ scripts/osint/scraping_beatifulsoup.py:```python
import netlas
from bs4 import BeautifulSoup
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `http.body:shop`
netlas_query = netlas_connection.query(query="http.body:shop")
# iterate over data and print: URL, h1 tags from body
for response in netlas_query['items']:
print (response['data']['uri'])
soup = BeautifulSoup(response['data']['http']['body'], "html.parser")
try:
print(soup.find("h1").get_text())
except Exception:
print("no h1 tags")
pass
يمكنك استخراج البيانات من عناصر أخرى لصفحات الويب بطريقة مماثلة:``` soup.find("h3").get_text() soup.find("id='loginform'").get_text() soup.find("class='forms'").get_text() soup.find("href='https://example.com'").get_text()
إذا كنت تريد العثور على جميع العناصر من نوع معين، استخدم طريقة find_all().
### حزمة Re
[Re](https://docs.python.org/3/library/re.html) هي حزمة بايثون مثبتة مسبقاً للبحث واسترجاع البيانات باستخدام التعبيرات النمطية (regular expressions). إنها مفيدة لاستخراج معلومات الاتصال من صفحات الويب والعديد من المهام الأخرى. دعنا نلقي نظرة على مثال لكيفية عملها.
قم بتشغيل scripts/osint/scraping_re.py:```bash
python scripts/osint/scraping_re.py

الكود المصدري لـ scripts/osint/scraping_re.py:```python import netlas import re
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
http.body:shopnetlas_query = netlas_connection.query(query="http.body:shop")
for response in netlas_query['items']: print (response['data']['uri']) emails = re.findall("[a-zA-Z0-9-.]+@[a-zA-Z0-9-.]+", response['data']['http']['body']) try: print(emails) except Exception: print("no emails") pass
وبالمثل، يمكنك استخراج الروابط وأرقام الهواتف وعناوين محافظ العملات الرقمية والمزيد. يمكن العثور على الأنماط الجاهزة في مكتبات التعبير المنتظم:
[Regex Lib](https://regexlib.com/)
[UI Bakery Regex Library](https://uibakery.io/regex-library)
[Regex 101](https://regex101.com/)
### حزم بايثون أخرى للاستخلاص
Beaitiful soup و Re packages هي مجرد واحدة من العديد من الأدوات لاستخلاص البيانات من صفحات الويب باستخدام بايثون. فيما يلي بعض الأمثلة الإضافية على هذه الحزم:
* [Scrapy](https://pypi.org/project/Scrapy/): وهو في الأساس زاحف (أداة للتنقل عبر صفحات المواقع باستخدام الروابط الموجودة في صفحات أخرى) وبالإضافة إلى ذلك، لديه قدرات واسعة لاستخراج البيانات من صفحات الويب.
* [Selenium](https://pypi.org/project/selenium/): أداة لأتمتة تجربة المتصفح الخاص بك. تسمح لك باستخراج البيانات من المحتوى الذي يتم إنشاؤه بواسطة JavaScript.
* [Lxml](https://pypi.org/project/lxml/): أداة لاستخلاص ملفات XML والتحقق من صحتها.
* [PDFtoText](https://pypi.org/project/pdftotext/) - أداة لاستخراج محتوى النص من ملفات PDF.
* [pyChatGPT](https://pypi.org/project/pyChatGPT/) - حزمة غير رسمية للتفاعل مع CHATGP (لا تتطلب مفتاح OpenAI API)، والتي تسمح بتحليل المعلومات النصية باستخدام الذكاء الاصطناعي.
## استخدام Netlas.io في تحقيقات العملات الرقمية
توفر Netlas فرصة رائعة للباحثين المتخصصين في جرائم العملات الرقمية. أولاً، يمكن استخدامها للبحث عن إشارات إلى عناوين المحافظ وأرقام المعاملات. ثانيًا، يمكن استخدامها للبحث عن مزارع التعدين الضعيفة والعقد والخوادم الأخرى المرتبطة بالبنية التحتية للعملات الرقمية.
### البحث عن مزارع التعدين

مزارع التعدين Antminer، التي تم إطلاقها لأول مرة من قبل Bitmain في عام 2013، هي واحدة من أشهر سلالات نماذج مزارع التعدين في العالم. يمكنك العثور عليها من خلال وجود كلمة "antMiner" في رأس www_authenticate.```
http.headers.www_authenticate:antMiner
يمكنك أيضًا البحث عن أنواع أخرى من مزارع التعدين. على سبيل المثال:``` http.headers.www_authenticate:XMR-Stak-Miner
جرب الجمع بين مرشحات مختلفة، والكلمات "miner/mining" وأسماء العملات الرقمية.
**مثال على طلب API**
Netlas CLI Tools:```bash
netlas search "http.headers.www_authenticate:antMiner"
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=http.headers.www_authenticate%3AantMiner&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.uri
**مثال برمجي (مكتبة Netlas بايثون)**

شغّل في سطر الأوامر:```bash
python scripts/crypto/mining_farms_search.py
الكود المصدري لـ scripts/crypto/mining_farms_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
http.headers.www_authenticate:antMinernetlas_query = netlas_connection.query(query='http.headers.www_authenticate:antMiner')
for response in netlas_query['items']: print (response['data']['uri']) print (response['data']['http']['headers'])
### البحث عن المواقع المصابة ببرامج تعدين العملات الرقمية

خدمة Coinhive، التي تسمح للمواقع (المخترقة في الغالب) باستخدام أجهزة زوارها لتعدين العملات الرقمية، ستغلق في عام 2019. ولكن على الرغم من ذلك، لا تزال الروابط إليها مضمنة في العديد من المواقع حول العالم. دعنا نحاول العثور عليها:```
http.body:coinhive.min.js domain:*
لاحظ أننا نستخدم عامل التصفية domain:* للعثور على المواقع تحديدًا، وليس جميع الأجهزة.
وبالمثل، يمكنك البحث عن المواقع المصابة ببرامج تعدين العملات الرقمية الأخرى (بالإضافة إلى أي تعليمات برمجية ضارة أخرى يتم تنفيذها من جانب المستخدم).
مثال على طلب API
Netlas CLI Tools:```bash netlas search "http.body:coinhive.min.js domain:*"
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=http.body%3Acoinhive.min.js%20domain%3A*&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.uri
مثال الكود (Netlas Python Library)

قم بالتشغيل في سطر الأوامر:```bash python scripts/crypto/search_sites_injected_with_miners.py
الكود المصدري:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `http.body:coinhive.min.js domain:*`
netlas_query = netlas_connection.query(query='http.body:coinhive.min.js domain:*')
# iterate over data and print: uri
for response in netlas_query['items']:
print (response['data']['uri'])

تستخدم عُقد البيتكوين المنفذ 8333 للاتصال عبر TCP. لذلك، من السهل العثور عليها باستخدام عامل تصفية البحث "port:".``` port:8333 cve:*
لاحظ أننا نستخدم عامل تصفية "cve:*" للبحث عن الخوادم التي بها ثغرات.
**مثال لطلب API**
أدوات سطر الأوامر Netlas:```bash
netlas search "port:8333 cve:*"
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=port%3A8333%20cve%3A*&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.uri
**مثال الكود (مكتبة Netlas Python)**

قم بالتشغيل في سطر الأوامر:```bash
python scripts/crypto/search_bitcoin_nodes.py
الكود المصدري لـ scripts/crypto/search_bitcoin_nodes.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
port:8333 cve:*netlas_query = netlas_connection.query(query='port:8333 cve:*')
for response in netlas_query['items']: print (response['data']['uri']) print (response['data']['cve'][0]['name']) print (response['data']['cve'][0]['description'])
## استخدام Netlas لاختبار الاختراق
يتيح لك Netlas.io البحث عن المواقع التي تحتوي على العديد من أنواع الثغرات الأمنية المختلفة. يمكن القيام بذلك عن طريق رقم الثغرة (CVE-...)، أو اسم البرنامج المثبت على الخادم، أو كلمات معينة في رؤوس الصفحات، ومعلمات أخرى.
يمكنك تتبع أحدث CVEs (الثغرات والمخاطر الشائعة) المنشورة على هذه المواقع:
* [CVE Details](https://www.cvedetails.com/)
* [VulDB](https://vuldb.com/)
* [OpenCVE](https://www.opencve.io/)
نقوم أيضًا بنشر الاستعلامات الأكثر صلة للبحث عن الأجهزة والبرامج الضعيفة بانتظام على خلاصات [Twitter](https://twitter.com/Netlas_io) و[Telegram](https://t.me/netlas) و[Discord](https://nt.ls/discord) الخاصة بنا، بالإضافة إلى مستودع [Netlas Dorks](https://github.com/netlas-io/netlas-dorks) على Github.
في هذا القسم، سنغطي ببساطة المبادئ العامة للبحث عن المواقع والخوادم التي تحتوي على ثغرات أمنية.
### البحث عن النطاقات الفرعية
باستخدام العلامات النجمية في استعلامات البحث، يمكنك العثور على جميع النطاقات الفرعية ذات المستويات المختلفة (التي ينتهي اسمها باسم نطاق مستوى أول معين (.com) أو نطاق مستوى ثانٍ (google.com)).
**مثال على استعلام البحث**
```
domain:*.github.com OR host:*.github.com
مثال لطلب API
أدوات Netlas CLI:```bash netlas search "domain:.github.com OR host:.github.com" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=domain%3A*.github.com%20OR%20host%3A*.github.com&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.uri
مثال على الكود (مكتبة Netlas بايثون)

تشغيل في سطر الأوامر:```bash python scripts/pentest/subdomain_search.py
الكود المصدري لـ scripts/pentest/subdomain_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `domain:*.github.com OR host:*.github.com`
netlas_query = netlas_connection.query(query="domain:*.github.com OR host:*.github.com")
# iterate over data and print: ip, url
for response in netlas_query['items']:
print (response['data']['ip'])
print (response['data']['uri'])
مثال على استعلام البحث
```
cve.name:CVE-2022-22965
[جرّب في Netlas](https://app.netlas.io/responses/?q=cve.name%3ACVE-2022-22965&page=1&indices=)
**مثال على طلب API**
Netlas CLI Tools:```bash
netlas search "cve.name:CVE-2022-22965" -f json
CVE-2022-22965 - قد يكون تطبيق Spring MVC أو Spring WebFlux الذي يعمل على JDK 9+ معرضًا لتنفيذ التعليمات البرمجية عن بُعد (RCE) عبر ربط البيانات. تفاصيل
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=http.body%3A1%3F234%3F567%3F89%3F99%20OR%20http.body%3A12345678999%20OR%20http.body%3A1234%3F5678%3F999&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' jq .items[].data.uri
**مثال الكود (مكتبة Netlas بايثون)**

تشغيل في سطر الأوامر:```bash
python scripts/pentest/cve_search.py
الكود المصدري لـ scripts/pentest/cve_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
cve.name:CVE-2022-22965netlas_query = netlas_connection.query(query="cve.name:CVE-2022-22965")
for response in netlas_query['items']: print (response['data']['ip']) print (response['data']['uri'])
### البحث عن المواقع التي تحتوي على ثغرات بأوصاف تحوي كلمة معينة
إذا لم تكن بحاجة للتحقيق في الخوادم التي تحتوي على نوع محدد من الثغرات، ولكنك تريد فقط رؤية الخوادم المعرضة للخطر في مجموعة محددة (مثل Oracle WebLogic Server أو مواقع WordPress)، يمكنك البحث عنها باستخدام الكلمات المفتاحية وعامل التصفية cve.description:.
لتصفية المواقع التي تحتوي على ثغرات تم نشر استغلالات لها، استخدم cve.has_exploit:true.
**مثال على استعلام البحث**
```
cve.description:weblogic AND cve.has_exploit:true
مثال على طلب API
أدوات Netlas CLI:```bash netlas search "cve.description:weblogic AND cve.has_exploit:true" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=cve.description%3Aweblogic%20AND%20cve.has_exploit%3Atrue&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY | jq .items[].data.uri
مثال كود (مكتبة Netlas بايثون)

تشغيل في سطر الأوامر:```bash python scripts/pentest/cve_description_search.py
شفرة المصدر لـ scripts/pentest/cve_description_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `cve.description:weblogic AND cve.has_exploit:true`
netlas_query = netlas_connection.query(query="cve.description:weblogic AND cve.has_exploit:true")
# iterate over data and print: url, first CVE name first CVE description
for response in netlas_query['items']:
print (response['data']['uri'])
print (response['data']['cve'][0]['name'])
print (response['data']['cve'][0]['description'])
تتيح لك هذه الطريقة العثور على الأجهزة المصنعة من قبل شركة معينة.
مثال على استعلام البحث
```
http.headers.server:"yawcam"
ابحث عن كاميرات ويب YawCam.
[Try in Netlas](https://app.netlas.io/responses/?q=http.headers.server%3A%22yawcam%22&page=1&indices=)
**مثال على طلب API**
أدوات Netlas CLI:```bash
netlas search 'http.headers.server:"yawcam"' -f json
لاحظ أنه عند استخدام علامات الاقتباس المزدوجة في الاستعلامات، فإن الاستعلام نفسه يُكتب داخل علامات الاقتباس المفردة.
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=http.headers.server%3A%22yawcam%22&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.uri
**مثال على الكود (مكتبة Netlas Python)**

تشغيل في سطر الأوامر:```bash
python scripts/pentest/server_name_search.py
الكود المصدري لـ scripts/pentest/server_name_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
http.headers.server:"yawcam"netlas_query = netlas_connection.query(query='http.headers.server:"yawcam"')
for response in netlas_query['items']: print (response['data']['ip']) print (response['data']['http']['headers']['server'])
#### تسجيلات الدخول وكلمات المرور الافتراضية <!-- omit in toc -->
أحد التطبيقات العملية للبحث باسم البرنامج في رؤوس الخوادم هو البحث عن أجهزة من بائع معين. قد يكون ذلك ضروريًا عند البحث عن أجهزة بها ثغرات أمنية محددة أو عن أجهزة ذات تسجيلات دخول وكلمات مرور افتراضية.

يمكن العثور على تسجيلات الدخول وكلمات المرور الافتراضية لنماذج الأجهزة المختلفة في قوائم خاصة. على سبيل المثال:
* [قائمة كلمة مرور تسجيل الدخول الافتراضية لأفضل نماذج أجهزة التوجيه (قائمة 2023)](https://www.softwaretestinghelp.com/default-router-username-and-password-list/)
* [اسم المستخدم الافتراضي – كلمة المرور – عنوان IP لكاميرات المراقبة](https://www.a1securitycameras.com/blog/default-username-passwords-ip-addresses-for-surveillance-cameras/)
* [كلمات المرور الافتراضية لجميع كاميرات IP تقريبًا](https://www.hackers-arise.com/post/the-default-passwords-of-nearly-every-ip-camera)
* [قائمة كلمات المرور الافتراضية من Datarecovery](https://datarecovery.com/rd/default-passwords/)
تذكر أن استخدام تسجيلات الدخول وكلمات المرور الافتراضية لتسجيل الدخول إلى أنظمة الآخرين ينتهك قواعد الأخلاقيات وقد يكون غير قانوني في بلدك.
### البحث عن الخوادم المعرضة للثغرات عن طريق تجزئة أيقونة المفضلة
إحدى طرق العثور على خوادم الويب المعرضة لثغرة معينة هي البحث عن أيقونة المفضلة (favicon.ico) لبرنامج خادم ويب معين.
**مثال على استعلام البحث**
```
http.favicon.hash_sha256:ebaaed8ab7c21856f888117edaf342f6bc10335106ed907f95787b69878d9d9e
يبحث هذا الاستعلام عن favicon الخاص بـ SecurePoint (CVE-2023-22620).
مثال طلب API
أدوات Netlas CLI:```bash netlas search "http.favicon.hash_sha256:ebaaed8ab7c21856f888117edaf342f6bc10335106ed907f95787b69878d9d9e" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=http.favicon.hash_sha256%3Aebaaed8ab7c21856f888117edaf342f6bc10335106ed907f95787b69878d9d9e&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.uri
مثال كود (مكتبة Netlas Python)

تشغيل في سطر الأوامر:```bash python scripts/pentest/favicon_hash_search.py
الكود المصدري لـ scripts/pentest/favicon_hash_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `http.favicon.hash_sha256:ebaaed8ab7c21856f888117edaf342f6bc10335106ed907f95787b69878d9d9e`
netlas_query = netlas_connection.query(query="http.favicon.hash_sha256:ebaaed8ab7c21856f888117edaf342f6bc10335106ed907f95787b69878d9d9e")
# iterate over data and print: IP,URL,web page title
for response in netlas_query['items']:
print (response['data']['ip'])
print (response['data']['uri'])
print (response['data']['http']['title'])
لتبسيط البحث عبر الخوادم التي تعمل بأنظمة تشغيل مختلفة، يقوم Netlas تلقائياً بإضافة وسوم إلى نتائج البحث.
أمثلة على الوسوم:
يمكنك البحث باستخدام الوسوم من خلال الفلتر "tag.name:". يمكنك أيضاً البحث حسب فئة الوسم باستخدام الفلتر "tag.category:". يتم عرض قائمة بجميع الوسوم والفئات المتاحة عند النقر على الأيقونة الواقعة على يمين مربع إدخال استعلام البحث في الصفحة الرئيسية لـ Netlas.
ملاحظة: لا تدعم جميع خطط التسعير استخدام الوسوم.
مثال على استعلام البحث
```
tag.name:"adobe_coldfusion"
هذا الاستعلام يبحث عن Adobe ColdFusion (CVE-2023-26359).
[جرب في Netlas](https://app.netlas.io/responses/?q=tag.name%3A%22adobe_coldfusion%22&page=1&indices=)
**مثال طلب API**
Netlas CLI Tools:```bash
netlas search 'tag.name:"adobe_coldfusion"' -f json
لاحظ أنه عند استخدام علامات الاقتباس المزدوجة في الاستعلامات، يتم كتابة الاستعلام نفسه داخل علامات الاقتباس المفردة.
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=tag.name%3A%22adobe_coldfusion%22&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' | jq .items[].data.uri
**مثال الكود (Netlas Python Library)**

تشغيل في سطر الأوامر:```bash
python scripts/pentest/search_tag_name.py
الكود المصدري لـ scripts/pentest/search_tag_name.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
tag.name:"adobe_coldfusion"netlas_query = netlas_connection.query(query='tag.name:"adobe_coldfusion"')
for response in netlas_query['items']: print (response['data']['ip']) print (response['data']['uri'])
### البحث عن الخوادم والأجهزة الضعيفة بالقرب منك (أو أي موقع آخر)

هل تريد معرفة عدد المواقع والأجهزة الضعيفة الموجودة حولك؟ ما عليك سوى البحث عن جميع عناوين IP التي تحتوي على حقل CVE في موقع جغرافي محدد.```
geo.city:London AND cve:*
يمكنك أيضًا استخدام مرشحات الموقع الجغرافي الأخرى.
geo.continentgeo.countrygeo.locationمثال طلب API
Netlas CLI Tools:``` geo.city:London AND cve:*
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=geo.city%3ALondon%20AND%20cve%3A*&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.domain
مثال كود (Netlas Python Library)

تشغيل في سطر الأوامر:```bash python scripts/pentest/cve_location_search.py
الكود المصدري لـ scripts/pentest/cve_location_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `geo.city:London AND cve:*`
netlas_query = netlas_connection.query(query='geo.city:London AND cve:*')
# iterate over data and print: uri, cve name, location
for response in netlas_query['items']:
print (response['data']['uri'])
print (response['data']['cve'][0]['name'])
print (response['data']['geo']['city'])

تحتوي العديد من المواقع والخوادم على صفحات ويب لتسجيل الدخول وكلمة المرور يمكن استخدامها للحصول على تحكم كامل في الموقع أو الخادم (من خلال استخدام كلمات المرور الافتراضية، أو القوة الغاشمة، أو استغلال الثغرات الأمنية).
يمكنك العثور عليها باستخدام مرشح uri: أو/و http.title:```
uri:login.php
uri:login.aspx
uri:user http.title:login
uri:admin http.title:login
http.title:admin http.title:panel
هناك العديد من المجموعات. للعثور على لوحات الخوادم الضعيفة فقط استخدم عامل التصفية `cve:*`.
أيضًا، لا تنس أنه يمكنك تصفية الخوادم حسب البرامج المثبتة باستخدام العلامات. على سبيل المثال:```
tag.1c_bitrix:*
tag.Cisco:
tag.amazon_s3:*
tag.drupal:*
tag.wordpress:*

دعنا نحاول البحث عن لوحة إدارة phpMyAdmin المعرضة للخطر (وهي واحدة من أكثر البرامج شيوعًا لإدارة قواعد بيانات MySQL):``` http.title:phpMyAdmin cve:*
وإليك بعض الأمثلة لأدوات إدارة قواعد البيانات الشائعة الأخرى:
[Adminer](https://www.adminer.org/):```
http.title:adminer http.title:login cve:*
PostgreSQL``` http.title:(phpPgAdmin OR pgadmin) cve:*
يمكنك أيضًا البحث عن الخوادم التي تحتوي على برامج مثبتة لقواعد بيانات مختلفة باستخدام العلامات أو المرشحات الخاصة:```
tag.adminer:*
tag.phpMyAdmin:*
tag.elastic:*
mongodb:*
mssql:*
mysql:*
django:*
البحث عن لوحات الإدارة للخوادم التي تم العثور عليها بهذه الطريقة قد لا يكون أسهل شيء يمكن القيام به، حيث يقوم مسؤولو المواقع غالبًا بتغيير الروابط القياسية إلى روابط أكثر أمانًا.

SQL injection هي نوع من الثغرات الأمنية التي تسمح بإجراء استعلامات قاعدة البيانات عن طريق التلاعب بمعاملات URL (يمكن أن يكون ذلك ممكنًا بسبب سوء التهيئة والكود ذي الجودة الرديئة).
إحدى أقدم التقنيات للعثور على الصفحات المعرضة لثغرة SQL Injection هي البحث عن الصفحات التي تم تمكين عرض رسائل الخطأ فيها في استعلامات MySQl باستخدام Google Dorks.
يمكن إجراء بحث مماثل في Netlas:``` http.body:mysql_fetch_array http.body:warning
[جرب في Netlas](https://app.netlas.io/responses/?q=http.body%3Amysql_fetch_array%20http.body%3Awarning&page=1&indices=)
بعض الأمثلة الأخرى:```
http.body:mysql_num_rows http.body:warning
http.body:mysql_connect http.body:denied
http.body:mysql_query http.body:warning
http.body:pg_connect http.body:fatal
مثال على طلب API
Netlas CLI Tools:```bash netlas search "http.body:mysql_fetch_array http.body:warning" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=http.body%3Amysql_fetch_array%20http.body%3Awarning&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: YOUR_API_KEY' jq .items[].data.uri
مثال كود (Netlas Python Library)

تشغيل في سطر الأوامر:```bash python scripts/pentest/sql_injection_search.py
الكود المصدري لـ scripts/pentest/sql_injection_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# search in Netlas "http.body:mysql_fetch_array http.body:warning"
netlas_query = netlas_connection.query(query="http.body:mysql_fetch_array http.body:warning")
# iterate over data and print: uri, web page body
for response in netlas_query['items']:
print (response['data']['uri'])
print (response['data']['http']['body'])
يمكنك أيضًا استخدام عوامل التصفية التالية للبحث عن خوادم MySQL الضعيفة:
mysql.error_codemysql.error_idmysql.error_messageيبحث Netlas ليس فقط في مواقع الويب والخوادم، بل في جميع الأجهزة المتصلة بالإنترنت: الأجهزة المنزلية الذكية، كاميرات المراقبة، الطابعات، أجهزة التوجيه، إشارات المرور، المعدات الطبية، والمزيد.
هناك أربع طرق رئيسية للعثور على هذه الأجهزة.

أسهل طريقة هي ببساطة البحث عن اسم البائع أو نوع الجهاز في عنوان http للإجابة.
حاول البحث عن أجهزة أتمتة المنزل Jeedom:``` http.title:Jeedom
[جرب في Netlas](https://app.netlas.io/responses/?q=http.title%3AJeedom&page=1&indices=)
أو كاميرات Avigilon:```
http.title:"Avigilon"
هناك عيبان لهذه الطريقة. الأول هو العدد الكبير من النتائج غير المناسبة (مجرد مواقع ويب تحتوي على كلمات ذات صلة في العنوان). ولكن عند استخدام علامات الاقتباس ومرشحات بحث إضافية مثل port:، يصبح عددها أقل.
والثاني هو أن العديد من أجهزة إنترنت الأشياء لا تحتوي على أي معلومات في عنوان http يمكن من خلالها التعرف عليها. لذلك، يمكن أن تكون مرشحات البحث الأخرى مفيدة أيضًا.

وبالمثل، يمكنك محاولة البحث عن كلمات مفتاحية في نص استجابة http. لتصفية بعض المواقع الشائعة على الأقل، استخدم مرشح NOT domain:. دعنا نجرب البحث عن كاميرات Reolink:``` http.body:(clip-status) NOT domain:
المثال ليس صحيحًا تمامًا، لذا يمكن العثور على هذه الكاميرات باستخدام العلامات (المزيد حول ذلك أدناه).
### البحث حسب رقم المنفذ

تستخدم أجهزة إنترنت الأشياء المختلفة منافذ مختلفة للاتصال. ومن خلال رقم المنفذ المفتوح، يمكنك افتراضياً أن عنوان IP ينتمي إلى نوع معين من الأجهزة (**غالبًا ما يكون الافتراض صحيحًا، ولكن قد تكون هناك عدم دقة ومصادفات**).
حاول البحث عن راديو الإنترنت (المنفذ 8000):```
port:8000 http.title:radio
أو جميع الأجهزة التي لديها منفذ مفتوح 7547 (يُستخدم للإدارة عن بُعد لأجهزة التوجيه عبر CWMP):``` port:7547
[جرب في Netlas](https://app.netlas.io/responses/?q=port%3A7547&page=1&indices=)
### بحث عن طريق الشعار

دعنا نبحث عن أجهزة التوجيه التي تستخدم بروتوكول Telnet (يمكنك أيضًا تصفيتها باستخدام port:23):```
telnet.banner:router
أو ابحث عن البانرات لجميع البروتوكولات:``` *.banner:router
[Try in Netlas](https://app.netlas.io/responses/?q=%5C*.banner%3Arouter&page=1&indices=)
### البحث بواسطة الأيقونة المفضلة (Favicon)

من أسهل الطرق للعثور على الأجهزة التي تحتوي على برامج معينة هو البحث بواسطة الأيقونة المفضلة. دعنا نحاول العثور على أماكن استخدام منتجات Cisco المختلفة:```
http.favicon.hash_sha256:62a8461e328d5bace3780ff738d0b58f6502592c04afa564e0a8a792583a7bfb
هناك ثلاث طرق رئيسية للبحث باستخدام favicon في Netlas:

أحيانًا لا توجد معلومات تعريفية عن الجهاز في عنوان HTTP، ولكن قد تكون موجودة في رؤوس أخرى. على سبيل المثال، في http.server.header:``` http.headers.server:"i-Catcher Console"
[Try in Netlas](https://app.netlas.io/responses/?q=http.headers.server%3A%22i-Catcher%20Console%22&page=1&indices=)
يدعم Netlas البحث عبر عشرات الأنواع من ترويسات HTTP. جرب أشكالًا مختلفة.
### البحث بواسطة الكوكيز

ابحث في مواقف Eco JS Parking:```
http.headers.set_cookie:(regist_carNo=)

قد تتطلب هذه الطريقة اشتراكًا مدفوعًا. اطّلع على الأسعار
يمكنك أيضًا محاولة البحث عن الأجهزة حسب العلامات (الفئات).``` tag.category:"IoT" tag.category:"Web cameras"
[Try in Netlas](https://app.netlas.io/responses/?q=tag.category%3A%22Web%20cameras%22&page=1&indices=)
فقط تذكر أن العلامات تُخصص تلقائيًا، وقد لا تكون بعض الأجهزة المناسبة مدرجة في الفئة المقابلة.
### مرشحات بحث إضافية
يمكنها البحث عن أجهزة إنترنت الأشياء الموجودة في مواقع جغرافية محددة:
- `geo.city`
- `geo.country`
- `geo.continent`
تصفية الأجهزة حسب نطاق عنوان IP:```
ip:[162.245.241.131 TO 162.245.241.133]
أو الأجهزة التي تحتوي على ثغرات "جديدة":``` cve.name:2023
يمكن العثور على مزيد من الأمثلة لاستعلامات البحث عن أجهزة إنترنت الأشياء هنا:
[Netlas Dorks](https://github.com/netlas-io/netlas-dorks)
## استخدام Netlas.io لأبحاث الدارك نت
من المزايا الرئيسية لـ Netlas أنه يمكنك استخدامها للبحث عن أشياء لا يتم فهرستها بواسطة Google. وهذا ما يمكن تسميته تقليديًا بـ DeepWeb. على سبيل المثال، خوادم FTP أو خوادم Telnet:```
ftp.banner:*
telnet.banner:*
ولكن لسوء الحظ، لا يقوم Netlas بفهرسة الدارك نت (.onion, .i2p إلخ) لأنه يمسح فقط عناوين IP العالمية. ولكن لا يزال بإمكانه استخدامه لاستكشاف البنية التحتية للشبكات البديلة والعثور على روابط لمواقع .onion.
عقدة الخروج من Tor هي النقطة التي يغادر فيها حركة مرور الويب شبكة Tor ويتم إعادة توجيهها إلى الوجهة. تتوفر دائمًا قائمة محدثة بعناوين IP لعقد الدخول النشطة في Tor على موقع Tor Project:
لنرى كيف يمكنك جمع معلومات حول جميع عقد الخروج النشطة في Tor مرة واحدة باستخدام Netlas. سيكون هذا المثال مفيدًا لجميع المهام الأخرى التي تحتاج فيها إلى جمع معلومات حول قائمة من النطاقات أو عناوين IP.
Run scripts/darknet/tor_nodes.py:```bash python scripts/darknet/tor_nodes.py

الكود المصدري لـ scripts/darknet/tor_nodes.py:```python
import netlas
import urllib
import time
apikey = 'YOUR_API_KEY'
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# read file with Tor Exit Nodes IPs line by line
response = urllib.request.urlopen('https://check.torproject.org/torbulkexitlist?ip=1.1.1.1')
ip_lines = response.readlines()
# save each line to ip variable
for ip in ip_lines:
# wait one second
time.sleep(1)
# conver byte string to text
ip=ip.decode("utf-8")
# retrieve data from responses by query `ip: + tor exit node ip`
netlas_query = netlas_connection.query(query="ip:"+ip)
# iterate over data and print: ip, geo data, banner text
for response in netlas_query['items']:
print(response['data']['ip'])
print(response['data']['geo'])
print(response['data']['ntp']['banner'])
pass
pass
باستخدام حزمة time وطريقة sleep هو جيد فقط للأمثلة البسيطة. أفضل الحلول هو استخدام حزمة تحديد المعدل.
كما ذكر أعلاه، يقوم Netlas بمسح النطاقات العالمية فقط، لذلك لا يمكن البحث عن نطاقات .onion. ولكن يمكنك البحث عن مراجع لنطاقات .onion في نص صفحات الويب. إليك مثال على سكربت Python بسيط (مع تعبير عادي) يقوم بذلك:
قم بتشغيل scripts/darknet/onion_links.py:```bash python scripts/darknet/onion_links.py

الكود المصدري لـ scripts/darknet/onion_links.py:```python
import netlas
import re
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `http.body:*.onion AND forum`
netlas_query = netlas_connection.query(query="http.body:(*.onion AND forum)")
# iterate over data and print: URL, .onion link from body
for response in netlas_query['items']:
print(response['data']['uri'])
onion_links = re.findall("[a-z-1-9]*\.onion", response['data']['http']['body'])
try:
print(onion_links)
except:
print("no onion links")
pass
يمكنك جمع روابط لشبكات أخرى مثل I2P بنفس الطريقة:``` http.body:*.i2p
## البحث عن دلائل الملفات والنسخ الاحتياطية والسجلات

هناك عدد هائل من المواقع والخوادم التي تترك دلائل ملفاتها مفتوحة بسبب خطأ في التكوين (وأحيانًا عن قصد). فيما يلي بعض الأمثلة على الاستعلامات التي ستساعدك في العثور عليها.
البحث عن أي دلائل ملفات:```
http.title:Index http.title:of
ابحث عن الدلائل التي تحتوي على ملفات السجل:``` http.title:Index http.title:of http.body:logs
ابحث عن الدلائل التي تحتوي على تفريغات قاعدة البيانات:```
http.title:Index http.title:of http.body:sql
البحث عن المجلدات التي تحتوي على نسخ احتياطية مؤرشفة:``` http.title:Index http.title:of http.body:backup?zip
البحث عن المجلدات التي تحتوي على معلومات الوصول إلى SSH:```
http.title:Index http.title:of http.body:("ssh_config" OR "ssh_known_hosts" OR "authorized_keys" OR "id_rsa" OR "id_dsa")
البحث عن الدلائل التي تحتوي على ملفات بمعلومات ترخيص أخرى:``` http.title:Index http.title:of http.body:("pass" OR "logins" OR "config" OR "password")
البحث عن الدلائل التي تحتوي على ملفات تم تنزيلها من قبل المستخدمين:```
http.title:index http.title:of http.body:downloads
ابحث عن المجلدات التي تحتوي على ملفات تكوين Docker:``` http.title:index http.title:of http.body:docker-compose
يمكنك التفكير في مئات الطلبات الأخرى المشابهة. جرب أسماء ملفات وامتدادات مختلفة.
## استخدام Netlas.io في الطب الشرعي الرقمي والاستجابة للحوادث
يصعب فصل هذا القسم عن قسم Netlas لأغراض OSINT، حيث أن الاستعلامات المذكورة فيه ستكون مفيدة أيضًا للمشتغلين في الطب الشرعي الرقمي.
في هذا القسم، نصف استعلامات أكثر "تقنية" يمكن أن تساعد، على سبيل المثال، في جمع معلومات عن البنية التحتية التقنية للشبكات أو التحقيق في هجمات التصيد.
### جمع معلومات خوادم SMTP
SMTP (بروتوكول نقل البريد البسيط) هو بروتوكول اتصال يتيح إرسال واستقبال رسائل البريد الإلكتروني. في معظم عملاء البريد الإلكتروني، عند عرض الرسائل، تتوفر وظيفة "إظهار الأصلي" التي تتيح لك عرض عنوان خادم SMTP الذي أُرسلت منه الرسالة.
تتيح لك Netlas الحصول على معلومات عن خادم SMTP بالإضافة إلى أي عنوان IP أو نطاق آخر، وكذلك البحث في نص شعارات SMTP، مما يسمح لك بالعثور على الخوادم المرتبطة بنطاق أو شركة أو مزود استضافة معين.
**مثال على استعلام البحث**
```
smtp.banner:fornex.cloud
Netlas CLI أدوات:```bash netlas search "smtp.banner:fornex.cloud" -f json
Curl:```bash
curl -X 'GET' \
'https://app.netlas.io/api/responses/?q=smtp.banner%3Afornex.cloud&source_type=include&start=0&fields=*' \
-H 'accept: application/json' \
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.smtp.banner
مثال كود (مكتبة Netlas Python)

تشغيل في سطر الأوامر:```bash python scripts/dfir/smtp_banner_search.py
الكود المصدري لـ scripts/dfir/smtp_banner_search.py:```python
import netlas
apikey = "YOUR_API_KEY"
# create new connection to Netlas
netlas_connection = netlas.Netlas(api_key=apikey)
# retrieve data from responses by query `smtp.banner:fornex.cloud`
netlas_query = netlas_connection.query(query="smtp.banner:fornex.cloud")
# iterate over data and print: SMTP banner, URL, ISP
for response in netlas_query['items']:
print (response['data']['smtp']['banner'])
print (response['data']['uri'])
print (response['data']['isp'])
إحدى الطرق الشائعة التي يستخدمها المحتالون هي استخدام نطاقات متشابهة جدًا في التهجئة مع نطاقات الشركات المعروفة.
يمكنك العثور على هذه النطاقات لشركة معينة باستخدام Netlas والبحث التقريبي.

افتح بحث نطاق Whois وأدخل اسم نطاق الشركة + . على سبيل المثال:```
domain:facebook.com
[جرب في Netlas](https://app.netlas.io/whois_domains/?q=domain%3Afacebook.com~&page=1&indices=)

بعد ذلك، انقر على الأيقونة اليسرى، واختر نوع ملف التصدير، وأسماء الملفات، والحقول التي تريد حفظها في الملف. انقر على "تنزيل" وانتظر قليلاً.

على سبيل المثال، يمكنك تحديد تنسيق ملف CSV وحقول المجال والتاريخ والوضع. يمكن عرض هذا الجدول بسهولة في Excel أو Numbers أو Google Docs.
### بحث Favicon

البحث عن favicon.ico له ثلاثة استخدامات رئيسية.
أولاً، يسمح لك بالعثور على المواقع والنطاقات الفرعية المحتملة ذات الصلة. حاول العثور على عنوان IP مرتبط بمتاجر Lidl:```
http.favicon.perceptual_hash:003c7e72207e3c00
وأيضًا للعثور على مواقع التصيد التي تستخدم تصميم الشبكات الاجتماعية الشهيرة والمتاجر عبر الإنترنت، إلخ.
ثانيًا، هو بحث عن أجهزة إنترنت الأشياء المختلفة. حاول العثور على منتجات HP:``` http.favicon.perceptual_hash:0c5ec8c181f37e2c
[Try in Netlas](https://app.netlas.io/responses/?q=http.favicon.perceptual_hash%3A0c5ec8c181f37e2c&page=1&indices=)
ثالثًا، يبحث عن الخوادم التي تحتوي على برامج معينة قيد التشغيل عليها. حاول العثور على خوادم تحتوي على PhpMyAdmin:```
http.favicon.perceptual_hash:00084e5e5fffff8d
هناك ثلاث طرق رئيسية للبحث عن تجزئة favicon في Netlas:
يمكنك أيضًا استخدام المرشحات التالية للبحث عن طريق favicon:
http.favicon.last_modifiedhttp.favicon.last_updatedhttp.favicon.urihttp.favicon.path
يتيح بحث نطاقات Netlas الحصول على قائمة كاملة بالنطاقات المرتبطة بعنوان IP محدد أو نطاق من العناوين. على سبيل المثال:``` a:"163.114.132.0/24"
[جرب في Netlas](https://app.netlas.io/domains/?q=a%3A%22163.114.132.0%2F24%22&page=1&indices=)
مثال على طلب API
أدوات Netlas CLI:```bash
netlas search -d domain a:\"163.114.132.0/24\"
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/domains/?q=a%3A%22163.114.132.0%2F24%22&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: 'YOUR_API_KEY' | jq .items[].data.domain
**مثال كود (مكتبة Netlas بايثون)**

تشغيل في سطر الأوامر:```bash
python scripts/dfir/subnet_search.py
الكود المصدري لملف scripts/dfir/subnet_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
a:"163.114.132.0/24"netlas_query = netlas_connection.query(query='a:"163.114.132.0/24"',datatype="domain")
for response in netlas_query['items']: print (response['data']['domain'])
### البحث عن الخوادم المزودة ببرمجيات خبيثة

يتيح لك Netlas العثور على الخوادم التي تحتوي على برمجيات خبيثة متنوعة مثبتة عليها. يمكنك العثور عليها من خلال وجود كلمات معينة في http.title أو http.body، أو تجزئة favicon، أو شهادات SSL وغيرها من المعايير.
فيما يلي مثال على استعلام سيجد الخوادم التي تحتوي على GoFish (إطار عمل التصيد مفتوح المصدر) مثبتًا:```
http.title:Gophish http.title:Login
لاحظ أن تقنية استخدام نفس العامل مرتين (بدلاً من النجمة بين كلمتين) تُستخدم هنا. أحيانًا يساعدك هذا في الحصول على نتائج بحث أكثر.
إليك المزيد من الأمثلة على طلبات مماثلة:``` http.title:CALDERA http.title:login http.title:Deimos http.title:C2
**مثال على طلب API**
Netlas CLI Tools:```bash
netlas search "http.title:Gophish http.title:Login" -f json
Curl:```bash
curl -X 'GET'
'https://app.netlas.io/api/responses/?q=http.title%3AGophish%20http.title%3ALogin&source_type=include&start=0&fields=*'
-H 'accept: application/json'
-H 'X-API-Key: YOUR_API_KEY' jq .items[].data.uri
**مثال برمجي (مكتبة Netlas Python)**

تشغيل في سطر الأوامر:```bash
python scripts/dfif/malware_search.py
الكود المصدري لـ scripts/dfir/malware_search.py:```python import netlas
apikey = "YOUR_API_KEY"
netlas_connection = netlas.Netlas(api_key=apikey)
netlas_query = netlas_connection.query(query="http.title:Gophish http.title:Login")
for response in netlas_query['items']:
print (response['data']['uri'])
print (response['data']['http']['title'])
print (response['data']['geo']['country'])
## البحث عن التقنيات وأمثلة الأكواد
---
[Read more](https://github.com/netlas-io/netlas-cookbook)