Như tôi đã nói trong các bài viết kĩ thuật trước, SMB là giao thức mã nguồn đóng, độc quyền của hãng Microsoft để xài cho các hệ điều hành Windows giao tiếp với nhau, quản lí nhau, chia sẻ file cho nhau…
Để tránh bị kiện độc quyền, Microsoft đã cung cấp đầy đủ các tài liệu kĩ thuật về giao thức SMB để lập trình được.
Tổng cộng giao thức SMB đã lên đời 6 lần rồi:
- Microsoft đổi tên SMB thành CIFS trên Windows 95 năm 1996 , sau đó CIFS lụi tàn
- Sau đó là SMB 2.0 với tên khác là SMB2 khi phát hành Windows Vista và Windows Server 2008
- Rồi tới SMB 2.1 tích hợp vào Windows 7 và Server 2008 R2
- Thời gian trôi qua SMB 3.0 tên khác là SMB 2.2 bỏ trong Windows 8 và Windows Server 2012
- Tiếp tục là 1 con số cao hơn SMB 3.0.2 để chạy trên Windows 8.1 và Windows Server 2012 R2
- Sau rốt đó là SMB 3.1.1 có từ Windows 10 và Windows Server 2016
Mỗi phiên bản SMB ra đời lại có thêm 1 đống cái mới trong gói tin vì vậy giải mã gói tin là công việc xuyên suốt của các kĩ sư phần mềm Samba. Họ là kĩ sư phần mềm (software engineer) á, hổng phải người phát triển ứng dụng (application developer) nha, 2 cái này khác nhau lắm lun á.
Các lập trình viên Samba đã cố gắng giải mã bên trong giao thức SMB có gì bằng cách ngoài đọc 1 đống tài liệu của Microsoft họ còn bắt gói tin khi 2 máy tính Windows giao tiếp với nhau và phân tích bên trong gói tin chạy SMB có những trường dữ liệu gì, để làm gì, dài bao nhiêu byte…
Wireshark là phần mềm bắt gói tin được xài phổ biến nhất trên Windows. Wireshark có cả giao diện đồ họa là Windows Form và giao diện dòng lệnh là lệnh tshark.
Ngoài ra còn có 2 công cụ khác để bắt gói tin là lệnh tcpdump và snoop.
Sau đây là 1 số trường dữ liệu của giao thức SMB đã được Wireshark nhận biết:
SMB3.0 AES-128 CCM decryption được thêm vào Wireshark 2.6.5 tháng 12/2018.
SMB3.1.1 AES-128 CCM decryption có từ Wireshark 3.0.0 tháng 02/2019.
AES-128 GCM cho SMB3.1.1 có trong Wireshark 3.1.0 tháng 07/2019.
SMB 3.0 multichannel decryption hỗ trợ từ Wireshark 3.3.0 tháng 09/2020.