
إطار عمل معياري للتصيد الاحتيالي مع CLI لاستنساخ المواقع، وإرسال رسائل بريد إلكتروني قوالبية، وإطلاق حملات تصيد عبر البريد الإلكتروني وSMS وiMessage وLinkedIn.
http://section9labs.github.io/Cartero/
إطار عمل قوي للتصيد الاحتيالي مع واجهة سطر أوامر متكاملة. وُلد المشروع من الحاجة الملحّة عبر سنوات من التعامل مع أدوات لم تؤدِّ المطلوب. وعلى الرغم من وجود العديد من المشاريع في هذا المجال، لم نتمكن من إيجاد حل مناسب يمنحنا سهولة الاستخدام وقابلية التخصيص معًا.
كارترو مشروع نمطي مقسّم إلى أوامر تنفّذ مهامًا مستقلة (مثل: Mailer، Cloner، Listener، AdminConsole، إلخ...). بالإضافة إلى ذلك، يتميز كل أمر فرعي بخيارات تكوين قابلة للتكرار لتهيئة عملك وأتمتته.
على سبيل المثال، إذا أردنا استنساخ gmail.com، يكفي تنفيذ الأوامر التالية.```shell ❯❯❯ ./cartero Cloner --url https://gmail.com --path /tmp --webserver gmail_com ❯❯❯ ./cartero Listener --webserver /tmp/gmail_com -p 80 Launching mongodb Puma starting in single mode...
بمجرد أن يكون لدينا موقع يعمل، يمكننا ببساطة استخدام أمر Mailer لإرسال رسائل بريد إلكتروني بنماذج جاهزة إلى ضحايانا:```shell
❯❯❯ ./cartero Mailer --data victims.json --server gmail_com --subject "Internal Memo" --htmlbody email_html.html --attachment payload.pdf --from "John Doe <[email protected]>"
Sending [email protected]
Sending [email protected]
Sending [email protected]
انضم إلى مجتمع Slack الخاص بنا على https://carteroslack.herokuapp.com/
باستخدام brew 2.1.5 ruby كمكتبة ruby الافتراضية```shell ❯❯❯ curl -L https://raw.githubusercontent.com/Section9Labs/Cartero/master/data/scripts/setup.sh | bash
باستخدام تثبيت RVM 2.1.5 ruby```shell
❯❯❯ curl -L https://raw.githubusercontent.com/Section9Labs/Cartero/master/data/scripts/setup.sh | bash -s -- -r
❯❯❯ \curl -sSL https://get.rvm.io | bash -s stable --ruby
##### MongoDB
يستخدم كارترو مكتبة MongoDB + MongoID لتخزين البيانات في جانب المستمع والإدارة.
على OSX:```shell
❯❯❯ brew install mongodb
على Ubuntu / Kali / Debian```shell ❯❯❯ apt-get install mongodb
على Arch Linux```
❯❯❯ pacman -Syu mongodb
❯❯❯ git clone https://github.com/section9labs/Cartero ❯❯❯ cd Cartero ❯❯❯ gem install bundle ❯❯❯ bundle install ❯❯❯ cd bin
### الاستخدام
### الأوامر
Cartero هو CLI قوي وسهل الاستخدام للغاية.```shell
❯❯❯ ./cartero
Usage: cartero [options]
List of Commands:
AdminConsole, AdminWeb, Mailer, Cloner, Listener, Servers, Templates
Global options:
--proxy [HOST:PORT] Sets TCPSocket Proxy server
-c, --config [CONFIG_FILE] Provide a different cartero config file
-v, --[no-]verbose Run verbosely
-p [PORT_1,PORT_2,..,PORT_N], Global Flag fo Mailer and Webserver ports
--ports
-m, --mongodb [HOST:PORT] Global Flag fo Mailer and Webserver ports
-d, --debug Sets debug flag on/off
--editor [EDITOR] Edit Server
Common options:
-h, --help [COMMAND] Show this message
--list-commands Prints list of commands for bash completion
--version Shows cartero CLI version
هذا غلاف بسيط لـ MongoDB يتيح لنا تشغيل وإيقاف قاعدة البيانات بالأوامر المناسبة وعلى المسار الصحيح ~/.cartero.```shell ❯❯❯ ./cartero Mongo Usage: Cartero Mongo [options] -s, --start Start MongoDB -k, --stop Stop MongoDB -r, --restart Restart MongoDB -b, --bind [HOST:PORT] Set MongoDB bind_ip and port
Common options: -h, --help Show this message --list-options Show list of available options
#### Cloner
أداة استنساخ مواقع ويب تتيح لنا تنزيل موقع وتحويله إلى تطبيق خادم ويب Cartero.
يمكننا بسرعة وسهولة تخصيص الموقع لالتقاط بيانات الاعتماد (Harvest Credentials) أو تقديم الحمولات (Server Payloads) أو تعديل الموقع بالكامل لأي عدد من الأغراض.```shell
❯❯❯ ./cartero Cloner
Usage: Cartero Cloner [options]
-U, --url [URL_PATH] Full Path of site to clone
-W, --webserver [SERVER_NAME] Sets WebServer name to use
-p, --path [PATH] Sets path to save webserver
-P, --payload [PAYLOAD_PATH] Sets payload path
--useragent [UA_STRING] Sets user agent for cloning
--wget Use wget to clone url
--apache Generate Apache Proxy conf
Common options:
-h, --help Show this message
--list-options Show list of available options
بشكل افتراضي، يستخدم الأمر تنفيذ Ruby الخاص بنا لتنزيل الروابط وتحويلها للعرض، ولكننا ندعم أيضًا خيار --wget الذي سيستخدم أمر النظام المحلي wget.
المستمع مسؤول عن تشغيل خادم الويب الذي تم إنشاؤه عبر Cloner أو موقع تم إنشاؤه يدويًا. بشكل افتراضي، نقدم موقعًا إلكترونيًا بسيطًا جدًا إذا لم يتم توفير أي موقع.```shell ❯❯❯ ./cartero Listener Usage: Cartero Listener [options] -i, --ip [1.1.1.1] Sets IP interface, default is 0.0.0.0 -p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan --ports -s, --ssl Run over SSL. [this also requires --sslcert and --sslkey] -C, --sslcert [CERT_PATH] Sets Email Payload Ports to scan -K, --sslkey [KEY_PATH] Sets SSL key to use for Listener. -V, --views [VIEWS_FOLDER] Sets SSL Certificate to use for Listener. -P, --public [PUBLIC_FOLDER] Sets a Sinatra public_folder -W [WEBSERVER_FOLDER], Sets the sinatra full path from cloner. --webserver --payload [PAYLOAD] Sets a payload download to serve on /download --customapp [CUSTOM_SINATRA] Sets a custom Sinatra::Base WebApp. Important, WebApp name should be camelized of filename
Common options: -h, --help Show this message --list-options Show list of available options
يدعم WebServers مفاتيح SSL ومضيفات افتراضية عبر عدة عناوين IP وأسماء مضيفين ومنافذ.
#### Servers
لإرسال حملات البريد الإلكتروني، نحتاج إلى إعداد خوادم البريد الإلكتروني، ويتيح هذا الأمر لـ Cartero إنشاء الخوادم وتخزينها وسردها. تُخزَّن جميع البيانات في دليل الإعدادات ~/.cartero.```shell
./cartero Servers
Usage: Cartero Servers [options]
-a, --add [NAME] Add Server
-e, --edit [NAME] Edit Server
-d, --delete [NAME] Edit Server
-l, --list List servers
Configuration options:
-T, --type [TYPE] Set the type
-U, --url [DOMAIN] Set the Mail or WebMail url/address
-M, --method [METHOD] Sets the WebMail Request Method to use [GET|POST]
--api-access [API_KEY] Sets the Linkedin API Access Key
--api-secret [API_SECRET] Sets the Linkedin API Secret Key
--oauth-token [OAUTH_TOKEN] Sets the Linkedin OAuth Token Key
--oauth-secret [OAUTH_SECRET]
Sets the Linkedin OAuth Secret Key
Common options:
-h, --help Show this message
--list-options Show list of available options
تمامًا مثل الخوادم، تحتاج حملات البريد الإلكتروني أيضًا إلى قالب محدد مسبقًا لإرسال المحتوى إلى الضحايا. تتيح هذه الوحدة للمهاجم تتبع القوالب المستخدمة في حملته وإنشاءها وسردها وتعديلها.
ملاحظة: ليس من الضروري تعيين القوالب هنا، إذ يقبل Mailer مسارًا مباشرًا لقالب البريد الإلكتروني من سطر الأوامر (CLI).```shell ❯❯❯ ./cartero Templates Usage: Cartero Templates [options] -a, --add [NAME] Add Template -e, --edit [NAME] Edit Template -d, --delete [NAME] Edit Template -l, --list List Templates -h, --help Show this message
#### Mailer
الأمر والمكوّن الرئيسي في إطار عمل Cartero -- يتيح لـ Cartero إرسال رسائل بريد إلكتروني مخصّصة عبر قوالب إلى عنوان بريد إلكتروني واحد أو أكثر.
يمكن تخصيص كل رسالة بريد إلكتروني باستخدام محرك القوالب القوي erb، مما يسمح للمستخدمين بإنشاء قواعد برمجية معقدة داخل القوالب لإرسال كميات هائلة من رسائل البريد الإلكتروني شديدة الاستهداف.
لمزيد من المعلومات حول كيفية إنشاء قوالب مخصصة، يرجى الرجوع إلى الأمثلة الخاصة بنا.```shell
❯❯❯ ./cartero Mailer
Usage: Cartero Mailer [options]
-D, --data [DATA_FILE] File containing template data sets
-S, --server [SERVER_NAME] Sets Email server to use
-s, --subject [EMAIL_SUBJECT] Sets Email subject
-f, --from [EMAIL_FROM] Sets Email from
-r, --reply-to [EMAIL_REPLY_TO] Sets Email from
-b, --body [FILE_PATH] Sets Email Text Body
-B, --htmlbody [FILE_PATH] Sets Email HTML Body
-c, --charset [CHARSET] Sets Email charset
-C [CONTENT_TYPE], Sets Email content type
--content-type
-a [FILE_1,FILE_2,..,FILE_N], Sets Email Attachments
--attachment
-p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan
--ports
Common options:
-h, --help Show this message
--list-options Show list of available options
يدعم هذا الأمر بديلاً لخوادم SMTP / IMAP من خلال إرسال الرسائل باستخدام خدمات البريد عبر الويب المعروفة بأنها ضعيفة أو مجهولة عبر طلبات الويب.```shell ❯❯❯ ./cartero WebMailer Usage: Cartero WebMailer [options] -R, --raw [RAW_REQUEST_FILE] Sets WebMail Raw Request -S, --server [SERVER_NAME] Sets WebMail server to use -U, --url [URL:PORT] Sets WebMail server url to use -H [HEADER:VAL\nHEADER:VAL], Sets WebMail Headers to use --headers -C, --cookies [COOKIES] Sets WebMail Cookies to use -D, --data [DATA_FILE] File containing template data sets -s, --subject [EMAIL_SUBJECT] Sets Email subject -f, --from [EMAIL_FROM] Sets Email from -r, --reply-to [EMAIL_REPLY_TO] Sets Email reply-to -b, --body [REQUEST_FILE_PATH] Sets Email Text request query Body -p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan --ports
Common options: -h, --help Show this message --list-options Show list of available options
يمكن استخدام الأمر بطريقتين رئيسيتين. إحداهما باستخدام أمر خام مثل الذي نحصل عليه من اعتراض حركة المرور عبر وكيل ويب (أي Burp Proxy) و/أو باستخدام أمر الخوادم المتاح في Cartero.
#####مثال لخادم بريد ويب لموقع send-mail.org```json
{
"name": "send-email",
"type": "webmail",
"options": {
"url": "http://send-email.org/send",
"method": "POST",
"cookies": "",
"headers": {
"Host": "send-email.org",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:29.0) Gecko/20100101 Firefox/29.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Referer": "http://send-email.org/",
"Content-Length": "126",
"Connection": "keep-alive",
"Pragma": "no-cache"
}
},
"confirmation" : "Your message was sent!"
}
باستخدام هذا الطلب المُعد مسبقًا، يمكننا بسهولة إرسال رسالة باستخدام نفس مجموعات البيانات الخاصة بـ Mailer وباستخدام نفس نوع القوالب. يتوفر مثال في /templates/mail/sample.web
#####أمر نموذجي:```shell ❯❯❯ ./cartero WebMailer -S webmail -D ~/sample.json -b ../templates/mail/sample.web -r [email protected]
#### LinkedIn
أمر LinkedIn هو أول إضافة للشبكات الاجتماعية إلى إطار عمل Cartero. تتيح هذه الإضافة للمهاجمين استخدام المنصة الاجتماعية لإرسال الرسائل ومهاجمة المستخدمين، كل ذلك من داخل LinkedIn.```shell
❯❯❯ ./cartero LinkedIn
Usage: Cartero LinkedIn [options]
-D, --data [DATA_FILE] File containing template data sets
-S, --server [SERVER_NAME] Sets Email server to use
-s, --subject [MESSAGE_SUBJECT] Sets LinkedIn Message subject
-b, --body [FILE_PATH] Sets LinkedIn Message Body
-l, --list [CONNECTIONS|GROUPS] List json of (connections or groups)
--send [MESSAGE|GROUP_UPDATE]
Send one or more (message/s or group/s updates)
-o, --save [FILE_PATH] Sets LinkedIn Message Body
Common options:
-h, --help Show this message
--list-options Show list of available options
يتطلب الأمر مفتاح API للمطورين ومفتاح oauth على ملف تعريف المهاجم. يمكن الحصول عليها بسهولة من https://www.linkedin.com/secure/developer. ويمكن إنشاء قالب خادم جديد باستخدام أمر Server.
يتيح Cartero، على OS X، إرسال رسائل iMessage إلى عناوين الضحايا تمامًا مثل رسائل البريد الإلكتروني، ولكنها ستظهر على كل جهاز iDevice قاموا بتسجيله مع apple.
خلفية: بعد قراءة بعض الأخبار حول كيفية إساءة استخدام مرسلي البريد العشوائي الصينيين لحقيقة أن رسائل iMessage سيتم عرضها على جميع الأجهزة المرتبطة بالحساب/الحسابات، تم تطوير أمر سريع للسماح لمستخدمي Cartero بتوفر هذه الميزة أيضًا في Framework.
مهم: سيعمل هذا فقط على OSX، في الوقت الحالي```shell ❯❯❯ ./cartero IMessage Usage: Cartero IMessage [options] IMPORTANT: This command only works on OSX
-D, --data [DATA_FILE] File containing template data sets
-A, --attachment [ATTACHMENT] Sets iMessage file path to send
-b, --body [BODY_FILE] Sets iMessage message
-m, --message [MESSAGE] Sets iMessage message
Common options: -h, --help Show this message --list-options Show list of available options
لا يسمح iMessage بإرسال رسالة واحدة تحتوي على نص ومرفقات معًا، ولكن عند توفير كليهما، سيتم تقسيم الرسالة وإرسالها كرسالتين منفصلتين.
#####مثال على الأمر```shell
❯❯❯ ./cartero IMessage --data /Users/cartero/Desktop/test.json -b ../templates/mail/sample.imsg -a /Users/cartero/Downloads/jon.jpg
إذا كان لديك حساب GoogleVoice وتريد إرسال رسائل SMS تلقائيًا، فقد تكون هذه طريقة جيدة للقيام بذلك. إنها تتبع نفس البنية التحتية مثل جميع الأوامر الأخرى.````shell ❯❯❯ ./cartero GoogleVoice Usage: Cartero GoogleVoice [options] -D, --data [DATA_FILE] File containing template data sets -S, --server [SERVER_NAME] Sets SMS server to use -b, --body [FILE_PATH] Sets SMS Text Body -m, --message [MESSAGE] Sets SMS message -u, --username [USER] Sets Google Voice Username -p, --password [PWD] Sets Google Voice password
Common options: -h, --help Show this message --list-options Show list of available options
#### Twilio
إذا كان لديك حساب Twilio وترغب في إرسال الرسائل النصية القصيرة (SMS) تلقائيًا، فقد تكون هذه طريقة أخرى لإرسال الرسائل النصية. يجدر بالذكر أن هذه خدمة مدفوعة وتتطلب رمز وصول صالحًا (sid) وسرًا (secret_token). لمزيد من المعلومات، يرجى الرجوع إلى موقع Twilio على https://www.twilio.com/sms/api````shell
❯❯❯ ./cartero Twilio
Usage: Cartero Twilio [options]
-D, --data [DATA_FILE] File containing template data sets
-S, --server [SERVER_NAME] Sets SMS server to use
-f, --from [NUMBER] Sets SMS from number to use
-b, --body [FILE_PATH] Sets SMS Text Body
-m, --message [MESSAGE] Sets SMS message
-u, --sid [SID] Sets Twilio Username
-p, --token [TOKEN] Sets Twilio password
-A, --attachment [PATH_1||PATH_2||PATH_3] Sets Twilio MMS URL image paths to send
Common options:
-h, --help Show this message
--list-options Show list of available options
واجهة Admin Web هي تطبيق ويب بسيط يسمح للمهاجم باسترجاع معلومات حول جميع الحملات.```shell ❯❯❯ ./cartero AdminConsole Usage: Cartero AdminConsole [options] -i, --ip [1.1.1.1] Sets IP interface, default is 0.0.0.0 -p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan --ports -s, --ssl Run over SSL. [this also requires --sslcert and --sslkey] -C, --sslcert [CERT_PATH] Sets Email Payload Ports to scan -K, --sslkey [KEY_PATH] Sets Email Payload Ports to scan
Common options: -h, --help Show this message --list-options Show list of available options
#### AdminConsole
تعد Admin Console أداة CLI تتيح سرد المعلومات حول الأشخاص والحملات والزيارات وبيانات الاعتماد التي تم جمعها.```shell
❯❯❯ ./cartero AdminConsole
Usage: Cartero AdminConsole [options]
-p, --persons [LATEST_N] Display the list of persons that responded
-i, --hits [LATEST_N] Display the list of hits
-c, --creds [LATEST_N] Display the list of Credentials
-a, --all Sets Email Payload Ports to scan
-f, --filter flag to search by parameters
--email [EMAIL] Display the list of hits
--campaign [CAMPAIGN] Display the list of hits
--ip [IP_ADDRESS] Display the list of hits
Common options:
-h, --help Show this message
--list-options Show list of available options
تمتلك الأوامر إطارًا بسيطًا إلى حد ما. يتم تخزين أوامر إطار العمل النموذجية في Cartero/lib/cartero/commands/*.rb و ~/.cartero/commands/*.rb.```ruby module Cartero module Commands class CommandName < ::Cartero::Command
description( name: "Long Command Name Here", description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", author: ["Author Name <noname [©] cartero.com>"], type:"General", license: "LGPL", references: [ "https://section9labs.github.io/Cartero", "https://section9labs.github.io/Cartero" ] )
def initialize super do |opts| #OptionsParser options available here. opts.on("-x", "--xoption [DATA_FILE]", String, "Description of command option") do |data| @options.xoption = data end opts.on("-y", "--yoption [DATA_FILE]", String, "Description of command option") do |data| @options.xoption = data end # help() option already provided. # --list-options for auto-complete automatic. end end
def setup # This will be hooked and run before run(). # It is meant as a method so the commands can run everything before that. end
def run # Everything that will run. end
def after # This is the place to run clean-up code. end end end end
### قوالب البريد
رسائل البريد الإلكتروني هي ملفات نصية بسيطة أو ملفات HTML محدودة، اعتمادًا على التنسيق المستخدم. يتيح Cartero قوالب معقدة من خلال مكتبة erb ruby وواجهة CLI للمساعدة في بناء وتنسيق كلا التنسيقين.
يمكن تخصيص الملفات بشكل واسع للحملة من خلال erb الذي يوفر استبدالًا ديناميكيًا وقرارات برمجية في وقت التشغيل.
ميزة مهمة أخرى هي self[:payload] المشفرة التي يجب إضافتها في كل قالب بريد إلكتروني والتي تسمح لـ Cartero بتحديد الكيان المصدر بغض النظر عن عمليات إعادة التوجيه أو النقرات المتعددة. يتم تشفير هذا الحمولة الصغيرة باستخدام مفتاح مولّد عشوائيًا مما يسمح للمهاجمين بالحفاظ على أمان بيانات مصدرهم والابتعاد عن الاكتشاف.
**ملف بيانات نموذجي**```json
[{
"email": "[email protected]",
"name": "John Doe"
}, {
"email": "[email protected]",
"name": "Gas Hill"
}, {
"email": "[email protected]",
"name": "John Doe 2"
}, {
"email": "[email protected]",
"name": "Jane Doe - Hotmail",
"subject": "Hotmail Test 123"
}]
قالب عينة HTML```html
This is an automated email to your email <%= self[:email] %>.
<% if self[:ports] %> <% self[:ports].each do |port| %> /image?key=<%= self[:payload] %>"> <% end %> <% end %>
**قالب عينة نصية**```txt
Hola <%= self[:name] %>,
This email needs to be displayed as HTML.
This is an automated email to your email<%= self[:email] %>.
In addition, this email can also be displayed securely
on http://192.168.1.216:8080/click?key=<%= self[:payload] %>
cheers,
<%= self[:from_name] %>
يمكن إدارة الخوادم باستخدام أمر Servers، والذي يوفر القدرة على إضافة الخوادم وتعديلها وحذفها. ملاحظة: يمكن تحرير الخوادم يدويًا في ~/.cartero/servers/*.json
####smtp```json { "name": "gmail", "type": "smtp", "options": { "address": "smtp.yourserver.com", "port": 25, "user_name": "user", "password": "password", "authentication": "plain", "domain": "localhost.localdomain" } }
####linkedin```json
{
"name": "linkedin",
"type": "linkedin",
"options": {
"api_access": "api_access",
"api_secret": "api_secret",
"oauth_token": "oauth_token",
"oauth_secret": "oauth_secret"
}
}
####بريد الويب```json { "name": "webmail-sample", "type": "webmail", "options": { "url": "http://www.send-email.com/data/send/email", "method": "POST", "cookies": "sdajsda09s7das923i3j2l131;21381903810", "headers": { "x-forward": "asdadadasad" } }, "confirmation" : null }
### CHANGELOG
- [CHANGELOG](https://github.com/mrbrutti/cartero/blob/HEAD/CHANGELOG.md)
### TODO
- [TODO](https://github.com/mrbrutti/cartero/blob/HEAD/TODO.md)