BEARBEITEN 2 :
Es gibt einen guten Grund, warum dieser Beitrag so viel Aufmerksamkeit auf sich zieht: Sie haben es geschafft, die gesamte Live-Sitzung eines Eindringlings auf Ihrem PC aufzunehmen. Dies unterscheidet sich sehr von unserer Alltagserfahrung, in der wir uns mit der Entdeckung der Konsequenzen seiner Handlungen befassen und versuchen, sie zu korrigieren. Hier sehen wir ihn bei der Arbeit, sehen, dass er Probleme hat, die Hintertür aufzubauen, seine Schritte zurückverfolgen, fieberhaft arbeiten (vielleicht, weil er, wie oben angedeutet, an Ihrem Schreibtisch saß oder vielleicht, und meiner Meinung nach eher, weil er es war) nicht in der Lage, seine Malware auf dem System zum Laufen zu bringen (siehe unten), und versuchen, vollständig in sich geschlossene Kontrollinstrumente bereitzustellen.
Das bezeugen Sicherheitsforscher täglich mit ihren Mitarbeitern Honigfallen . Für mich ist dies eine sehr seltene Chance und eine Quelle der Unterhaltung.
Sie wurden definitiv gehackt. Der Beweis dafür tut nicht komme aus dem schnipsel der auth.log
Datei, die Sie angezeigt haben, da diese einen erfolglosen Anmeldeversuch über einen kurzen Zeitraum (zwei Sekunden) meldet. Sie werden feststellen, dass die zweite Zeile angibt Failed password
, während der dritte a berichtet pre-auth
Verbindung trennen: Der Kerl hat versucht und ist gescheitert.
Die Beweise stammen stattdessen vom Inhalt der beiden Dateien http://222.186.30.209:65534/yjz
und http://222.186.30.209:65534/yjz1
die der Angreifer auf Ihr System heruntergeladen hat.
Die Website steht derzeit jedem zur Verfügung, um sie herunterzuladen, was ich getan habe. Ich bin zuerst gelaufen file
auf ihnen, die zeigten:
$ file y*
yjz: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
yjz1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
Dann brachte ich sie auf eine 64-Bit-Debian-VM, die ich habe; eine Prüfung ihres Inhalts durch die strings
Der Befehl enthüllte viel Verdächtiges (Hinweis auf verschiedene bekannte Angriffe, auf die zu ersetzenden Befehle, ein Skript, das eindeutig zum Einrichten eines neuen Dienstes verwendet wurde, usw.).
Ich produzierte dann die MD5-Hashes beider Dateien und fütterte sie Cymru's Hash-Datenbank, um zu sehen, ob sie bekannte Agenten von Malware sind. Während yjz
ist nicht, yjz1
ist und Cymru gibt eine Erkennungswahrscheinlichkeit von Antivirensoftware von 58% an. Es heißt auch, dass diese Datei vor etwa drei Tagen zuletzt gesehen wurde, also ziemlich aktuell.
Laufen Muschel (Teil der clamav
Paket) zu den beiden Dateien, die ich erhalten habe:
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
Daher sind wir jetzt sicher, dass Standard-Linux-Software dies erkennen kann.
Was tun?
Obwohl ziemlich neu, ist keines der Systeme sehr neu. Sehen Sie diesen Artikel von Jan. 2015 auf XorDdos , zum Beispiel. Daher sollten die meisten kostenlosen Pakete es entfernen können. Du solltest es versuchen: clamav
. rkhunter
. chkrootkit
. Ich habe gegoogelt und gesehen, dass sie behaupten, es erkennen zu können. Verwenden Sie sie, um die Arbeit des Vorgängers zu überprüfen, aber nachdem Sie diese drei Programme ausgeführt haben, sollten Sie bereit sein.
Wie für die größere Frage, what should you do to prevent future infections
, Die Antwort von Journeyman ist ein guter erster Schritt. Denken Sie nur daran, dass dies ein ständiger Kampf ist, den wir alle (auch ich!) Sehr wahrscheinlich verloren haben könnten, ohne es zu wissen.
BEARBEITEN :
Auf die (indirekte) Eingabeaufforderung von Viktor Toth möchte ich noch ein paar Anmerkungen hinzufügen. Es ist sicherlich wahr, dass der Eindringling auf einige Schwierigkeiten gestoßen ist: Er lädt zwei verschiedene Hacking-Tools herunter, ändert seine Berechtigungen mehrmals, startet sie mehrmals neu und versucht mehrmals, die Firewall zu deaktivieren. Es ist leicht zu erraten, was passiert: Er erwartet, dass seine Hacking-Tools einen Kommunikationskanal zu einem seiner infizierten PCs öffnen (siehe später), und wenn er diesen neuen Kanal nicht auf seiner Kontroll-GUI sieht, fürchtet er sein Hacking Werkzeug wird von der Firewall blockiert, daher wiederholt er den Installationsvorgang. Ich stimme mit Viktor Toth überein, dass diese bestimmte Phase seiner Operation nicht die erwarteten Früchte bringt, aber ich möchte Sie ermutigen sehr stark um das Ausmaß des auf Ihrem PC verursachten Schadens nicht zu unterschätzen.
Ich gebe hier eine Teilausgabe von strings yjz1
:
etc/init.d/%s
/etc/rc%d.d/S90%s
--del
chkconfig
remove
update-rc.d
/etc/cron.hourly/gcc4.sh
/etc/rc.d/rc%d.d/S90%s
--add
defaults
/proc/%d/exe
/proc/self/exe
HOME=/
MYSQL_HISTFILE=/dev/null
#!/bin/sh
# chkconfig: 12345 90 90
# description: %s
### BEGIN INIT INFO
# Provides: %s
# Required-Start:
# Required-Stop:
# Default-Start: 1 2 3 4 5
# Default-Stop:
# Short-Description: %s
### END INIT INFO
case $1 in
start)
stop)
esac
sed -i '/\/etc\/cron.hourly\/gcc4.sh/d' /etc/crontab && echo '*/3 * * * * root /etc/cron.hourly/gcc4.sh' >> /etc/crontab
etc/init.d/%s
GET %s HTTP/1.1
%sHost: %s
POST %s HTTP/1.1
%sHost: %s
Content-Type: application/x-www-form-urlencoded
Content-Length: %d
%s%s
Accept: */*
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; TencentTraveler ; .NET CLR 1.1.4322)
Connection: Keep-Alive
Dies ist ein Beweis für die Manipulation der Dienste (in /etc/init.d
und in /etc/rc.d
) mit crontab
mit der History-Datei von mysql
und ein paar Dateien in proc
welche sind Links zu bash
(Dies legt nahe, dass eine maßgeschneiderte betrügerische Version Ihrer Shell gepflanzt wurde). Dann generiert das Programm eine HTTP-Anfrage (an eine chinesischsprachige Site,
Accept-Language: zh-cn
was David Schwartz 's Kommentar oben zutreffend macht, was noch mehr Chaos verursachen kann. In der Anfrage werden Binärdateien ( Content-Type: application/x-www-form-urlencoded
) müssen auf den angegriffenen PC (GET) heruntergeladen und auf die steuernde Maschine (POST) hochgeladen werden. Ich konnte nicht feststellen, was auf den angegriffenen PC heruntergeladen werden würde, aber angesichts der geringen Größe beider yjz
und yjz1
(1.1MB bzw. 600kB), kann ich davon ausgehen, dass die meisten Dateien benötigt werden, um das Rootkit zu tarnen. d.h. die geänderten Versionen von ls
. netstat
. ps
. ifconfig
, ... würde auf diese Weise heruntergeladen. Und dies würde die fieberhaften Versuche des Angreifers erklären, diesen Download in Gang zu setzen.
Es gibt keine Gewissheit, dass das Obige alle Möglichkeiten erschöpft: Es fehlt sicherlich ein Teil des Protokolls (zwischen den Zeilen 457 und 481), und wir sehen keine Abmeldung. besorgniserregend sind außerdem die Zeilen 495-497,
cd /tmp; ./yd_cd/make
welche sich auf eine Datei beziehen, die wir nicht heruntergeladen haben, und welche könnte Seien Sie eine Zusammenstellung: Wenn dies der Fall ist, hat der Angreifer (endlich?) verstanden, was das Problem mit seinen ausführbaren Dateien war, und versucht, das Problem zu beheben. In diesem Fall ist der angegriffene PC endgültig gegangen. [Die beiden Versionen der Malware, die der Angreifer auf die gehackte Maschine (und ich auf meine 64-Bit-Debian-VM) heruntergeladen hat, beziehen sich auf eine ungeeignete Architektur (x86), während der Name allein des in den Computer gehackten Computers diese Tatsache preisgibt er beschäftigte sich mit einer Armarchitektur.
Der Grund, warum ich diesen Artikel geschrieben habe, ist, Sie so stark wie möglich zu bitten, entweder Ihr System mit einem professionellen Instrument zu kämmen oder von Grund auf neu zu installieren.
Sollte sich dies übrigens als nützlich erweisen, ist dies die Liste der 331 IP-Adressen an welche yjz
versucht sich zu verbinden. Diese Liste ist so groß (und wahrscheinlich dazu bestimmt, noch größer zu werden), dass ich glaube, dass dies der Grund für Manipulationen ist mysql
. Die Liste der anderen Hintertüren ist identisch, was vermutlich der Grund dafür ist, dass eine so wichtige Information offen gelassen wird (I denken Der Angreifer wollte sich nicht die Mühe machen, sie im Kernel-Format zu speichern, daher legte er die gesamte Liste in einer Klartextdatei ab, die wahrscheinlich von allen seinen Hintertüren eingelesen wird (für welches Betriebssystem):
61.132.163.68
202.102.192.68
202.102.213.68
202.102.200.101
58.242.2.2
202.38.64.1
211.91.88.129
211.138.180.2
218.104.78.2
202.102.199.68
202.175.3.3
202.175.3.8
202.112.144.30
61.233.9.9
61.233.9.61
124.207.160.110
202.97.7.6
202.97.7.17
202.106.0.20
202.106.46.151
202.106.195.68
202.106.196.115
202.106.196.212
202.106.196.228
202.106.196.230
202.106.196.232
202.106.196.237
202.112.112.10
211.136.17.107
211.136.28.231
211.136.28.234
211.136.28.237
211.147.6.3
219.141.136.10
219.141.140.10
219.141.148.37
219.141.148.39
219.239.26.42
221.130.32.100
221.130.32.103
221.130.32.106
221.130.32.109
221.130.33.52
221.130.33.60
221.176.3.70
221.176.3.73
221.176.3.76
221.176.3.79
221.176.3.83
221.176.3.85
221.176.4.6
221.176.4.9
221.176.4.12
221.176.4.15
221.176.4.18
221.176.4.21
58.22.96.66
218.104.128.106
202.101.98.55
211.138.145.194
211.138.151.161
211.138.156.66
218.85.152.99
218.85.157.99
222.47.29.93
202.101.107.85
119.233.255.228
222.47.62.142
122.72.33.240
211.98.121.27
218.203.160.194
221.7.34.10
61.235.70.98
113.111.211.22
202.96.128.68
202.96.128.86
202.96.128.166
210.21.3.140
210.21.4.130
211.95.193.97
211.98.2.4
211.98.4.1
211.162.61.225
211.162.61.235
211.162.61.255
211.162.62.1
211.162.62.60
221.4.66.66
202.103.176.22
202.96.144.47
210.38.192.33
202.96.134.33
202.96.134.133
202.96.154.15
210.21.196.6
221.5.88.88
202.103.243.112
202.193.64.33
61.235.164.13
61.235.164.18
202.103.225.68
221.7.136.68
202.103.224.68
211.97.64.129
211.138.240.100
211.138.242.18
211.138.245.180
221.7.128.68
222.52.118.162
202.98.192.67
202.98.198.167
211.92.136.81
211.139.1.3
211.139.2.18
202.100.192.68
211.97.96.65
211.138.164.6
221.11.132.2
202.100.199.8
202.99.160.68
202.99.166.4
202.99.168.8
222.222.222.222
202.102.224.68
202.102.227.68
222.85.85.85
222.88.88.88
210.42.241.1
202.196.64.1
112.100.100.100
202.97.224.68
219.235.127.1
61.236.93.33
211.93.24.129
211.137.241.34
219.147.198.230
202.103.0.68
202.103.0.117
202.103.24.68
202.103.44.150
202.114.0.242
202.114.240.6
211.161.158.11
211.161.159.3
218.104.111.114
218.104.111.122
218.106.127.114
218.106.127.122
221.232.129.30
59.51.78.210
61.234.254.5
202.103.96.112
219.72.225.253
222.243.129.81
222.246.129.80
211.142.210.98
211.142.210.100
220.168.208.3
220.168.208.6
220.170.64.68
218.76.192.100
61.187.98.3
61.187.98.6
202.98.0.68
211.93.64.129
211.141.16.99
202.98.5.68
219.149.194.55
211.138.200.69
202.102.3.141
202.102.3.144
58.240.57.33
112.4.0.55
114.114.114.114
114.114.115.115
202.102.24.34
218.2.135.1
221.6.4.66
221.131.143.69
202.102.8.141
222.45.0.110
61.177.7.1
218.104.32.106
211.103.13.101
221.228.255.1
61.147.37.1
222.45.1.40
58.241.208.46
202.102.9.141
202.102.7.90
202.101.224.68
202.101.226.68
211.141.90.68
211.137.32.178
202.96.69.38
211.140.197.58
219.149.6.99
202.96.86.18
101.47.189.10
101.47.189.18
118.29.249.50
118.29.249.54
202.96.64.68
202.96.75.68
202.118.1.29
202.118.1.53
219.148.204.66
202.99.224.8
202.99.224.67
211.90.72.65
211.138.91.1
218.203.101.3
202.100.96.68
211.93.0.81
222.75.152.129
211.138.75.123
202.102.154.3
202.102.152.3
219.146.1.66
219.147.1.66
202.102.128.68
202.102.134.68
211.138.106.19
211.90.80.65
202.99.192.66
202.99.192.68
61.134.1.4
202.117.96.5
202.117.96.10
218.30.19.40
218.30.19.50
116.228.111.118
180.168.255.18
202.96.209.5
202.96.209.133
202.101.6.2
211.95.1.97
211.95.72.1
211.136.112.50
211.136.150.66
119.6.6.6
124.161.97.234
124.161.97.238
124.161.97.242
61.139.2.69
202.98.96.68
202.115.32.36
202.115.32.39
218.6.200.139
218.89.0.124
61.139.54.66
61.139.39.73
139.175.10.20
139.175.55.244
139.175.150.20
139.175.252.16
168.95.1.1
210.200.211.193
210.200.211.225
211.78.130.1
61.31.1.1
61.31.233.1
168.95.192.1
168.95.192.174
61.60.224.3
61.60.224.5
202.113.16.10
202.113.16.11
202.99.96.68
202.99.104.68
211.137.160.5
211.137.160.185
219.150.32.132
202.98.224.68
211.139.73.34
61.10.0.130
61.10.1.130
202.14.67.4
202.14.67.14
202.45.84.58
202.45.84.67
202.60.252.8
202.85.128.32
203.80.96.9
203.142.100.18
203.142.100.21
203.186.94.20
203.186.94.241
221.7.1.20
61.128.114.133
61.128.114.166
218.202.152.130
61.166.150.123
202.203.128.33
211.98.72.7
211.139.29.68
211.139.29.150
211.139.29.170
221.3.131.11
222.172.200.68
61.166.150.101
61.166.150.139
202.203.144.33
202.203.160.33
202.203.192.33
202.203.208.33
202.203.224.33
211.92.144.161
222.221.5.240
61.166.25.129
202.96.103.36
221.12.1.227
221.130.252.200
222.46.120.5
202.96.96.68
218.108.248.219
218.108.248.245
61.130.254.34
60.191.244.5
202.96.104.15
202.96.104.26
221.12.33.227
202.96.107.27
61.128.128.68
61.128.192.68
218.201.17.2
221.5.203.86
221.5.203.90
221.5.203.98
221.7.92.86
221.7.92.98
Der folgende Code
#!/bin/bash
echo 0 > out
while read i; do
whois $i | grep -m 1 -i country >> out
done < filename
cat out | grep -i cn | wc -l
auf der obigen Liste zeigt das 302 von einer Summe 331 Adressen befinden sich in China, die restlichen in Hongkong, der Mongolei, Taiwan. Dies unterstreicht die Behauptung von David Schwartz, dass dies hauptsächlich ein chinesischer Bot-Ring sei.
BEARBEITEN 3
Auf Anfrage von @ vaid (der Autor des OP, lesen Sie unten seinen Kommentar), werde ich einen Kommentar hinzufügen, wie die Sicherheit eines Linux-Basissystems erhöht werden kann (bei einem System, das viele Dienste bereitstellt, ist dies ein weitaus komplexeres Thema). vaid
sagt, er habe folgendes getan:
Installieren Sie das System erneut
Das root-Passwort wurde in ein 16-stelliges Passwort mit gemischten Groß- und Kleinbuchstaben sowie Buchstaben und Ziffern geändert.
Der Benutzername wurde in einen aus 6 Zeichen bestehenden Benutzernamen geändert und das gleiche Kennwort wie für root verwendet
SSH-Port auf etwas über 5000 geändert
SSH-Root-Login deaktiviert.
Dies ist in Ordnung (außer ich verwende einen Port über 10.000, da viele nützliche Programme die Ports unter 10.000 verwenden). Aber Ich kann die Notwendigkeit, kryptographische Schlüssel für den ssh-Login zu verwenden, nicht genug betonen anstelle von Passwörtern. Ich werde Ihnen ein persönliches Beispiel geben. Bei einem meiner VPS war mir nicht klar, ob ich den SSH-Port ändern sollte. Ich beließ es bei 22, verwendete aber Kryptoschlüssel zur Authentifizierung. ich hatte Hunderte von Einbruchversuchen pro Tag Es gelang keinem. Als ich müde war, jeden Tag zu überprüfen, dass es niemandem gelungen war, den Port auf etwas über 10.000 zu ändern, gingen die Einbruchsversuche gegen Null. Wohlgemerkt, es ist nicht so, dass Hacker dumm sind (sie sind es nicht!), Sie jagen einfach einfachere Beute.
Es ist einfach, einen Kryptoschlüssel mit RSA als Signaturalgorithmus zu aktivieren, siehe Kommentar unten von Jan Hudec (Danke!):
cd; mkdir .ssh; chmod 700 .ssh; cd .ssh; ssh-keygen -t rsa (then hit <kbd>ENTER>/kbd> three times); cat id_rsa.pub >> authorized_keys; chmod 600 *
Jetzt müssen Sie nur noch die Datei kopieren id_rsa
zu der Maschine, von der Sie eine Verbindung herstellen möchten (in einem Verzeichnis .ssh
, ebenfalls chmod
'bis 700), geben Sie dann den Befehl aus
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine
Wenn Sie sicher sind, dass dies funktioniert, bearbeiten Sie die Datei auf dem Server (= dem Computer, zu dem Sie eine Verbindung herstellen möchten) /etc/ssh/sshd_config
, und ändern Sie die Zeile
#PasswordAuthentication yes
zu
PasswordAuthentication no
und starten Sie das neu ssh
Bedienung ( service ssh restart
oder systemctl restart ssh
oder so ähnlich, abhängig von der Distribution).
Das wird viel aushalten. Derzeit sind keine Exploits gegen die aktuellen Versionen von bekannt openssh v2
und von RSA bei openssh v2
.
Um Ihren Computer wirklich zu bannen, müssen Sie die Firewall (netfilter / iptables) wie folgt konfigurieren:
iptables -A INPUT -p tcp --dport YourChosenNonStandardPort -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Dies ermöglicht 1) ssh-Verbindungen sowohl von LAN als auch von WAN, 2) erlaubt alle Eingaben, die von Ihren Anforderungen stammen (z. B. beim Laden einer Webseite), 3) alle anderen Eingaben auf der Eingabe, 4) alles auf die Ausgabe und 5-6) erlaubt alles auf der Loopback-Schnittstelle.
Wenn Ihre Anforderungen wachsen und mehr Ports geöffnet werden müssen, können Sie dies tun, indem Sie oben auf der Liste Regeln hinzufügen:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
B. Personen Zugriff auf Ihren Webbrowser gewähren.