Tấn công từ chối dịch vụ ( DENIAL OF SERVICE - DoS ):
A. GIỚI THIỆU CHUNG
.A.1. DoS attack là gì?
DoS là làm cho các service bị tê liệt, ko còn đáp ứng được các request nữa. Loại
attack này rất dễ thực hiện và lại rất khó bảo vệ hệ thống khỏi các DoS attack.
vấn đề là Unix cho rằng hệ thống của users sẽ vẫn chạy được
.A.2. Có Hệ điều hành nào an toàn hơn ko?
Câu trả lời là ko. Tính an toàn của hệ thống phụ thụôc vào administrator.
Hệ thống Unix phức tạp hơn và có nhiều build-in prog cũng như services. điều
này cũng mở ra nhiều cách để crash the system từ bên trong hơn win NT & 95
network.
Uniz có nhiều tools & prog để tìm ra các attack và giám sát users. Trong khi wind
lại rất khó làm được.
Một unix admin trung bình thì cũng có nhiều kinh ngiệm hơn là microsoft admin.
Tóm lại unix an toàn hơn đối với DoS attack từ bên trong. Tuy nhiên microsoft lại
có tính secure cao hơn đối với các attack từ bên ngoài chỉ vì nó có ít service hơn.
.B. ĐIỂM CƠ BẢN CHO 1 ATTACK
.B.1. SWAP SPACE
hầu hết các system đều có vài trăm MB swap space để phục vụ client requests.
Swap space thuờng dùng cho các process con có thời gian ngắn nên DoS có thể
được dựa trên phương thức làm tràn đầy swap space.
.B.2. BANDWIDTH
nếu bandwith quá cao, network sẽ trở nên vô dụng. Do đó hầu hết Dos att tác
động lên bandwith bằng nhiều cách.
.B.3. KERNEL TABLES
làm tràn kernel tables có thể gây ra các vấn đề nghiêm trọng trên hệ thống đặc
biệt là các h thống write caches và small write buffers.
Kernel memory allocation cũng là tiêu điểm nhạy cảm. kernel có giới hạn
kernelmap, nên nếu system đạt đến giới hạn này nó ko thể định vị thêm kernel
memory và fải reboot. Kernel memory ko chỉ use cho RAM, CPUs, Screen mà
nó còn use cho các process thông thường. Nghĩa là bất cứ ht nào cũng có thể
crashed nhanh chóng dễ dàng với những giải thuật nhỏ.
đối với solaris 2x lệnh sar có thể đo lường và bào cáo về kernel memory đang
dùng. nhưng sunOS 4x thì ko có lệnh sar. nếu bạn use Solaris, use lệnh sar –k 1
để lấy thông tin, lệnh netstat –k cũng cò thể dùng để xem kermel memory đã
chiếm bao nhiêu trong subpaging.
.B.4. RAM
Dos attack chiếm 1 khoảng lớn của RAM cũng có thể gây ra các vấn đề lớn. NFS
và mailserver là dễ bị attack nhất vì chúng ko cần nhiều RAM. 1 NFS client
thường sẽ tạo ra rất nhiều catching, nhưng 1 NFS client cũng có thể là anything
trong prog mà bạn có thể tự viết lấy.
.B.5. DISKS
1 cách attack cổ điển là làm đầy harddisk. HD có thể bị overloaded và ko thể use
bằng nhiều cách.
.B.6. CACHES
DoS attack liên quan đến caches được dựa trên phương pháp làm tắc nghẽn or
ngăn ngừa cache.
Trong solaris 2x:
Directory name lookup cache: liên hệ tên file với vnode.
Inode cache: thông tin cache đọc từ đĩa trong trường hợp cần đọc lại.
Rnode cache: giữ thông tin về ht file NFS.
Buffer cache: cache Inode làm tắc nghẽn gián tiếp I/O của đĩa thực.
.B.7. INETD
1 khi inetd bị crashed, tất cả các service khác đi qua inetd sẽ ko còn làm việc
được nữa.
.C. ATTACK TỪ BÊN NGOÀI.
.C.1. Sự thuận lợi của Finger
hầu hết các prog finger đều hỗ trợ chuyển tiếp đến host khác. Vd: $finger
@ finger đi qua system.one.com và
system.two.com. do đó two sẽ tưởng là one finger mình. pp này dùng để che
dấu cũng như cho các very dirty DoS attack. Hãy xem vd sau: $finger
@@@@@@@@@@@@@@@@@@@@@@host.we.attack tất cả các @ sẽ
nhận finger để finger host.we.attack rất nhiều lần làm host này bị ảnh hưởng rất
lớn.
biện pháp là cài đặt finger ko hỗ trợ chuyển tiếp như GNU finger, or bạn cũng có
thể tắt finger service.
.C.2. UDP AND SUNOS 4.1.3.
sunOS 4.1.3 bị lỗi boot nếu bạn gởi tới 1 packet với thông tin sai trong header.
Đây là nguyên nhân nếu như ip-options biểu diễn sai kích cỡ của packet.
biện pháp: cài đặt patch đúng.
.C.3. Làm tê liệt X-WINDOWS
nếu host cho phép telnet tới X-Windows port (thường là từ 6000 đến 6025), bạn
có thể làm tê liệt cả ht x-windows bằng cách tạo ra hàng loạt kết nối telnet or
prog gởi hàng loạt XopenDisplay() đến port đó. điều này cũng có thể áp dụng
cho Motif or Open windows.
biện pháp: đóng kết nối tới x-windows port.
.C.4. Cố ý sử dụng UDP SERVICES
rất dễ use UDP services (như echo, time, datetime, chargen) lặp lại 1 cách liên
tục nhờ các IP-spoofing thông thường. Vd:
from-IP=127.0.0.1
to-IP=system.we.attack
packet type:UDP
from UDP port 7
to UDP port 7
header yêu cầu là packet đến từ 127.0.0.1 (lặp lại liên tục) và tiêu điểm là echo
port tại system.we.attack. đến khi system.we.attack biết là 127.0.0.1
system.we.attack và vòng lặp được thiết lập. chú ý là system.we.attack trông
giồng như DNS-name nhưng tiêu điểm luôn luôn là 1 IP number.
.C.5. ATTACKING WITH LYNX CLIENTS
www server sẽ tách httpd process thành phản hồi cho các request từ client.
Process chỉ kéo dài khoảng 1 giây và vì thế load sẽ ko thực hiện được nếu bạn
use ps. DoS atack use hàng loạt w3 client (lynx client) là rất an toàn nhưng nên
nhớ là lệnh netstat cũng có thể phát hiện ra attack.
Httpd:s (như http-gw)
.C.6. Telnet
use thử script này:
while : ; do
telnet system.we.attack &
done
atack kiểu này cũng tốn 1 ít bandwith, nhưng nó chẳng là gì so với pp finger or
các pp khác. Nhưng 1 số firewalls & httpd:s lại nghĩ đây là vòng lặp và tự động
tắt chúng, cho đến khi admin gởi lệnh kill - HUP
.C.7. use telnet trong SOLARIS 2.4
nều attacker tạo ra kết nối telnet tới solaris 2.4 host và thoát ra use:
control -}
quit
thì inetd sẽ tiếp tục mãi mãi (ít nhất là vài trăm lần)
biện pháp: cài đặt patch đúng.
.C.8. làm sao để DISABLE ACCOUNTS
1 vài ht disable accout sau n lần bad login or chờ n giây. bạn có thể use tíng
năng này để lock out 1 user nào đó từ ht.
.C.9. LINUX AND TCP TIME, DAYTIME
inetd trong linux có thể bị crash nếu gởi nhiều SYN packet tới daytime (port 13)
or time (port 37)
.C.10. attack bằng chuyển tiếp ICMP
gateways use chuyển tiếp ICMP để yêu cầu ht overide routing tables. để vô hiệu
chuyển tiếp icmp, bạn fải biết kết nối hiện tại để gởi tới 1 route làm đứt kết nối
or gởi tới host messages lỗi nều như kết nối đó ko use cryptation
vd: (gởi messages lỗi)
destination unreachable
time to live exceeded
parameter problem
packet too big
message này sẽ reset kết nối.
.C.11. BROADCAST STORMS
đây là pp thông dụng nhất trong mạng mà host hoạt động như các gateway. pp
cơ bản là gởi nhiều packet tới tất cả các host với đích đến ko có thực. mỗi host
sẽ cố gắng chuyển từng packet dẫn đến packet đó được chuyển lòng vòng trong
1 thời gian dài và nếu có packet mới được tiếp tục gởi tới mạng sẽ nhanh chóng
gặp rắc rối.
loại attack này có thể là ping, finger, & sendmail. Nhưng hầu hết services có thể
vô hiệu bằng vài cách khác.
.C.12. SYN FLOODING
syn packet được use trong 3-way handshake do đó syn flooding attack được dựa
trên pp incomplete handshake. Attacker host gởi tới tấp các syn packet nhưng ko
phản hồi lại các ACK packet.
bạn có thể xem thêm về syn flooding tại:
[.1.]
Article by Christopher Klaus, including a "solution".
[.2.]
2600, Summer, 1996, pp. 6-11. FLOOD WARNING by Jason Fairlane
[.3.]
IP-spoofing Demystified by daemon9 / route / infinity
for Phrack Magazine
.C.13. PING FLOODING
unix: ping –s host
windows 9x: ping –t –l 256 xxx.xxx.xxx.xxx
ex: ping –l 65510 address.to.the.machine
nó có thể bị tê liệt or reboot.
* Kernel phiên bản từ 2.0.7 đến 2.0.20 or AIX4, OSF, HPUX10.1, DUXIX 4.0 >>
crashed
* OSF/1, 3.2C, solaris 2.4 x86 >> reboot.
.C.14. FLEXlm
bất cứ host nào chạy FLEXlm có thể bị shutdown bằng lệnh:
#lmdown –c /etc/licence.dat
lmdown – copyright © 1989, 1991 highland software, inc.
shutting down FLEXlm on nodes: xxx
are you sure? [y/n]: y
shut down the node xxx
#.