Sunday, December 30, 2007

VNC anti brute force algorithm

ในที่สุดก็ได้ update blog ฉลองปีใหม่ ก่อนอื่นก็ต้อง Happy New Year :D

ตอนนี้กำลังเขียน module ทำ brute force ตัว VNC ของ Bruter อยู่ ตอนที่กำลังหาทดสอบอยู่ ก็พบกับความประหลาดใจ เนื่องจากเป็น protocol แรก ที่เจอระบบ anti brute force ที่ไม่ใช่การ lock out user

ก่อนเริ่มอธิบาย ต้องบอกก่อนว่าตัว VNC server ที่ทดสอบก็มี RealVNC, UltraVNC และ TightVNC โดย RealVNC จะแบ่ง version เป็น 3.x กับ 4.x ซึ่ง 2 version นี้จะมีระบบ anti brute force ต่างกันนิดหน่อย และตัว UltraVNC กับ TightVNC จะใช้ระบบเดียวกันกับ RealVNC 3.x

RealVNC 3.x anti brute force algorithm
if (strcmp(current->_machineName, machine) == 0) {
// If the host is already blocked then ignore
if (current->_blocked)
return;

// Set the RefTime & failureCount
current->_lastRefTime.QuadPart = now.QuadPart + 10;
current->_failureCount++;

if (current->_failureCount > 5)
current->_blocked = TRUE;
return;
}
source code จากไฟล์ winvnc/vncserver.cpp, function: AddAuthHostsBlacklist()

ตัว VNC server จะยอมให้มีการ login ผิดได้ 5 ครั้งจาก IP เดียวกัน หลังจากนั้นผิดครั้งหนึ่งจะ block 10 วินาที ตัว VNC server จะเริ่มนับ 0 ใหม่เมื่อมีการ login ถูกจาก IP ที่เป็น blacklist เท่านั้น

RealVNC 4.x anti brute force algorithm
if ((*i).second.marks >= threshold) {
// Yes - entry is blocked - has the timeout expired?
time_t now = time(0);
if (now >= (*i).second.blockUntil) {
// Timeout has expired. Reset timeout and allow
// a re-try.
(*i).second.blockUntil = now + (*i).second.blockTimeout;
(*i).second.blockTimeout = (*i).second.blockTimeout * 2;
return false;
}
// Blocked and timeout still in effect - reject!
return true;
}

// We haven't reached the threshold yet.
// Increment the black-mark counter but allow
// the entry to pass.
(*i).second.marks++;
return false;
โดยมีตัวแปร threshold เป็น 5 และ initialTimeout เป็น 10
source code จากไฟล์ rfb/BlackList.cxx

อธิบายง่ายๆ ก็คือเหมือนกับ RealVNC 3.x แต่จะ block นานขึ้นสองเท่าจากของเดิมเรื่อยๆ คือครั้งแรก 10 วินาที ครั้งที่สอง 20 วินาที ครั้งที่สาม 40 วินาที ไปเรื่อยๆ

Wednesday, December 5, 2007

SMTP LOGIN command

ที่เคย note เอาไว้นานแล้ว เรื่อง SMTP command หาดูได้ Labal เดียวกัน

ครั้งที่แล้วเขียนวิธี authen ไว้แค่แบบเดียวคือ แบบ PLAIN ซึ่งตอนที่เขียนโปรแกรม Bruter ก็พบว่า ถ้าเป็น SMTP server ของ Microsoft นั้นจะไม่มีแบบ PLAIN จะมีเฉพาะ LOGIN method

ก็มา note เพิ่มละกัน เกี่ยวกับ LOGIN method

ก่อนอื่นเราต้องทำ base64 encoding เหมือนกัน แต่คราวนี้ทำแยก username กับ password
ทำ username
base64.encodestring('user@domain.ext') เป็น dXNlckBkb21haW4uZXh0
base64.encodestring('password') เป็น cGFzc3dvcmQ=

เริ่ม authen
AUTH LOGIN
334 VXNlcm5hbWU6
dXNlckBkb21haW4uZXh0
334 UGFzc3dvcmQ6
cGFzc3dvcmQ=
235 2.0.0 OK Authenticated

ถ้าเอาที่อ่านไม่ออกทั้งหมดมาทำ decoding ด้วย base64 ก็จะเป็น
AUTH LOGIN
334 Username:
user@domain.ext
334 Password:
password
235 2.0.0 OK Authenticated

และก็จริงๆ แล้วสามารถส่ง username ได้ตั้งแต่บรรทัดแรกก็จะเป็นแบบนี้
AUTH LOGIN dXNlckBkb21haW4uZXh0
334 UGFzc3dvcmQ6
cGFzc3dvcmQ=
235 2.0.0 OK Authenticated

แต่ยังไงก็ต้องอย่าลืมดู response ถ้ามัน response กลับมาให้ใส่ username ก็ต้องส่ง username

Thursday, November 22, 2007

Bruter 1.0 beta1 released

ออกแล้วนะ version beta1 หลักๆ ก็คือแก้โค้ดข้างใน, bug และก็เพิ่ม MSSQL, MySQL, SNMP

