Saturday, June 13, 2009
CISA Vietnam Study Group
Một nỗ lực nghiêm túc (và .. tự túc) để đem kỳ thi CISA về VN: http://cisavietnam.blogspot.com. Hy vọng cả nhóm sẽ pass kỳ thi tháng 12.
Wednesday, April 22, 2009
Thiên thần ngủ yên!
Cho bé Khánh An - Sushi
...
Mẹ ơi đừng khóc
Ba ơi đừng buồn
Con muốn thấy Ba Mẹ cười
Như lúc con đang ở bên
...
...
Mẹ ơi đừng khóc
Ba ơi đừng buồn
Con muốn thấy Ba Mẹ cười
Như lúc con đang ở bên
...
Thursday, April 02, 2009
The old tool that helps: access server console with conserver
Không có IP KVM, không có Terminal server, đơn giản chỉ có vài cái Sun server cần phải access vào console để maintenance, gần đó có mấy server Linux có cổng serial. Cắm dây console vào máy Linux rồi chạy Kermit (hay Minicom) từ đó là xong, có điều làm như thế thì ... phức tạp quá: ai cũng phải có root, phải biết set lung tung trong Kermit. Giải pháp "đơn giản" và cũ mèm là dùng console server: conserver. Gói RPM có sẵn cho CentOS, Fedora, chỉ cần yum là xong.
Conserver gồm 2 thành phần (xem tài liệu hướng dẫn chi tiết: http://www.conserver.com/consoles/Training/published.html):
Lưu ý: nếu muốn "phức tạp" hơn thì xem thêm phần thiết lập quyền access cho user/goup, đặt mật khẩu, cấu hình cho nhiều server dạng phân bố, ...
Conserver gồm 2 thành phần (xem tài liệu hướng dẫn chi tiết: http://www.conserver.com/consoles/Training/published.html):
- Server (conserver): chạy trên máy kết nối với thiết bị console (vd cổng serial) hoặc nối tới Terminal server (thiết bị mắc tiền - vd như Digiport, Cylades). Server mặc định listen trên port 782/tcp để client kết nối tới
- Client (console): chạy trên máy client bất kỳ, kết nối tới server qua mạng IP, sau đó gắn vào một trong các console để điều khiển
--- /etc/conserver.cf ---
default tty {
type device;
baud 9600;
parity none;
protocol raw;
}
default * {
logfile /var/log/consoles/&; # '&' is replaced with console name
timestamp 1ha; # write timestamps
rw *; # allow all users
master localhost; # this server
}
console sun1 {
device /dev/ttyS0; motd "SUN server 01 console";
include tty;
}
access * {
trusted 127.0.0.1;
trusted 192.168.1.0/24;
}
--- end of /etc/conserver.cf ---
- Phía server: start conserver
# /etc/init.d/conserver start - Phía client: chạy console để kết nối tới server
liệt kê các console trên server và xem trạng thái của chúng:$ console -M <server_name/ip> -u
kết nối tới console của Sun server 01:
$ console -M 192.168.0.1 -u
sun1 up <none>$ console -M 192.168.0.1 sun1
kết thúc phiên làm việc và ngắt kết nối:
[Enter `^Ec?' for help]
[-- MOTD -- SUN server 01 console]
server01 console login:Nhấn phím chuỗi phím: Ctrl+E, c, . (^Ec.)
Lưu ý: nếu muốn "phức tạp" hơn thì xem thêm phần thiết lập quyền access cho user/goup, đặt mật khẩu, cấu hình cho nhiều server dạng phân bố, ...
Monday, September 08, 2008
CTF trick: fool replay attack with one time (based) shellcode
Trong võ công (truyện chưởng Kim Dung) có chiêu dùng chính sức ra đòn của đối phương để trả đòn lại gọi là "tá lực đả lực". Chiêu này cũng được sử dụng trong các hack game CTF, gọi chuyên môn là "replay attack": để cho team khác attack mình, bắt (capture) toàn bộ phiên làm việc (session) đó ở lớp mạng, sửa đổi lại địa chỉ nguồn/đích và replay lại. Do server của các team đều được cài đặt giống nhau, chiêu này có thể lấy được điểm dễ dàng mà không phải tốn công sức và không cần quan tâm đến nội dung dữ liệu (mã khai thác lỗi) do capture ở lớp mạng. Tất nhiên phải chờ có người "đánh" trúng mình trước, sau đó "đánh" lại chính họ và những người khác. Do cách tính điểm CTF cho điểm break through (ghi điểm đầu tiên) rất cao, các team đều nỗ lực tập trung thời gian để ghi được điểm này và mặc kệ cho thiên hạ giang hồ sử dụng chiêu của mình để đánh lẫn nhau (đánh lại mình luôn :)).
Giang hồ hiểm ác, biết đâu bọn chúng dùng chiêu của mình mà lại đánh thắng mình, tốt nhất là diệt trừ mọi hậu họa. Tuy nhiên, việc chống replay attack là khá khó khăn do: a) kêt nối mạng client - server không có mã hóa; b) không thể chủ động ở phía server do đối phương nắm giữ. Nếu chiếm được chủ động phía server, có khả năng chống được replay attack. Trong trường hợp đó, một chiến thuật để chống lại chiêu "tá lực đả lực" là: mã khai thác (exploit code) chỉ sử dụng được một lần, không thể replay dựa theo thời gian trên server. Theo cách này mã khai thác lỗi chỉ chạy đúng (valid) trong một khoảng thời gian xác định (ví dụ trong vòng 30 giây kể từ lúc được chạy lần đầu), thời gian này được xác định theo server bị khai thác do đó nếu được capture rồi replay lại sẽ không ra được kết quả. Việc tại tạo lại mã khai thác từ luồng dữ liệu (data stream) bắt được để dò ra lỗi sẽ mất thời gian hơn nhiều.
Mã khai thác lỗi ban đầu:
Mã khai thác lỗi dùng một lần:
Mã giả (pseudo code) phần kiểm tra theo thời gian đơn giản như sau:
Mã khai thác lỗi ở mỗi lần chạy khác nhau sẽ có giá trị "t" khác nhau theo thời gian. Tuy nhiên phần mã này là tĩnh và có thể bị phát hiện khi so sánh hai lần chạy khác nhau. Một cách để tránh bị phát hiện là mã hóa mã khai thác lỗi theo cách khác nhau qua mỗi lần chạy. Với chiêu này, ta có thể chiếm phần tiện nghi hơn các đối thủ một chút, đôi khiến chúng phải bứt đầu bứt tóc để dò tìm tại sao chiêu "tá lực đả lực" lại vô hiệu :D.
Lưu ý/Hạn chế:
Giang hồ hiểm ác, biết đâu bọn chúng dùng chiêu của mình mà lại đánh thắng mình, tốt nhất là diệt trừ mọi hậu họa. Tuy nhiên, việc chống replay attack là khá khó khăn do: a) kêt nối mạng client - server không có mã hóa; b) không thể chủ động ở phía server do đối phương nắm giữ. Nếu chiếm được chủ động phía server, có khả năng chống được replay attack. Trong trường hợp đó, một chiến thuật để chống lại chiêu "tá lực đả lực" là: mã khai thác (exploit code) chỉ sử dụng được một lần, không thể replay dựa theo thời gian trên server. Theo cách này mã khai thác lỗi chỉ chạy đúng (valid) trong một khoảng thời gian xác định (ví dụ trong vòng 30 giây kể từ lúc được chạy lần đầu), thời gian này được xác định theo server bị khai thác do đó nếu được capture rồi replay lại sẽ không ra được kết quả. Việc tại tạo lại mã khai thác từ luồng dữ liệu (data stream) bắt được để dò ra lỗi sẽ mất thời gian hơn nhiều.
Mã khai thác lỗi ban đầu:
exploit = [padding] + [shellcode]
Mã khai thác lỗi dùng một lần:
exploit = [new padding] + [time check code] + [shellcode]
Mã giả (pseudo code) phần kiểm tra theo thời gian đơn giản như sau:
t = time(NULL); // predefined time value = when the exploit code is built and run
// shellcode
current_time = time(NULL);
if (current_time > t)
if(current_time < t + 30)
shellcode();
Mã khai thác lỗi ở mỗi lần chạy khác nhau sẽ có giá trị "t" khác nhau theo thời gian. Tuy nhiên phần mã này là tĩnh và có thể bị phát hiện khi so sánh hai lần chạy khác nhau. Một cách để tránh bị phát hiện là mã hóa mã khai thác lỗi theo cách khác nhau qua mỗi lần chạy. Với chiêu này, ta có thể chiếm phần tiện nghi hơn các đối thủ một chút, đôi khiến chúng phải bứt đầu bứt tóc để dò tìm tại sao chiêu "tá lực đả lực" lại vô hiệu :D.
Lưu ý/Hạn chế:
- Phải có khả năng khai thác lỗi để thực thi được trên server đối phương (khi đó mới gọi time() được)
- Buffer đủ lớn để thêm phần mã kiểm tra (16+ bytes)
- Đồng hồ trên server đối phương không chạy sai (kiểm tra được)
Sunday, August 17, 2008
Defcon 16 CTF
Hackgame nổi tiếng nhất thế giới - Defcon CTF - lần thứ 16 đã kết thúc với chiến thắng cách biệt của team Sk3wl0fr00t, team không qua được vòng loại nhưng được "vớt" nhờ PLUS không tham gia. Kết quả cuối cùng:
- Sk3wl0fr00t
- Routards
- 1@stPlace
- Taekwon-V
- Guard@MyLan0
- Shellphish
- Pandas with Gambas
- WOWHACKER
Saturday, February 23, 2008
Analyzing Nessus HTML report with Excel
Nessus, công cụ scan lỗ hổng nguồn mở - là lựa chọn ưa thích của dân admin cũng như auditor. Nessus được dùng để scan mạng nhằm phát hiện các host có thể bị "đánh thủng" trong mạng, một cách thường xuyên hoặc dùng khi audit. Nessus report kết quả ra nhiều kiểu định dạng khác nhau (NBE, HTML, XML), tuy nhiên report chi tiết này không mấy thích hợp với ... các sếp. Một chút xử lý trên HTML report của Nessus sau đó đưa vào Excel với Pivot Table ta sẽ có một bản report tóm tắt "ấn tượng".
Kết quả của Pivot Table report cũng giúp ích nhiều cho việc vá các lỗ hổng, chỉ cần double-click vào một ô kết quả một sheet mới sẽ tự động được tạo với tất cả thông tin chi tiết. DataPilot của OpenOffice Calc có thể làm được Pivot table report nhưng không có "chiêu" double-click lợi hại này của Excel.
- Xử lý HTML report để lọc ra phần chi tiết các kết quả scan
- Import dữ liệu vào Excel
- Tạo Pivot Table Report, kết quả sẽ như hình dưới
Kết quả của Pivot Table report cũng giúp ích nhiều cho việc vá các lỗ hổng, chỉ cần double-click vào một ô kết quả một sheet mới sẽ tự động được tạo với tất cả thông tin chi tiết. DataPilot của OpenOffice Calc có thể làm được Pivot table report nhưng không có "chiêu" double-click lợi hại này của Excel.
Friday, February 15, 2008
The power of fusesmb
Dạo này nautilus lâu lâu lại bị lỗi không browse được mấy cái shares trên Windows fileserver, mount bằng tay thì mất công ... gõ pasword nhiều lần và phải umount. Một giải pháp "tuyệt cú mèo" làm một lần chạy ... mãi mãi là dùng SMB For FUSE (fusesmb). Gói RPM có sẵn cho FC7/8 hoặc cài đặt từ source khá đơn giản.
Cấu hình file ~/.smb/fusesmb.conf:
; Global settings
[global]
; Default username and password
username=user
password=totallysecret
; Connection timeout in seconds
timeout = 10
Cấu hình file ~/.smb/fusesmb.conf
Chạy fusesmb để tự động mount các shares khi được truy xuất đến:
$ fusesmb ~/shares
Truy cập các shares theo dạng/DOMAIN/SERVER/SHARENAME
Lưu ý:
Cấu hình file ~/.smb/fusesmb.conf:
; Global settings
[global]
; Default username and password
username=user
password=totallysecret
; Connection timeout in seconds
timeout = 10
Cấu hình file ~/.smb/fusesmb.conf
Chạy fusesmb để tự động mount các shares khi được truy xuất đến:
$ fusesmb ~/shares
Truy cập các shares theo dạng
Lưu ý:
- Password được lưu ở dạng cleartext
- Chương trình fusesmb-cache sẽ tự động quét toàn bộ Windows domain để lấy về tất cả các shares trên tất cả các servers trong mạng. Việc này rất mất thời gian lúc ban đầu, tốn resource về sau và khiến truy xuất các shares chậm. Có thể bỏ qua quá trình này bằng "mánh" sau:
- Dùng smbclient lấy tên các shares trên server cần truy xuất
- Thêm vào file ~/.smb/fusesmb.cache, theo dạng DOMAIN/SERVER/SHARE, ví dụ:
MYCONPANY/192.168.1.10/Upload - Xóa quyền ghi trên file ~/.smb/fusesmb.cache để chương trình tự động cập nhật không ghi đè được
- Tiện lợi nhưng bù lại performance không được cao bằng cách mount cifs trực tiếp (test bằng lệnh find hoặc dd)
Subscribe to:
Posts (Atom)
