EDIT 2 :
có một lý do chính đáng tại sao bài đăng này lại thu hút nhiều sự chú ý như vậy: bạn đã quản lý để ghi lại toàn bộ, phiên trực tiếp của một kẻ xâm nhập trên PC của bạn. Điều này rất khác với kinh nghiệm hàng ngày của chúng tôi, nơi chúng tôi đối phó với việc phát hiện ra hậu quả của hành động của mình và cố gắng khắc phục chúng. Ở đây chúng tôi thấy anh ta ở nơi làm việc, thấy anh ta có một số vấn đề với việc thiết lập cửa hậu, lấy lại các bước của anh ta, làm việc một cách sốt sắng (có lẽ vì anh ta đang ngồi ở bàn của bạn, như được đề xuất ở trên, hoặc có lẽ, và theo tôi nhiều khả năng, bởi vì anh ta không thể làm cho phần mềm độc hại của anh ấy chạy trên hệ thống, đọc bên dưới) và cố gắng triển khai các công cụ kiểm soát hoàn toàn độc lập. Đây là những gì các nhà nghiên cứu bảo mật chứng kiến hàng ngày với bẫy mật ong của họ . Đối với tôi, đây là một cơ hội rất hiếm, và là nguồn gốc của một số trò giải trí.
Bạn chắc chắn đã bị hack. Bằng chứng cho điều này không đến từ đoạn trích của auth.log
tệp bạn đã hiển thị, vì điều này báo cáo một nỗ lực đăng nhập không thành công, xảy ra trong một khoảng thời gian ngắn (hai giây). Bạn sẽ nhận thấy rằng dòng thứ hai nói Failed password
, trong khi dòng thứ ba báo cáo pre-auth
ngắt kết nối: anh chàng đã thử và thất bại.
Bằng chứng thay vào đó là từ nội dung của hai tệp http://222.186.30.209:65534/yjz
và http://222.186.30.209:65534/yjz1
kẻ tấn công đã tải xuống hệ thống của bạn.
Trang web hiện đang mở cho bất cứ ai để tải chúng, điều mà tôi đã làm. Lần đầu tiên tôi chạy file
trên chúng, cho thấy:
$ 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
Sau đó, tôi mang chúng lên máy ảo Debian 64 bit mà tôi có; một cuộc kiểm tra nội dung của họ thông qua strings
lệnh đã tiết lộ nhiều điều đáng ngờ (tham khảo các cuộc tấn công nổi tiếng khác nhau, để các lệnh được thay thế, một kịch bản được sử dụng rõ ràng để thiết lập một dịch vụ mới, v.v.).
Sau đó, tôi đã tạo ra băm MD5 của cả hai tệp và đưa chúng vào cơ sở dữ liệu băm của Cymru để xem liệu chúng có phải là tác nhân của phần mềm độc hại hay không. Mặc dù yjz
không, yjz1
và Cymru báo cáo xác suất phát hiện bằng phần mềm chống vi-rút là 58%. Nó cũng nói rằng tập tin này đã được nhìn thấy lần cuối cách đây ba ngày, vì vậy nó gần đây là hợp lý.
Chạy clamscan (một phần của clamav
gói) trên hai tệp tôi thu được:
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
vì vậy bây giờ chúng tôi chắc chắn rằng phần mềm Linux tiêu chuẩn có thể xác định nó.
Những gì bạn nên làm?
Mặc dù khá mới, nhưng không có hệ thống nào là rất mới, ví dụ , hãy xem bài viết tháng 1 năm 2015 này trên XorDdos . Vì vậy, hầu hết các gói miễn phí sẽ có thể loại bỏ nó. Bạn nên cố gắng: clamav
, rkhunter
, chkrootkit
. Tôi đã Googled xung quanh, và thấy rằng họ tuyên bố có thể phát hiện ra nó. Sử dụng chúng để kiểm tra công việc của người tiền nhiệm, nhưng sau khi chạy ba chương trình này, bạn nên sẵn sàng để đi.
Đối với câu hỏi lớn hơn, what should you do to prevent future infections
câu trả lời của Journeyman là bước đầu tiên tốt. Chỉ cần nhớ rằng đó là một cuộc đấu tranh đang diễn ra, một điều mà tất cả chúng ta (bao gồm cả tôi!) Rất có thể đã mất mà không hề biết.
CHỈNH SỬA :
Theo lời nhắc (gián tiếp) của Viktor Toth, tôi muốn thêm một vài bình luận. Điều chắc chắn là kẻ xâm nhập gặp phải một số khó khăn: anh ta tải xuống hai công cụ hack khác nhau, thay đổi quyền của họ nhiều lần, khởi động lại nhiều lần và cố gắng nhiều lần để vô hiệu hóa tường lửa. Thật dễ dàng để đoán những gì đang xảy ra: anh ta hy vọng các công cụ hack của mình sẽ mở một kênh liên lạc về phía một trong những chiếc bị nhiễm của anh ta (xem sau), và khi anh ta không thấy kênh mới này xuất hiện trên GUI điều khiển của mình, anh ta sợ bị hack công cụ đang bị chặn bởi tường lửa, vì vậy anh ta lặp lại quy trình cài đặt. Tôi đồng ý với Viktor Toth rằng giai đoạn hoạt động đặc biệt này của anh ta dường như không mang lại kết quả như mong đợi, nhưng tôi muốn khuyến khích bạn rất mạnh mẽ không được đánh giá thấp mức độ thiệt hại gây ra trên máy tính của bạn.
Tôi cung cấp ở đây một phần đầu ra của 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
Điều này cung cấp bằng chứng giả mạo các dịch vụ (trong /etc/init.d
và trong /etc/rc.d
), với crontab
tệp lịch sử mysql
và một vài tệp proc
có liên kết đến bash
(gợi ý phiên bản lừa đảo tùy chỉnh của vỏ của bạn đã được trồng). Sau đó, chương trình tạo một yêu cầu HTTP (đến một trang web nói tiếng Trung Quốc,
Accept-Language: zh-cn
mà đưa ra chất cho nhận xét của David Schwartz ở trên), có thể tạo ra sự tàn phá thậm chí nhiều hơn. Trong yêu cầu, các tệp nhị phân ( Content-Type: application/x-www-form-urlencoded
) phải được tải xuống máy tính bị tấn công (GET) và được tải lên máy điều khiển (POST). Tôi không thể thiết lập những gì sẽ được tải xuống máy tính bị tấn công, nhưng, với kích thước nhỏ của cả hai yjz
và yjz1
(1.1MB và 600kB, có thể sửa chữa), tôi có thể mạo hiểm để phỏng đoán rằng hầu hết các tệp cần thiết để che giấu rootkit, tức là đã thay đổi phiên bản ls
, netstat
, ps
, ifconfig
, ..., sẽ được tải về theo cách này. Và điều này sẽ giải thích những nỗ lực gây sốt của kẻ tấn công để tải xuống này.
Không có gì chắc chắn rằng những điều trên làm cạn kiệt tất cả các khả năng: chúng tôi chắc chắn thiếu một phần của bảng điểm (giữa các dòng 457 và 481) và chúng tôi không thấy đăng xuất; hơn nữa, đặc biệt đáng lo ngại là các dòng 495-497,
cd /tmp; ./yd_cd/make
trong đó đề cập đến một tệp mà chúng tôi không thấy đã tải xuống và có thể là một phần tổng hợp: nếu vậy, điều đó có nghĩa là kẻ tấn công đã (cuối cùng?) hiểu vấn đề với các tệp thực thi của mình là gì và đang cố gắng khắc phục nó, trong trường hợp đó pc tấn công đã đi cho tốt. [Trên thực tế, hai phiên bản phần mềm độc hại mà kẻ tấn công đã tải xuống máy bị hack (và tôi trên máy ảo Debian 64 bit của tôi) là cho một kiến trúc không phù hợp, x86, trong khi chỉ riêng cái tên của máy tính bị hack đã cho thấy sự thật rằng anh ta đang đối phó với một kiến trúc cánh tay].
Lý do tại sao tôi viết bản chỉnh sửa này là để thúc giục bạn mạnh mẽ nhất có thể để kết hợp hệ thống của bạn với một công cụ chuyên nghiệp hoặc cài đặt lại từ đầu.
Và, nhân tiện, điều này có nên hữu ích với bất kỳ ai không, đây là danh sách trong số 331 địa chỉ IP yjz
cố gắng kết nối. Danh sách này quá lớn (và có lẽ đã được định sẵn để trở nên lớn hơn) đến nỗi tôi tin rằng đây là lý do để giả mạo mysql
. Danh sách được cung cấp bởi các cửa hậu khác giống hệt nhau, mà theo tôi, là lý do để bỏ một phần thông tin quan trọng như vậy ra ngoài (tôi nghĩ rằng kẻ tấn công không muốn nỗ lực lưu trữ chúng ở định dạng kernel, vì vậy anh ta đặt toàn bộ danh sách vào một tệp văn bản rõ ràng, có thể được đọc bởi tất cả các cửa hậu của anh ta, cho bất kỳ hệ điều hành nào):
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
Đoạn mã sau
#!/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
trong danh sách trên cho thấy có 302 trong tổng số 331 địa chỉ ở Trung Quốc đại lục, những địa chỉ còn lại ở Hồng Kông, Mông Cổ, Đài Loan. Điều này bổ sung thêm sự hỗ trợ cho sự tranh cãi của David Schwartz rằng đây chủ yếu là một vòng bot Trung Quốc.
CHỈNH SỬA 3
Theo yêu cầu của @ vaid (tác giả của OP, đọc bình luận của anh ấy bên dưới), tôi sẽ thêm một nhận xét về cách tăng cường bảo mật của hệ thống Linux cơ bản (đối với một hệ thống cung cấp nhiều dịch vụ, đây là một chủ đề phức tạp hơn nhiều). vaid
nói rằng ông đã làm như sau:
Cài đặt lại hệ thống
đã thay đổi mật khẩu gốc thành mật khẩu dài 16 ký tự với các chữ cái và chữ thường và chữ thường.
Đã thay đổi tên người dùng thành tên người dùng dài 6 ký tự hỗn hợp và áp dụng cùng một mật khẩu như được sử dụng cho root
đã thay đổi cổng SSH thành thứ gì đó trên 5000
đã tắt đăng nhập gốc SSH.
Điều này là tốt (ngoại trừ tôi sử dụng một cổng trên 10.000 vì nhiều chương trình hữu ích sử dụng các cổng dưới 10.000). Nhưng tôi không thể nhấn mạnh đủ nhu cầu sử dụng khóa mật mã để đăng nhập ssh , thay vì mật khẩu. Tôi sẽ cho bạn một ví dụ cá nhân. Trên một trong những VPS của tôi, tôi không chắc có nên thay đổi cổng ssh hay không; Tôi đã để nó ở 22, nhưng đã sử dụng khóa mật mã để xác thực. Tôi đã có hàng trăm nỗ lực đột phá mỗi ngày , không thành công. Khi, mệt mỏi để kiểm tra hàng ngày rằng không có ai thành công, cuối cùng tôi đã chuyển cổng thành một cái gì đó trên 10.000, các nỗ lực đột nhập đã về không. Nhắc bạn, không phải tin tặc là ngu ngốc (chúng không phải!), Chúng chỉ săn lùng con mồi dễ dàng hơn.
Thật dễ dàng để kích hoạt khóa mật mã với RSA dưới dạng thuật toán chữ ký, xem bình luận bên dưới của Jan Hudec (cảm ơn!):
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 *
Bây giờ, tất cả những gì bạn phải làm là sao chép tệp id_rsa
vào máy mà bạn muốn kết nối (trong một thư mục .ssh
, cũng chmod
'ed đến 700), sau đó ban hành lệnh
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine
Khi bạn chắc chắn rằng điều này hoạt động, hãy chỉnh sửa trên máy chủ (= máy bạn muốn kết nối) tệp /etc/ssh/sshd_config
và thay đổi dòng
#PasswordAuthentication yes
đến
PasswordAuthentication no
và khởi động lại ssh
dịch vụ ( service ssh restart
hoặc systemctl restart ssh
, hoặc một cái gì đó như thế này, tùy thuộc vào bản phân phối).
Điều này sẽ chịu được rất nhiều. Trên thực tế, hiện tại không có khai thác nào được biết đến so với các phiên bản hiện tại openssh v2
và của RSA như được sử dụng bởi openssh v2
.
Cuối cùng, để thực sự phá hỏng máy của bạn, bạn sẽ cần phải định cấu hình tường lửa (netfilter / iptables) như sau:
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
Điều này, 1) cho phép kết nối ssh từ cả LAN và WAN, 2) cho phép tất cả đầu vào được tạo bởi yêu cầu của bạn (ví dụ: khi bạn tải trang Web), 3) bỏ mọi thứ khác vào đầu vào, 4) cho phép mọi thứ trên đầu ra và 5-6) cho phép mọi thứ trên giao diện loopback.
Khi nhu cầu của bạn tăng lên và cần mở thêm nhiều cổng, bạn có thể làm như vậy bằng cách thêm vào, ở đầu danh sách, các quy tắc như:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
để cho phép mọi người ví dụ truy cập trình duyệt Web của bạn.