편집 2 :
이 게시물이 많은 관심을 끄는 데에는 한 가지 이유가 있습니다. 침입자의 전체 실시간 세션을 PC에 기록했습니다. 이것은 우리가 일상적인 경험과는 매우 다릅니다. 여기서 우리는 그의 행동의 결과에 대한 발견을 다루고 그것을 시정하려고합니다. 여기서 우리는 그를 직장에서 보았고, 백도어를 세우는 데 어려움을 겪고, 발걸음을 되찾고, 열을 내며 일을했습니다. 자신의 맬웨어를 시스템에서 실행할 수없고 아래를 읽고) 완전히 독립적 인 제어 도구를 배포하려고 시도하십시오. 이것은 보안 연구원이 허니 트랩으로 매일 목격하는 것입니다 . 나에게 이것은 매우 드문 기회이자 즐거움의 원천입니다.
당신은 확실히 해킹되었습니다. 이에 대한 증거는 사용자가 표시 한 파일 의 스 니펫에서 나오지 않습니다.auth.log
로그인 시도가 짧은 시간 (2 초) 동안 실패했음을보고하기 때문입니다. 두 번째 줄은 Failed password
을 나타내고, 세 번째 줄 은 pre-auth
연결 끊기를 보고합니다 .
증거는 대신 두 파일의 내용 http://222.186.30.209:65534/yjz
과 http://222.186.30.209:65534/yjz1
공격자가 시스템에 다운로드 한 내용에서 나옵니다 .
이 사이트는 현재 누구나 다운로드 할 수 있습니다. 나는 처음 file
에 그들에게 달렸다 .
$ 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
그런 다음 64 비트 데비안 VM으로 가져 왔습니다. strings
명령을 통해 내용을 조사한 결과 의심스러운 내용이 많이 드러났습니다 (다양한 잘 알려진 공격, 대체 할 명령, 새 서비스를 설정하는 데 사용 된 스크립트 등 참조).
그런 다음 두 파일의 MD5 해시를 생성하고 Cymru의 해시 데이터베이스에 제공하여 이들이 알려진 맬웨어의 에이전트인지 확인했습니다. 하지만 yjz
아니다 yjz1
, 그리고 캄리는 58 %의 안티 바이러스 소프트웨어에 의해 탐지의 가능성을보고합니다. 또한이 파일은 약 3 일 전에 마지막으로 본 것이기 때문에 최신 파일입니다.
내가 얻은 두 파일에서 clamscan ( clamav
패키지의 일부)을 실행 하십시오 .
$ clamscan y*
yjz: Linux.Backdoor.Gates FOUND
yjz1: Linux.Trojan.Xorddos FOUND
따라서 표준 Linux 소프트웨어가이를 식별 할 수 있습니다.
어떻게해야합니까?
다소 새로운 시스템은 아니지만 새로운 시스템은 아니지만 XorDdos 에 대한 2015 년 1 월 기사를 참조하십시오 . 따라서 대부분의 무료 패키지는 제거 할 수 있어야합니다. : 당신은 시도해야한다 clamav
, rkhunter
, chkrootkit
. 나는 구글을 둘러보고 그들이 그것을 발견 할 수 있다고 주장하는 것을 보았다. 그것들을 사용하여 선행 작업을 확인하십시오. 그러나이 세 가지 프로그램을 실행 한 후에는 준비가되어 있어야합니다.
더 큰 질문에 대해서는 what should you do to prevent future infections
Journeyman의 답변이 좋은 첫 단계입니다. 그것은 우리를 포함한 모든 사람들이 그것을 모르고도 잃어 버렸을 수도있는 지속적인 투쟁이라는 것을 명심하십시오.
편집 :
Viktor Toth의 (간접) 프롬프트에서 몇 가지 의견을 추가하고 싶습니다. 침입자가 몇 가지 어려움을 겪은 것은 분명합니다. 그는 두 가지 고유 한 해킹 도구를 다운로드하고, 권한을 여러 번 변경하고, 여러 번 다시 시작한 후, 방화벽을 비활성화하기 위해 여러 번 시도합니다. 무슨 일이 일어나고 있는지 쉽게 추측 할 수 있습니다. 그는 해킹 도구가 감염된 PC 중 하나를 향한 통신 채널을 열 것으로 예상하고 (나중에 참조)이 새로운 채널이 자신의 제어 GUI에 나타나지 않으면 해킹을 두려워합니다. 도구가 방화벽에 의해 차단되고 있으므로 설치 절차를 반복합니다. Viktor Toth에 동의합니다.이 작업의 특정 단계가 예상되는 결과를 가져 오는 것 같지는 않지만 매우 강력하게 격려하고 싶습니다. PC에 미치는 피해 정도를 과소 평가해서는 안됩니다.
여기에 다음과 같은 부분 출력이 제공됩니다 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
이 서비스는 ( /etc/init.d
및 내부 /etc/rc.d
) 서비스 crontab
내역과의 기록 파일 mysql
및 proc
링크 된 파일 몇 개 bash
(사용자 정의 제작 된 사기성 버전의 쉘이 설치되었음을 나타냄)를 제공합니다. 그런 다음 프로그램은 중국어를 사용하는 사이트에 대한 HTTP 요청을 생성합니다.
Accept-Language: zh-cn
위의 David Schwartz의 의견에 실질적인 영향을 미침). 요청에서 바이너리 ( Content-Type: application/x-www-form-urlencoded
)는 공격 된 PC (GET)로 다운로드되어 제어 시스템 (POST)에 업로드됩니다. 나는 공격을 PC에 다운로드 될 수 있지만, 모두의 작은 크기 주어진 것을 설정할 수 없습니다 yjz
와 yjz1
, (repectively 1.1MB 및 600KB), 내가 필요한 대부분의 파일이 루트킷을 은폐하는 것을 추측 벤처 수 있습니다 즉 변경된 버전 ls
,은 netstat
, ps
, ifconfig
, ..., 이런 식으로 다운로드 할 수있다. 그리고 이것은이 다운로드를 시도하려는 공격자의 열렬한 시도를 설명합니다.
위의 내용이 모든 가능성을 소진한다는 것은 확실하지 않습니다. 우리는 확실히 사본의 일부가 부족하고 (457과 481 사이) 로그 아웃을 볼 수 없습니다. 더욱이, 특히 걱정스러운 것은 495-497 행입니다.
cd /tmp; ./yd_cd/make
이 파일은 다운로드되지 않은 파일을 참조 하며 컴파일 된 파일 일 수 있습니다. 그렇다면 공격자가 실행 파일의 문제점을 이해하고 (고전적으로) 수정하려고한다는 의미입니다. 공격받은 PC는 잘 갔다. [사실, 공격자가 해킹 된 컴퓨터 (및 64 비트 데비안 VM으로 다운로드 한)에 다운로드 한 두 가지 버전의 맬웨어는 부적절한 아키텍처 x86 용이며, 해킹 된 PC의 이름만으로도 그는 팔 아키텍처를 다루고 있었다].
이 편집을 작성한 이유는 시스템을 전문적인 장비와 결합하거나 처음부터 다시 설치하도록 가능한 한 강력하게 권장하기 때문입니다.
그건 그렇고, 이것이 누구에게나 유용하다고 입증되면, 이것은 연결 을 시도 하는 331 개의 IP 주소 목록입니다 yjz
. 이 목록은 너무 커서 (아마도 더 커질 것으로 예상 됨) 이것이 훼손된 이유라고 생각합니다 mysql
. 다른 백도어가 제공하는 목록은 동일합니다. 필자는 이러한 중요한 정보를 공개 상태로 두어야하는 이유라고 생각 합니다. 그는 전체 목록을 일반 텍스트 파일에 넣었습니다.이 파일은 모든 백도어에서 읽을 수 있습니다.
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
다음 코드
#!/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
위 목록 의 전체 331 개 주소 중 302 개 주소는 중국 대륙에 있고 나머지 주소는 홍콩, 몽골, 대만에 있습니다. 이것은 David Schwartz의 주장이 중국 봇 링이라는 주장에 대한 추가 지원을 추가합니다.
편집 3
@vaid의 요청 (OP의 저자는 아래에서 그의 의견을 읽으십시오)에서 기본 Linux 시스템의 보안을 강화하는 방법에 대한 의견을 추가 할 것입니다 (많은 서비스를 제공하는 시스템의 경우 훨씬 복잡한 주제입니다). vaid
그는 다음과 같이 말했습니다.
시스템을 다시 설치하십시오
루트 암호를 소문자와 대문자, 문자 및 숫자가 혼합 된 16 자 길이의 암호로 변경했습니다.
사용자 이름을 6 자로 된 긴 사용자 이름으로 변경하고 루트에 사용 된 것과 동일한 비밀번호를 적용했습니다.
SSH 포트를 5000 이상으로 변경
SSH 루트 로그인을 해제했습니다.
이것은 많은 유용한 프로그램이 10,000 미만의 포트를 사용하기 때문에 10,000 이상의 포트를 사용하는 것을 제외하고는 좋습니다. 그러나 암호 대신 ssh login에 암호 키를 사용해야한다는 것을 강조 할 수는 없습니다 . 나는 당신에게 개인적인 모범을 보여줄 것입니다. 내 VPS 중 하나에서 ssh 포트를 변경할지 여부가 확실하지 않았습니다. 22시에 그대로 두었지만 인증에는 암호화 키를 사용했습니다. 나는 하루 에 수백 번의 침입 시도를 했지만 성공하지 못했습니다. 아무도 성공하지 못했다는 것을 매일 확인하기 위해 피곤했을 때, 결국 포트를 10,000 이상으로 바꾸었고 침입 시도는 0이되었습니다. 해커들이 멍청한 것은 아닙니다 (그렇지 않습니다!), 그들은 더 쉬운 먹이를 사냥합니다.
서명 알고리즘으로 RSA를 사용하여 암호화 키를 쉽게 활성화 할 수 있습니다. Jan Hudec의 아래 주석을 참조하십시오 (감사합니다).
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 *
이제 파일 id_rsa
을 당신이 연결하고자하는 기계 (디렉토리 .ssh
에서 chmod
'700'으로 )에 복사 한 다음, 명령을 발행하기 만하면됩니다.
ssh -p YourChosenNonStandardPort -i ~/.ssh/id_rsa me@RemoteMachine
이것이 작동한다고 확신하면 서버 (= 연결하려는 기계)에서 파일 /etc/ssh/sshd_config
을 편집하고 행을 변경하십시오.
#PasswordAuthentication yes
에
PasswordAuthentication no
ssh
서비스를 다시 시작하십시오 ( service ssh restart
또는 systemctl restart ssh
배포판에 따라 이와 비슷한 것).
이것은 많이 견딜 것입니다. 실제로 현재 openssh v2
와의 RSA 버전에 대해 알려진 악용 사례는 없습니다 openssh v2
.
마지막으로 컴퓨터를 실제로 볼트로 연결하려면 다음과 같이 방화벽 (netfilter / iptables)을 구성해야합니다.
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
이것은 1) LAN과 WAN 모두에서 ssh 연결을 허용하고, 2) 요청에 의해 발생 된 모든 입력을 허용합니다 (예 : 웹 페이지를로드 할 때) 출력, 5-6)은 루프백 인터페이스의 모든 것을 허용합니다.
요구 사항이 증가하고 더 많은 포트를 열어야하는 경우 목록 맨 위에 다음과 같은 규칙을 추가하면됩니다.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
예를 들어 사람들이 웹 브라우저에 액세스 할 수 있도록합니다.