โหลดกันได้ที่
http://sourceforge.net/project/platformdownload.php?group_id=204020

Sunday, October 21, 2007

Bruter 1.0 alpha2 release

ในที่สุดก็ได้ release โปรแกรมนี้อีกรอบ แต่ยังคงเป็น alpha version

ดู changelog เอาเองละกัน หาโหลดได้ที่เดิม http://sourceforge.net/projects/worawita/

ปล. เนื่องด้วยก่อนหน้านี้เอาแต่เล่น hackthissite ทำให้หายไปนาน และออก alpha2 ช้า

Thursday, September 20, 2007

Bruter 1.0 alpha1 release

ออกแล้ว โปรแกรม Bruter - parallel login brute forcer version 1.0 alpha1

=======================
Version 1.0 alpha1
=======================

- Initial alpha release
- Support protocols: FTP, HTTP (Basic), HTTP (Form), IMAP, POP3, SMB, SMTP, Telnet
- Support SSL

หาโหลดได้ที่ http://sourceforge.net/projects/worawita/

Tuesday, September 4, 2007

Windows built-in users and groups

ตัว Microsoft Windows จะมี users และ groups ที่จะถูกสร้างเสมอ ตั้งแต่ลงตัว OS และบาง users หรือ groups จะถูกสร้างเพิ่ม เมื่อ role ของตัวเครื่องเปลี่ยนไป

หลายๆ คนคงทราบอยู่แล้วว่าแต่ละ users และ groups ใน Windows จะมี SID ซึ่ง Windows จะใช้ SID ในการทำงานหลายๆ อย่างแทนชื่อ และพวก built-in ที่มากับ Windows อยู่แล้ว พวกนี้จะมี SID ที่แน่นอน และ Windows จะแสดงพวกนี้อยู่ใน domain "NT AUTHORITY"

ทั้งหมดที่แสดงข้างล่างคือที่หามาได้ทั้งหมด (พูดง่ายก็คือ ไม่รู้ว่าหมดหรือยัง)

NULL AUTHORITY       : S-1-0
Nobody : S-1-0-0
WORLD AUTHORITY : S-1-1
Everyone : S-1-1-0
LOCAL AUTHORITY : S-1-2
LOCAL : S-1-2-0
CREATOR : S-1-3
CREATOR OWNER : S-1-3-0
CREATOR GROUP : S-1-3-1
CREATOR OWNER SERVER : S-1-3-2
CREATOR GROUP SERVER : S-1-3-3
NONUNIQUE AUTHORITY : S-1-4
NT AUTHORITY : S-1-5
DIALUP : S-1-5-1
NETWORK : S-1-5-2
BATCH : S-1-5-3
INTERACTIVE : S-1-5-4
SERVICE : S-1-5-6
ANONYMOUS LOGON : S-1-5-7
PROXY : S-1-5-8
ENTERPRISE DOMAIN CONTROLLERS : S-1-5-9
SELF : S-1-5-10
Authenticated Users : S-1-5-11
RESTRICTED : S-1-5-12
TERMINAL SERVER USER : S-1-5-13
REMOTE INTERACTIVE LOGON : S-1-5-14
SYSTEM : S-1-5-18
LOCAL SERVICE : S-1-5-19
NETWORK SERVICE : S-1-5-20
BUILTIN : S-1-5-32
Administrators : S-1-5-32-544
Users : S-1-5-32-545
Guests : S-1-5-32-546
Power Users : S-1-5-32-547
Account Operators : S-1-5-32-548
Server Operators : S-1-5-32-549
Print Operators : S-1-5-32-550
Backup Operators : S-1-5-32-551
Replicator : S-1-5-32-552
Pre-Windows 2000 Compatible Access : S-1-5-32-554
Remote Desktop Users : S-1-5-32-555
Network Configuration Operators : S-1-5-32-556
Site Server Authority : S-1-6
Internet Site Authority : S-1-7
Exchange Authority : S-1-8
Resource Manager Authority : S-1-9


และก็นอกจากนี้แล้ว ยังมีอีก 2 user ที่สำคัญ และน่าจำคือ Administrator กับ Guest ซึ่งจะมี RID เป็น 500 กับ 501

Tuesday, August 28, 2007

Bruter

ในที่สุดก็ไปสมัครที่ sourceforge เพื่อเขียนโปรแกรม opensource ซะแล้ว

โปรแกรมนี้ชื่อว่า Bruter การทำงานก็คล้ายๆ กับตัวโปแกรม hydra, medusa นั่นแหละ
แต่โปรแกรมนี้จะให้มัน run บน windows

ตอนนี้ที่ sourceforge ยังไม่มี source code อะไรเลย เพราะกำลังหัดใช้ SVN อยู่ ใช้คล่องเมื่อไรก็จะ upload source code ขึ้นไปเลย

เอาหน้าตาที่ยังไม่เสร็จไปดูก่อนละกัน (ยังมี bug กับ feature ที่ยังไม่ทำอีกเยอะเลย)