2008年2月29日 星期五

關島 B-2 轟炸機墜毀

原本共有 21 架 B-2 轟炸機的關島美軍,日前發
生一架 B-2 轟炸機墜毀事件,造成十二億美金的
損失,幸運的是轟炸機駕駛員安然逃過一劫。

目前其餘的二十架轟炸機因為墜機事件,都已經
暫時遭到停飛。

2008年2月28日 星期四

新聞網站加入部落格

剛才逛了一下久未訪問的新聞網站,沒想到自由時報也已經有了部落格網站

一開始有部落格的新聞網站,記得是聯合新聞網東森新聞網蘋果日報中時電子報才加入,沒想到最強調本土、台灣第一大報的自由時報,是最後才跟上網路 2.0 的潮流。

不過亡羊補牢,為時不晚。


遊記:關西國際空港大廳


這是京都自由行時,初到日本的第一站,大阪關西空港,關西國際機場,KIX,其中最特別的是,在大廳裡可以看見這個透光的多邊形的大型天窗,延著天窗是一節節的骨架,剛好把落下的陽光排成一列,散射到整個大廳。

值得一提的是,KIX 整個是用填海造路工程蓋成的海上機場,也算是近代工程史上的一大奇蹟。

這張照片是到大阪的第一個影像記憶。


2008年2月27日 星期三

艾媽愛心晚餐


健康養身的甜椒雞丁。


義美冷凍水餃。


蘆筍炒蝦仁。

今天的份量比較剛好,可以吃到三種菜色,又
可以吃得七分飽。

晚上邊看電視,我們已經可以明顯感覺到胎兒
在媽媽的肚子裡很好動,前幾個月都還沒有摸
到明顯胎動,今天輕拍肚子就可以感覺到小寶
貝積極的滾動回應我們,真的很開心。

;-)

2008年2月23日 星期六

Protect your program from Security Holes

原文作者為 scott at santafe dot edu
常見的系統、程式安全漏洞,大致上可包含幾種情況:
http://www.undergroundnews.com/kbase/underground/hacking/
findhole.htm

1. 有瑕疵的 SUID/SGID 程式(特別是包含 gets(),sprintf(),
strcpy(),system(), popen(),execlp(),execvp() 等函式的
程式),例如 sendmail, httpd ,imapd ,samba 等 suid to
0 的瑕疵程式都可能被用來獲取系統 root 權限,或是
sgid to mail 的瑕疵程式可能被用來讀取他人信件(filter
in elm package),或是允許 shell escape 的程式。

2. 程式接收非(設計師/使用者)預期的輸入值。
( eg. Buffer overflow, delimiter problem, shell
escape, format string, directory traversal, path
disclosure, css, csrf, sql injection )

( ref: shellcode, ';', ':', "\!", "..", '%', '<', '>',
"<", ">", "\r" CR, "\n", LF, 或以其他編碼方式表現以上字元)

3. (Kernel)Race condition.
比如會用到暫存檔的程式,在開啟暫存檔之前,我們可以先預測暫
存檔的檔名,在程式存取之前 "先" 生出這個檔給他去存取,而這
個我們先的概念就是 "race" 的由來,當我們能比正常程序搶先一
步產生檔案,那這個檔案就可以用來覆蓋或是塞資料進去想要改變
的檔案
(ex: symbolic link, tmp file, 利用紅燈間隙闖越馬路或迴轉)

4. (Kernel)Device driver bug.

5. DoS. (Denial of Service)
系統資源的佔用,如記憶體(memory leak),硬碟空間,
process(fork bomb)
( ref: malloc bomb, memory leak, Intel Pentium f00f bug,
land:same ip ports, teardrop by route,ip fragmentation,
nestea, jolt, ping of death,bonk, jolt2 )

6. Secrecy revealed. (eg. cookie, screenshot、
%xwd > filename &)

7. Naming prediction problem.
Symbolic links in /tmp to be appended/overwritten (會被用
來修改、覆蓋可預期檔名的檔案)
( ref: race condition, tmpnam() )
hotmail email url predictable and email content exposing.

8. 病毒、木馬程式 (Trojans)、被修改過的常用工具程式
( ref: Elk cloner, Staog, Bliss, rootkit, logic bomb,
time bomb )




How to avoid , defeat security breaches ?
 Secure UNIX Programming FAQ

How to write secure code.


1. SUID/SGID 等瑕疵程式問題:
==> 寫程式時,即避免使用會有問題的函式,或者在使用較易出問
題的函式時預先處理好傳入的參數、資料。
(ref: 程式碼稽核軟體 rats, flawfinder, its4)

2. 程式接收非預期的輸入值:
==> 在接收任何輸入值前,做好資料的偵錯步驟,其中包括資料長
度的確認,資料是否是合法字元的確認。
(ref: 程式碼稽核軟體 rats, flawfinder, its4)

3. Race condition:
==> 在執行 critical section 的時候,須以各種 locking 方法
確保沒有其他程式能同時存取重要的資料。盡量不在
public /tmp 存取暫存檔案,考慮 /usr/tmp, home 目錄等其他
使用者無使用權限的目錄。使用更嚴謹的亂數暫存檔函式,不要
只用 getpid() 等容易遭到窮舉法攻擊的簡易參數。
(ref: atomic operation, mutual exclusive, bounded waiting,
spinlock, semaphore, disable interrupt, Bakery algorithm)

4. Device driver bug:
==> 盡量以外掛模組方式載入 driver,如此在出問題時較有機會
以移除模組的方式避免安全問題或主機死當。

5. DoS. (Denial of Service):
==> 對於任何電腦資源的使用必須設定上限,例如 process 數目
,硬碟 quota 限制,同時接受(同一來源、使用者)連線的數目
(application layer, tcp udp layer, ip layer...etc),使用
memory garbage collection library, 利用程式語言的
assertion 驗證 program memory resource(stack, heap),對於
使用者來說程式的漏洞、暇疵造成的阻斷服務問題,只有勤加修
補更新程式版本。

6. Secrecy revealed:
==> 程式設計師在使用資源內定的權限時,必須限定預設的權限
大小,以免使用者在使用時不自覺的洩漏資料。

7. Naming prediction problem:
Symbolic links in /tmp problem
hotmail email url predictable and email content exposing.
==> 使用暫存檔案時,必須使用不可預測的檔名,以免資料
外洩、損毀。存取暫存檔時,加上確認檔案為執行程式擁有者的
檢查碼。(ref:race condition, mktemp(), mkstemp())

==> 使用網頁參數當作信件、文件儲存時,必須使用無法預測的、
不重複使用的參數序號產生方法,以避免遭到猜測或窮舉法攻破,
對於存取文件的 URL 參數序號使用也要設定有效時間,當過久未
使用或動作,即自動取消該 URL 參數的有效性。
(ref: md5, /dev/random, /dev/urandom, timeout,
force reload, cookie)

8. Trojans:
==> 使用木馬偵測軟體、網路掃描軟體、掃毒軟體或可確認程式
檔案完整性的軟體,做自身主機的安全檢查。
(ref: md5 signatures, Trusted systems)
(ref: multi-security-level, no read up/no write down)


Protect yourself from Network Spoofing

Network Spoofing from buttom up.

由乙太網路封包,到應用程式層的網路協定假造

*USB port sniffing and replay attack

在生物辨識技術上,有一個步驟是 scanner 的資料到後端資料庫之間傳輸的驗證工作,假如我們可以從中竊取 usb port 上有關某個指紋、眼球虹彩、臉型影像的資料,那麼將有機會利用 replay attack 做資料的重複傳輸,以得到正確驗證結果,通過生物辨識器的檢驗。

*ARP packet and MAC adress spoofing

在一般的 HUB 區網中,甚至連 ARP 攻擊都不必,可以直接進行 IP 層以上的攻擊,但是現行的區網中,幾乎都是使用 switch 的連結,在一般的連結下,在同一個 port 的連線才看得到彼此的封包,要了解到 switch 只有在開機時會有短暫時間的 broadcast 模式,在每個 port 第一次看到的封包,都會記錄為該 port 的區網主機 MAC 位址,在一些較舊的 switch 上,我們可以傳送一個乙太網封包,讓 switch 更新該 port 的 port/MAC address 對映表。

ARP 協定的存在,就是為了乙太區域網路內的傳輸,因為乙太網路所使用的位址並非一般使用者所知的 IP 位址,而是利用 MAC 位址做為傳輸的來源與目的辨識。而知道 MAC 位址後乙太網是可以傳輸沒錯,但是怎麼跟上層 IP 位址銜接起來,就是 ARP 這個協定來負責。

ARP 這個協定的原理就是利用 IP 位址去查詢該 IP 位址對映的 MAC 位址,我們以一個實際的查詢例子來舉例說明:

當 A 主機要在乙太網上傳送給 B 主機時,他會送出一個 ARP query,這個 ARP 的封包包含 B 的 IP,但是沒有 B 的 MAC,直到 B 主機看到這個 ARP query,他就會回應一個 ARP reply,此 B 送出的 ARP reply 就包含了 B 的 IP 以及 B 的 MAC

Host A has IP address IPa and MAC address MACa
Host B has IP address IPb and MAC address MACb

(ARP query)
A 送出封包查詢:
A - what is IPb's MAC address (ARP query) -> broadcast
這個 ARP query 包含了 A 的 IPa、MACa 以及要查詢的 IPb,以及MAC0(00:00:00:00:00:00)

(ARP reply)
B 收到這個 query 後會發出以下封包:
B - IPb is my IP, and my MAC addrees is MACb -> A
這個 ARP reply 包含了 B 的 IPb、MACb 以及目的地 IPa、MACa

=> A 現在知道 B 的 MAC 位址,可以藉此傳乙太網封包(ethernet frames)給 B 了。

在看過 IP 層的攻擊後,相信讀者們已經知道如何進行 ARP 協定的攻擊動作了,沒錯,就是假造 ARP reply 的封包。假設 A, B 要在乙太網上傳輸,我們的主機是 X,我們假造 ARP reply 使得 A 以為 B 的 MAC 位址是 MACx,使得 B 以為 A 的 MAC 位址是 MACx,如此就可以進行 man in the middle attack 了。
(ref: hijacking)

我們再看看之前說針對 A、B 主機的攻擊,A 和 B 並不限定在一般主機上,還可以是 Router,Gateway 主機。如此就可以輕易的控制整個 intranet 的網域傳輸。在實作的方法中,我們可以送出假造的 ARP reply 到所要攻擊的主機上,使該主機自動更新 ARP table,或者是以極高頻率的 ARP reply 封包,使得 switch port 在開機時儲存的 port/MAC 對映更新為我們所要的 port/MAC 對應。
(ref: arp race, DoS)

針對 router/gateway 的攻擊,我們可以假造 ARP reply 讓其他主機以為 router/gateway 的 MAC 為 FF:FF:FF:FF:FF:FF,也就造成 broadcast 的傳輸模式,此時就和在 HUB 中一樣,可以監控所有的區網封包。

如果我們假造的 ARP reply 是不存在的 MAC 位址,就會造成阻絕攻擊。這種情況在 man in the middle attack 之後也會發生,除非攻擊者將原本正確的 MAC 位址再用 ARP reply 更正,否則會使得被假造的雙方無法進行傳輸,直到該假造的 ARP 資料過期或更新為正確 MAC 位址。
(ref: arp entry expire)

某些主機在阻絕式攻擊之後,若是完全死當,則假造方甚至可以加上 IP 的假造,完全取代受攻擊主機。
(ref: cloning, replace entity)

假如你所在的網路環境中, 有可能將 switch 以 MAC spoof 攻擊,使他當機, 那麼可以使用和所要假造的主機相同的 MAC address,讓 switch 以為不同的 port 中有相同的 device 連接, 如此在 switch 丟封包時,就會將原本要送的封包, 同時丟一份到我們所使用的假 MAC 網段的 port, 但須注意這只能做單向的竊聽。

*TCP/IP Spoofing

An Overview of TCP and IP Spoofing
原文作者: Kapil Sharma
原文作者的網址: http://www.linux4biz.net

一個 spoofing 攻擊型態就是假造來源的 IP 位址。也就是冒充別人的一種方法。在大部份的 Unix(包括 Linux)的作業系統上,有許多應用/工具程式在確認使用者時, 都倚靠來源 IP 位址作為輔助, 甚至一些人在為自己網域做安全管理的工作時, 也是以主機 IP 位址來做權限控制。這裡要提出的是, 以使用者來源 IP 來做辨認並不是一個可靠的方法。使用者的來源 IP 可能是假造的。

為了瞭解假造來源位址的過程, 我們將先解釋 TCP 和 IP 做確認的程序, 接著再說明攻擊者如何假造矇騙過關。

當一個 TCP 的連線建立時( virtual circuit ), 每一個 TCP封包都會貼上一個序號號碼, 以做為標示使用。

連線雙方的主機都利用這個序號來做封包傳遞的錯誤檢查和報告。

Rik Farrow 在他一篇名為 "Sequence Number Attacks" 文章中提到有關序號系統的說明如下:

序號是用來告知已經收到資料的確認回應。在 TCP 連線的一開始, client 會送出一個貼有 TCP 起始序號的封包, 但是沒有確認( 當然, 此時也不可能有確認封包, 除非是假造的 )。如果這時對方有一個 server 程式在對方主機上跑, 則 server 端會送回貼有他自己起始序號的 TCP 封包,和一個確認值( client 端送來的起始序號加一 )。

當 client 端收到這個封包時, 他必須送回他自己的確認值( server 端的起始序號加一 )

/*註:

TCP three way handshake:

ISN = Initial Sequence Number = 起始序號;SN = Sequence Number

1. client --- client SYN {ISN} ----> server
2. server --- server SYN {ISN} + ACK SN ({client SYN ISN}
+ 1) ---> client
3. client --- ACK SN ({server SYN SN} + 1) ---> server
real data communication ....
*/

因此, 入侵者必須解決三個問題:

1. 他必須假造一個來源位址
2. 他必須跟攻擊目標的序號確認無誤
*3. 他必須防止假造的 IP 送出連線錯誤的訊息,造成連線中斷

第二點是較困難的步驟, 因為攻擊目標設定起始序號後, 入侵者必須正確的回應才可保有這個連線狀態。當入侵者能猜到這個序號, 他就可以和攻擊目標的序號系統同步, 建立一個有效的連線了。通常我們所用的方法是,用正常的連線來收集對方主機的序號順序,再加以比對並猜出對方主機產生序號的演算法。

第三點通常是用阻絕攻擊法達成,最完美的狀態下是該主機不存在,或當時未上線,但是現實總是比較複雜的,所以攻擊者通常會用阻絕式攻擊,讓所要假冒的主機到目標主機的封包傳送,比攻擊方到目標主機慢就可以了。

(因此當你以為主機遭受阻絕式攻擊只無法上線服務的損失時,其實更可能的是,他要以你的主機 IP 為跳板進行攻擊)

(ref: race, synflood indicate spoofed target! risks of being DoSed)

當然,攻擊者在假造了 IP 之後,是不是就可以攻擊了呢? 這是不一定的,只要再仔細想一次連線的過程,讀者應該就想得到了,沒錯,就算我們把自己的位址 A 假造成了 B ,向 C 要求連線,此時 C 會回應的是 B 的位址,我們又怎麼跟 C 繼續這個連線呢 ?

其實在一些像 SMTP 這種協定下,我們還是可以繼續的,因為這種網路協定的進行,是照一定的程序 (hello、mail from、rcpt to、data、.、quit),我們可以在幾秒鐘的間隔之間,依序送出假造的 B 到 C 主機上,完成假造來源的電子郵件,這點就是 spammer 幾乎無法被查出來的原因之一。

同樣的,還有許多其他的連線也可依樣畫葫蘆使用假造來源的攻擊,這也是目前網路上最常被使用的假造攻擊。

這種假造方法我們稱為盲目式的假造 ( blind spoof ),因為在這整個過程中,完全沒有去管Server C 到底送出什麼資料。
( ref: race, DNS spoof, rpc spoof including r* protocols )

另一種假造攻擊,則是叫做主動式假造攻擊(active spoof),在這個過程中,我們還是跟盲目式假造有著類似的過程,但是我們可以利用竊聽同一區網內的假造位址,或者是利用修改網路路由器的設定,讓 C 到 B 之間的封包變成會流經 A 的路徑,我們可以用 irpas、nemesis、nmap等工具結合來假造 multicast(OSPF、EIGRP)或者是 broadcast(RIP、IGRP)的封包,將資料封包導引到我們可以竊聽的網段。這種屬於需要較多技術與能力才能完成,但是可以做的事也更多(所有 tcp/ip 上層的網路協定!)。
( ref: sniff, man in the middle attack, hijack, route inject )

當然,現在最常被用來假造來源的攻擊跳板,還包括了利用 proxy, socks, wingate server 等服務,這也是常見的方法之一。

*SSH spoofing 應用程式協定的假造問題 (ssharp)

SSH 連線的假造除了利用 TCP/IP 的 hijack 攻擊以外,最近也被發現有 SSH 應用程式層的協定假造問題,第一個是 Protocol 版本訊息的假造,第二個是 host key 的假造,原本在 TCP/IP 的 hijack 攻擊中,會讓使用者看到 Man in The Middle attack 的警告語,在這些變化後的攻擊中更難發覺。

如果在伺服器版本的訊息上,我們假造成 SSH-2.00-ManInTheMiddleHost-SSH ,也就是只支援 protocol 2 的伺服器,而非一般看到的 SSH-1.99 同時支援 protocol 1,2 的版本訊息,假設使用者之前都只使用 SSH protocol 1 做連線,我們假造的伺服器 Host key,就會讓連線變成是新建立的 SSH 連線,即使原本已經有該伺服器 protocol 1 Host Key,但因為協定版本由 1 變成 2 的關係,使用者較難注意到此差異。

同理,我們也可以由 protocol 2 變為 1 ,單看該使用者習慣使用的協定版本來做改變。

在 SSH protocol 1 中是用 hostkey 為 session key 加密使用,但是在 SSH protocol 2 中
hostkey 是用來做為訊息完整性的確認(Message Authentication Code),而在 MAC 的演算法選擇裡,是在版本訊息之後,透過類似版本訊息的作法來通知 client,在 ssharp 實作的假造攻擊中,會對 client 送出 RSA key ,這個 RSA key 在真的 server 上是沒有支援的,此時使用者就會看到新建立的 SSH 連線,而不會看到 Man in The Middle attack 的警告訊息。和真實 server 的溝通可能是 DSA 或 RSA 兩種演算法,但我們假造的 SSH server 只會送出 RSA 演算法的 key。

依照 RFC 的規定,SSH2 server 在收到 client 所列舉的多種演算法時,應該是使用第一個演算法,但是 ssharp 的假造 server 會選擇第二種演算法,也就會造成 client 出現 yes/no 的提示,而非 Man in The Middle attack 警告訊息。

/*註:
1. hostkey 是每一台 SSH server 都必須有的 public key,如果支援不同的 public key algorithm 則必須針對每一種 algorithm 各提供一把 hostkey。

2. hostkey 的功用是供 SSH client 確認該 SSH server 是他所宣稱的主機時使用。也就是 SSH client 必須先確定該連結的 SSH server 的 hostkey fingerprint 。

3. 保存 hostname 跟 hostkey 對映的方法一般有兩種: 一種是每個 client 端都保有每個所要連結的 hostname 和他所擁有的 hostkey 對映;另一種是透過 CA 作認證,client 端只保有 CA 的 hostname 與 hostkey 對映。

4. 一個 public key 的 fingerprint 就是指用 SHA-1 之類的 hash 做出十六進位的數字。方便供確認使用。
( ref: ssh-keygen -l ,再輸入你的 hostkey 檔案位址,/etc/ssh/ssh_host_dsa_key.pub under freebsd )
*/

ssharp 是修改原本的 SSH server 而來的假冒 server,他會接受任何 username/password 的登入,並開啟 shell 讓使用者使用起來像是連到真的 server,但是實際上只是在 ssharp 的 server 上使用 ssharp 的 pty 而已,這個作用就像 screen 的用法,並且也會被用來劫持/控制你的連線。
(ref: USE_MSS feature)

針對 SSH 應用程式協定層的攻擊,有以下幾種反制對策:

1. 限制 ssh client 使用時的協定版本
(ref: ssh -2 host)

2. 使用 SSH protocol 2 的 public key 認證,因為假造者無法利用真正的 server public key 對 client 做認證,因為兩者的版本是不同的,會出現明顯的 public key failed 錯誤訊息。
( ref: ssharp 的特性,對 server 和 client 必是以不同版本的 SSH 協定進行溝通 )

3. Double check your hostkey fingerprint :)

*可能會遭受假造攻擊的程式有下列幾項:

1. RPC ( 在 udp 協定上的 Remote Procedure Call 程式 )
2. X Window system ( all application using only ip based authentication )
3. R 系列的程式 ( wildcard trust hosts, rsh, rlogin, rexec,... )
4. OpenSSH 3.4 之前的版本

*TCP/IP 和 ARP 協定相關的工具:

1. Mendax (Linux 平台): Mendax 是個容易上手的 TCP 序號預測及 rshd 位址假造的工具。

2. spoofit.h : spoofit.h 是一個文件完備的 library, 可以讓你把 IP 假造的功能加到其他程式中。

3. ipspoof : ipspoof 是個包含了 TCP 及 IP 造假的工具。

4. hunt : hunt 是一個提供許多造假功能的網路竊聽軟體(IP, ARP)。

5. sniffit : 這是在 unix 平台上相當普及的網路竊聽軟體,他最有名的一個功能叫 touch of death,可以任意切斷竊聽中的任何連線!

http://reptile.rug.ac.be/~coder/sniffit/sniffit.html

*6. dsniff : 這是入侵者的最愛,因為他包含了 arp, dns, mac address 等假造功能,tcpkill
可以切段竊聽中的任何 tcp 協定的連線,AOL Instant Messenger, ICQ 2000, IRC, Yahoo!
Messenger chat 等協定的竊聽,也可以看到目前使用者在瀏覽的網頁,重點是還可以藉由dnsspoof 來對 ssh (protocol 1) 以及 web https 的連線監聽或甚至取代連線(hi-jacking)。

http://www.monkey.org/~dugsong/dsniff/

7. ARPoison : 使用者可以直街指定來源與目的地位址,來假造ARP reply 封包。
http://web.syr.edu/~sabuer/arpoison/

8. ARP-SK : 利用假造的 ARP request/reply 達到 spoof/hijack/DoS 主機連線。
http://sid.rstack.org/arp-sk/ 有極為詳盡的乙太網封包與 ARP 封包解說!

*9. Ettercap : 使用者可以竊聽 IP/MAC/ARP Public ARP 傳輸。並且可以在連線中植入任意字元、竊聽加密的 SSH 連線、搜集密碼、作業系統的判別、切斷連線等功能。
http://ettercap.sourceforge.net/

10. Parasite : 這是一個 daemon 程式,可以在收到 ARP request 之後自動發送假造的 ARP reply,在使用夠久的時間之後可以對整個網段做 man in the middle attack,監控整個區域網路。

值得注意的是 Parasite 並不會在攻擊後發送正確的 ARP reply 封包還原網路原狀,因此會導致阻絕式攻擊,直到他所假造的紀錄過期或特意的還原 ARP 紀錄。
http://freeworld.thc.org/releases.php?q=parasite

( ref: dsniff, arp0c, link layer attack under swith )

11. irpas 目前支援 cdp、igrp、irdp 等路由資訊的假造,並可以假造 frame 的乙太網路封包、配合 nmap 等 port scanner 工具的路由假造工具。

*針對 ARP 協定的 MAC 位址假造反制、偵測方法:

1. 使用 static IP 和 MAC 位址的對映,避免被 arp spoof 更動為假造的 MAC 位址。
(ref: static arp entry, arp -s/S under FreeBSD)

2. 使用 Reverse ARP,找出對映到同一個 MAC 位址的 IP 來源。
(ref: RARP maps MAC to IP, ARP maps IP to MAC)

3. 使用 arpwatch 觀察區網內的 MAC 位址變動情形。這是最有效的偵測方法之一。

4. 使用有 Port/MAC Binding 功能的 switch,避免別的主機更動 port/MAC 的對映。但需記住 switch 並無法防止 arp spoofing 對其他主機的影響。

5. 避免使用 DHCP 網路架構軟體,因為 arp spoof 的攻擊在 DHCP 環境中較難偵測到。
(需區別一般要求與惡意的要求)

*幾種防堵 IP 造假攻擊、察覺劫持攻擊的方法:

1.避免使用來源位址來做身份確認的動作。最好是整個作業系統堤供以密碼學為基礎的確認方法。
(encrypted file system)

2.在 Router 或防火牆上( 建議盡量在 router 這層就擋 )擋掉來自 internet 卻說他是以 intranet IP 位址為來源,或者是來自內部網路,來源卻是外部網路位址的網路封包。
(ip spoof)

3.如果必須允許 intranet 外界的可信任主機連線, 最好在 router 或 gateway 這層就啟動加密連線的功能。
(ref: ipsec, vpn)

4. SSH 連線不要使用 protocol 1,只使用 protocol 2 的連線,最好先確定 server side 的 public key finger print :)
( ref: ssh-keygen -l ,再輸入你的 hostkey 檔案位址,/etc/ssh/ssh_host_dsa_key.pub under freebsd )

5. HTTPS 連線如果常常會在同一 server 的連線時出現新的 certificate 需要更新承認,那麼若不是這台 server 真的太勤勞就是有人正在看、劫持你"以為"是安全的連線。

6.儘快將 DNSSEC 以及 IPSEC 使用到你的網路架構中,尤其是使用 VPN 的使用者,如果只是相信 application gateway(不管有沒有加密、認證)仍有可能會遭受到劫持法攻擊。

*結論:

假造來源的攻擊是危險而且難以偵測的。當這項攻擊方法越來越普及時, 要防止這類攻擊的最佳方法,就是在網路協定的最底層開始,採用密碼學認證的身份確認方法,來保護你的內部網路。

*參考:

1. 原文架構採自於 Kapil Sahrma 的 TCP and IP spoof 文章

原始文件可以在以下網址得之:
http://www.linux.com/security/newsitem.phtml?sid=11&aid=8999

Kapil Sharma 是一個 Linuix/Internet 的電腦網路安全顧問。他已經在各種 Linux 系統上有四年以上工作經驗, 你可在他的網址 http://www.linux4biz.net 上得到更多有關他的資訊。

2. 有關 ARP/MAC spoof 的部份是譯自 Sean Whalen 的文章
An introduction to ARP spoofing by Sean Whalen

3. 更詳盡的 TCP/IP 安全性說明可以參考底下的連結
http://www.linuxsecurity.com/resource_files/documentation/
tcpip-security.html

4. 應用程式的網路協定假造是譯自 Sebastian Krahmer 的文章

SSH for fun and profit
Sebastian Krahmer ( krahmer at cs.uni-potsdam.de )
the paper http://segfault.net/~stealth/ssharp.pdf
the Proof of Concept http://stealth.7350.org./7350ssharp.tgz
5. 另一個應用程式的網路協定假造,譯自 Mike Benham 的文章微軟網路瀏覽器 Internet Explorer 的 SSL 弱點

IE Certificate Chain Exploit by (Mike Benham / moxie at thoughtcrime.org)
the paper
http://www.thoughtcrime.org/ie.html
http://www.thoughtcrime.org/ie-ssl-chain.txt

6. TCP/IP 序號的解析與說明
lcamtuf at bos.bindview.com
http://lcamtuf.coredump.cx/newtcp/

7. 有關 USB port sniffing and replay attack
http://sourceforge.net/projects/usbsnoop/

nmap 網路掃描

原作者為 Rich JanKowski (rich at linuxsecurity.com)
2/20/2000/17:33

1. 尋找目標 - 縮小範圍

當你要檢測一個網域中有哪些機器會回應 ping 的 ICMP echo 時, 可使用以下 nmap 指令:

ICMP_REQUEST <=> ICMP_ECHO

nmap -sP 192.168.0.1/24

因為有些作業系統現在可以設定不回應 ping 的 ICMP 封包(如linux), 你可以用 TCP 的協定來輔助上面所得的主機列表,而 TCP 的協定中, 有一項是指定 port 的參數,所以我們可以專門掃 80 port (一般是跑 htttp/web 服務):

TCP_SYN <=> TCP_ACK or TCP_RST

nmap -sP -PT80 192.168.0.1/24

而掃描網域的動作除了以上所述外,nmap 還提供了 UDP 和利用更高段的 TCP 協定來掃描,這些留待讀者自行去閱讀 nmap 的指令說明.

2. 尋找目標 - 針對單機的掃描

針對單機時,我們直覺的想到用 TCP port scanning 的指令去掃描看那台主機開了哪些 port 對外, 指令如下:

nmap -sT 192.168.0.1

但是這個 -sT 的參數,在 nmap 的 implement 裡是用 connect() system call 來完成的,因此你在得到對方資訊的同時,也在對方主機的 daemon 上留下了可觀的紀錄資訊,如你的位址,主機名稱,如果你有裝 ident 軟體的話還可能留下使用者帳號的資訊.

也因此,如果我們要取得對方主機的名稱,但是又不想留下自己主機太多的資訊的話,就可以用剛剛所提到更高段的 TCP 協定特點性達到同樣目標, stealth scanning.

這個方法就是騙對方說我要進去,但又沒真的進去要掃描的 port, 一般 TCP 協定是由TCP_SYN, TCP_ACK, TCP_ACK2, TCP_ACK3...
..直到 TCP_RST 出現才算完成的,但是這裡我們並不按協定走, 當我們送完 TCP_SYN 給對方,對方又回傳 TCP_ACK 時,我們就可以知道這個 port 有開啟,否則的話對方回傳的會是 TCP_RST, 表示這個 port 沒有開啟,要做到 stealth scanning 的指令如下:

nmap -sS 192.168.0.1

要注意的是,這個方法因為太常被使用,幾乎每個 IDS 系統都會紀錄這種封包,因此,當你要掃描的是有在注意網路安全的主機時,建議你試試更高段的 stealth FIN,X'mas tree 或 NULL scans.

這三種方法就是送出加料 封包到對方 port, 當這個 port 沒開啟時,主機會送出 RST 封包來,而有開啟的 port 則不會理會 FIN 封包,不過要注意的是, 因為 Microsoft 的 TCP 協定不同於公定的協定, 用這幾招對 Microsoft 的主機就沒效用了.

stealth FIN 在封包上加了 FIN flag,他的指令如下
nmap -sF 192.168.0.1

Xmas tree 在封包上加了 FIN, URG, PUSH flag , 他的指令如下
nmap -sX 192.168.0.1

NULL packet 在封包上就完全沒設 flag, 他的指令如下:
nmap -sN 192.168.0.1

3. 單機掃描 - 變化型 UDP

除了一般 TCP daemon 的程式常出漏洞外, 還有像 syslogd 用到 UDP 封包, NFS daemon, NIS daemon 等用到 RPC 協定的 ports 也蠻常見的喔,在這邊的做法是送出 0 byte data 的 UDP 封包給對方, 如果對方回傳 port unreachable 的訊息, 就表示這個 port 沒打開,而且程式還會視對方回傳 error 的速度適時的減慢送出的速度,也因此 UDP 掃描會慢一些,使用 UDP 掃描的指令如下:

nmap -sU 192.168.0.1

4. 鎖定目標 - 確定對方 OS 型號及版本

當要進攻對方主機時,除了知道有哪些 daemon 在跑以外, 如果能知道他是跑什麼 OS ,那不就可以直接套用某個 OS 的 exploit 去試各種 architecture 的 shell code 就好了嗎?

現在支援最多 architeture 的OS也才支援到 6 種, 最多試六次就可以進攻, 這樣不是更接近敵方了嗎?

但是 OS 要怎麼辨認? 我們可以想想人類怎麼互相辨認? 臉孔, 但是, 可以戴面具, 面具在市面上幾乎隨手買得到( 修改 login prompt, 修改 daemon message ...), 那指紋呢? 一般人不可能無聊到隨便改指紋吧,對, OS 因為在 implement 時也會有針對一些網路協定上面沒定義的部份而有"特色",更有一些 OS 連 implement 的協定都跟別人差一大截 ( Microsoft ),所以我們只要搜集足夠的 OS finger print 就可以他回傳的封包判定對方的身份了.

採取 OS finger print 的技術部份,可以用 FIN 封包送給對方, 看看他會回傳什麼,或是在 SYN 封包上加上協定未定義的 flag 看對方的反應,或是直接採樣他的 TCP 起始序號等等測試,如此測試,再加上採樣的動作以判定特定 OS 的 finger print,也因為 TCP 起始序號方法的使用,判定OS的同時也要運用到 port scanning (-sS)的動作,而非ping scan,使用 OS finger print
的指令是 -O 選項:

nmap -sS -O 192.168.0.1

當你使用 -O 選項時,你會注意到另一個訊息 "TCP Sequence Prediction", 這也告訴我們這個 OS 所 implement 的 TCP 是否可靠,如果 TCP 序號編排太簡單以至於我們可以預測他的 TCP 序號甚至複製出他的序號順序,那麼我們就可採用劫持法,直接取代原本和對方連線的連線,有興趣的人可以找 "session hijacking" 的 keyword 參考看看.

有關 -O 選項所會進行的測試列表如下:

Tseq: 有關 tcp 封包序號順序的方式。
T1 是送出 SYN 及其他 flag 的封包到已開啟的 port
T2 是送出 NULL 及其他 flag 的封包到已開啟的 port
T3 是送出有 SYN, FIN, URG, PSH 等 flag 的封包到已開啟的 port
T4 是送出有 ACK flag 的封包到已開啟的 port
T5 是送出 SYN 封包到未開啟的 port
T6 是送出 ACK flag 的封包到未開啟的 port
T7 是送出 FIN, PSH, URG flag 的封包到未開啟的 port
PU 是送出 UDP 封包到未開啟的 port

5. 鎖定主機 - 預估權限 ident

除了確定能夠進入對方主機以外,還能知道些什麼? 權限的大小, 以 UNIX 的權限機制來看,是以使用者來分別使用權限,那可能從網路上就知道對方跑的 daemon 權限大小嗎? 或者說,我們能知道對方是以哪一個使用者權限在跑的嗎? 可以, 感謝 ident 這個平時沒什麼用,現在派上用場的協定,只要我們問他(對方又剛好有開這個 daemon ),他就會回答了.

也因為 ident protocol 是以 tcp 協定的在跑的,我們要知道對方使用者時必須以 TCP 的掃描方式達到目標,指令選項是 -I:

nmap -sT -p 80 -I -O 192.168.0.1

如此就可得知對方的 web server, OS, 及權限,當然如果是 root, 那只能怪這個管理者太粗心大意了.對於那些想要用 ident 軟體, 又怕洩露太多資訊的管理者,請用 firewall 軟體(如 ipchains) 限制連線的網域吧.

6. 更多花樣- 任君挑選

"-PT" 選項, 這是搭配 ping scan 加上 TCP scan 主機或網域的時候使用.

有些主機擋住 ICMP 和 TCP 掃描時,會造成 nmap 無法使用的情況發生,這時候就可以用 "-P0" 取消 nmap 一開始的 TCP 掃描和 ICMP_ECHO 測試動作.

"-v" 打開詳細程序描述可以讓你知道 nmap 做了些什麼動作,而不用只是呆等結果出現.

"-p" 可以指定多個 ports, 讓你同時掃描特定 ports,集中火力

如以下指令可同時掃描 port 21/23/53/80 並判定 OS 型態:

nmap -sS -p 21,23,53,80 -O -v 192.168.0.1

7. 結論 - 快點開始用 nmap 檢查自己的網域安全性吧!

參考:https://nmap.org/

無線網路的安全問題

無線網路的安全問題

1. 無線網路簡介

IEEE 對於無線網路制定了 802.11 標準協定

有關不同無線 Access Point 之間 Hand Over 的 802.11f (roaming),以及不同傳輸頻率、速度的 802.11[a,b,g]

協定名稱 佔用頻率 標準頻寬 實際傳輸效能
802.11a 5GHz 54Mbps
802.11b 2.4GHz 11Mbps 4 - 6Mbps
802.11g 2.4GHz

802.11b 有兩種運作模式, 一種是無線網卡和 AP 之間建立的網路, 另一種是稱為 ad hoc 的client 對 client 傳輸模式, 在 ad hoc 模式中, 每組使用無線網卡的用戶端均需要(兩兩)在對方的訊號範圍內.

1.1 偵測無線網路的方法.
(a). 主動式偵測
在用戶端送出連線要求, 並檢查是否有回應封包.

使用軟體: netstumbler
軟體平台: MS Windows,
軟體網址: www.netstumbler.com

(b). 被動式偵測
用戶端不傳送封包, 只解析所收到的 802.11 封包.
幾乎無法防備.

使用軟體: Kismet, Wellenreiter, Airsnort
軟體平台: Linux/BSD, Linux, Linux
軟體網址: www.kismetwireless.net
www.remote-exploit.org
airsnort.shmoo.com

RFmon 模式的無線網路卡:
Cisco cards: 在硬體層就有內定的 channel hopping 的頻道掃描功能. 也因為使用較快的頻道掃描, 在某一個頻道飽和時,CISCO 的網卡也較容易遺失封包(missed packet), 但在整體效能比較上還是較高的.

一般常用來做網路掃描的卡是用 CISCO AIRLMC350, 這張卡還包括兩支外接天線, 傳輸達到 100mW, 敏感度 -95dBM (一般 prism2 卡是 20-30mw, -80dbM) Prism2 cards: 需要由軟體部份做 channel hopping, 因此在多做頻道掃描的額外負擔下, 竊聽主機的負載較大. 通常我們用的無線網路竊聽軟體, 都會有包括掃描所有 802.11b 頻道的 channel hopping 程式模組. (Kismet 使用 prism2 hopper 每秒切換三個頻道)

Orinoco cards: 支援外接天線, 掃描頻道的功能在 Linux 平台上,有相關的 card driver patch 可使用(需相對應韌體支援)。

外接天線:
在進行 War-driving 時, 因為車體本身就是一個金屬屏蔽, 外接天線可以為你增加約 0.5db 的訊號強度.

2. 無線網路的媒介及實體網路(Medium Access Control and Physical layer)

一般家用無線攝影機,無線電話和微波爐的波段通常和 802.11b 同樣佔 2.4GHz 頻率,在使用上也容易成為干擾源之一,在訊號強弱的考慮上, 不是訊號越強就越好,需考慮訊號越強,有效距離越遠,也越容易被探測攻擊.

在訊號安全上,可以考慮金屬屏蔽阻擋外來干擾(同樣對外也受影響)或是考慮點對點的紅外線傳輸,因為 802.11b 是無方向性而 IR 是有方向性的傳輸方式.

802.11b 封包的 Header 資訊,包含 source/destination MAC 位址,相關的 Access Point 資訊,通訊的流向,使用的頻道,SSID, WEP ,所支援的傳輸速率. (CISCO AP 還包括額外的 status 欄位來說明此 AP 提供的功能以及此 AP 的所在位置)

802.11b 封包的種類:

2.1 Beacon 封包
一般的無線 AP, 都會不斷的傳輸 Beacon 封包, Beacon 封包內會包含 SSID 訊息, 支援的傳輸速率, 此無線 AP 的 MAC 位址. 一般的 Beacon 封包速率是在 6~10 Beacon packets/sec.

為了安全性, 現在無線 AP 也提供了不包含 SSID 值的 Beacon 功能, 這種 SSID cloaking 的立意在於: 用戶端除非事先知道所使用 SSID, 否則無法使用這個無線 AP. 但是聰明的讀者一定想到了, 等到有用戶要連接時, 就算有 WEP, 還是可以聽到所使用的 SSID :)
(ref: dedicated sniffing)

*另外也可以利用強波干擾 802.11b 的 2.4GHz 頻率(請參考 FCC 規範),當干擾強到無線 AP 或無線網卡需要重新 re-join, 此時就可以主動聽到 SSID;這種方法造成的斷線情形,對用戶而言也可當作是可能被探測的警訊 :)

2.2 Probe response 封包
當用戶端想要連上網路時,他會依據收到的 Beacon 封包,送出 probe response 封包,其中會包含: 所要加入網域的 SSID、所使用的傳輸速率。

2.3 Data 封包
通常是封裝在 802.11b frames 中的 TCP/IP 封包

2.4 Ad hoc 封包
和 Data 封包相同, 但屬於網卡對網卡傳輸不需繞經無線 AP.

BSSID: mac address of the BSS
SSID: 辨示該 BSS 的 32 bytes 字串
DATA RATE: 包括 1Mbps 2Mbps 5.5Mbps 11Mbps
HR/DSSS: High Rate Direct Sequence Spread Spectrum
(high rate 5.5Mbps/11Mbps)

3. WEP(Wired Equivalent Privacy) link layer encryption
通訊加密協定

WEP 所加密的, 是指 data packet 的部份, 並未包括 join, beacon, probes 等控制訊號封包加密 :)

因為共用 private key 的特性, 使得原本 key length 已經不足的 WEP 更加讓人憂慮其安全性.

使用 RC4 演算法的弱點在於時間強度太弱, 竊聽軟體在幾小時內收集足夠封包就可以完全破解所使用的 WEP 加密傳輸(傳輸流量越大, 相對所需時間越少)

為了補強 WEP 相關弱點,已經有許多協定已經完成改版修正。

由 WiFi 聯盟所提出的 WEP 暫時替代方案 WPA(WiFi Protected Access),是屬於 IEEE 制定中的 802.11i 安全標準的子集合,其中包括了 802.1x 的認證系統 (EAP)與 TKIP(Temporal Key Integrity Protocol),WPA 並非 IEEE 的標準協定,而是 WiFi 聯盟各公司在 802.11i 未完成前的暫時解決方案。

與一般用戶相關的地方是有 pre-shared key 機制,需要在 AP 與用戶端分別輸入預設密碼,之後的使用,便可藉此 pre-shared key 計算出要對封包加密的加密金鑰,並且在用戶使用當中,定時重新產生加密所需金鑰,以避免重複使用加密金鑰的弱點。

完整的 TKIP 除了 pre-shared key 以外,還包括 per-packet key mix、訊息完整性 Michael (MIC) message integrity check、有 sequence 規則的 extended initialization vector(IV)、重新產生加密金鑰 re-keying 等功能,彌補已知的 WEP 協定弱點。

認證方面 WPA 也是採用 mutual authentication 的 EAP 方案。

4. EAP 認證協定
MAC 位址認證極容易被竊聽並假造使用, 因此 MAC filtering 位址認證幾乎等同無用。

現行 802.1x 考慮使用 EAP 協定做為雙方認證使用可以加入其他 plug-in 的解決方案。例如: CISCO LEAP 提供額外的登入認證功能,Certificate,甚至是 PKI 環境

目前各廠商正為了網路假造衍生的各種攻擊,提出一套認證協定,原本運用在撥接等點對點連線的廣泛認證協定 (Extensible Authentication Protocol EAP),已經在 RFC 2284 中有所規範。

認證使用的演算法,則由各網路裝置自行決定。這份 802.1x 協定,包括了 Port Authentication Entity PAE ,這個協定的使用者分別是: 無線網路卡端,wireless AP 端,及後端認證伺服器 RADIUS。

認證的演算法,可以使用一般的帳號密碼機制,配合 challenge response 機制,也可以使用 Certificate 機制,只要使用者端和 AP 端以及後端認證伺服器都有支援即可。

802.1x 探討的安全問題,事實上不只是無線網路安全問題,就連有線乙太網路也充滿著 tcp/ip arp spoofing 等問題,基本上,你能夠作到假造,你就可以扮演雙面人(Man in the middle)完全控制別人的連線,這是現行網路協定的弱點,也是 ipsec 極需實作的原因之一。

IP 層以上的 VPN 實作都還是會受到假造攻擊。

簡而言之,現行 link layer 以上的網路協定,都沒做到 client server 雙邊認證,即使上層有認證,還是可以用底層的假造動作去讓你以為連到真實伺服器,而不自覺。

而 802.1x 的 EAP 是要在 client, AP(server) 之後還掛一個 authentication server,完整的 EAP 包含:

client --> AP(server) authentication --> authentication server

讓 AP(server) 端(其實是 authentication server)告訴 AP 可以確認 client 無誤,才允許他從這個 AP(server) 連上網路。

馬里蘭的研究報告[3]指出,你一開始的單方 (asymmetric , 不包括 client 確認是真實 server 的步驟 ) 認證,可以放一個 Middle Host 把你破掉阿。

即使是認證之後,因為 EAP 協定的不完備,假造端可以趁機再送一個 faked-AP address 給 client 讓他跟真的 AP 認證完後,卻還是連到 faked-AP 端,而 faked-AP 再連到真的 AP 端完成假造的連線動作。

即使使用 EAP-TLS ,但沒有做到相互認證還是會有同樣的弱點。

到最後他說這些假造的動作,如果遇到有做 message authentication 的 EAP-MD5 跟 EAP-TLS 就無效(因訊息有加認證),但即使你有 mutual authentication 還是可以用同樣方法達到 Denial of Service...

又 EAP 已經有許多可以做雙邊認證的加強版協定 (EAP-TLS, EAP-TTLS, EAP-PEAP, WPA) ,就是在 authentication server 確認完 client 之後,client 再對 server 做確認的動作,而雙方都會有一個共享 (symmetric, shared secret) master key,所以在協定實作完整的狀況下,應該就可以免於 spoof/hijack 等攻擊。 DoS除外 :)

5. 802.11i
802.11i 與 WiFi Protected Access 的差別在於(WPA 所缺乏的功能): secure IBSS, secure fast handoff, secure de-authentication and de-association, enhanced encryption protocol(如: AES-CCMP)

6. 軟體層防護措施
WPKI
IPsec
SSH, ssltunnel telnet/ftp/http ...etc
沒有支援認證功能的無線 AP, 也可以考慮 NoCat 安全認證防護 (www.nocat.net)

訊號干擾式防護: 發送假造無線 AP 的軟體防止 War Driving/Flying 式的攻擊,該軟體將會產生 53,000 個假造的無線 AP beacon 封包,讓入侵者難以辨別真實的 AP,藉此達到一定的安全性。

但此法在訊號強波干擾攻擊法下仍可藉由聽取 client 端,而非 AP 端封包遭破解。

測試環境: Linux/Perl5.6+/Prism2,2.5,3 802.11b 無線網卡
http://www.blackalchemy.to/project/fakeap/

7. 實際試驗步驟與結果

硬體設備:
Cisco 無線網卡,Magmount 天線, Garmin GPS
掃描軟體:
Kismet 軟體

實際掃描結果是 448 個無線網路, 其中只有 26% 有啟動WEP 加密, 有 75 個無線 AP 是使用出廠內定設定值. 所竊聽明文資訊如下:

email 信件, 線上購物的信用卡資訊, 網路芳鄰傳輸, uPNP 傳輸, 用戶包括一般公寓家庭用戶, 法律顧問公司, 網路書店, 新聞報社.

發現弱點除了包括明文資料外洩, 也包括不完整的網路認證, 造成接收訊號者可以隨意登入(公司)防火牆的內部網路.

參考文章:

1. yentingkuo.bbs at bbs.mgt.ncu.edu.tw 於
tw.bbs.comp.security
所寫 "Re: 無線區網是否安全?" 系列文章。

2. Cisco Aironet Response to University of Maryland's
Paper, "An Initial Security Analysis of the IEEE
802.1x Standard"

3. "An Initial Security Analysis of the IEEE 802.1x
Standard" Arunesh Mishra and William A. Arbaugh
{arunesh,waa} at cs.umd.edu
http://www.cs.umd.edu/~waa/1x.pdf

4. Comments on“An Initial Security Analysis of the
IEEE 802.1X Standard”

5. The comprehensive guide to 802.11b wireless Neworks
by Dragon

網路環境側寫 Network mapping/profiling

網路環境側寫 (Network mapping):

主動式:
ICMP sweeps, ICMP OS detection
firewalk, nmap

防護機制:
block most ICMP, block packets with TTL=0, 1

被動式:
manually from public resource, automated-> siphon

防護機制:
policy on publishing and posting, egress filtering

分散式攻擊:

基本模式:
client ---command--> server ---command---> agents

進階模式 一:
attacker ----forged ICMP timestamp requests---> target
target ----ICMP timestamp response----> fored
(reply sniffed by attacker)

進階模式 二:
-----> attack node 1 --- | | master --------> attack node 2
------attack(probe)--firewall-> target | -----> attack node 3 ---|

target --firewall--replies---sniffed by master or upstream host--
->?

防護機制:
ingress, egress filtering, IDS inside and outside firewall
traffic log and analysis

VPN and Traffic pattern masking:

SMTP, DNS, HTTP traffic (hiden in plain text sight), and
combination

防護機制:
egress filtering, logging, network dumps and analyses

入侵偵測系統 IDS(Intrusion Detection System)

*名詞:

入侵偵測系統 IDS(Intrusion Detection Systems)
網路型入侵偵測系統 (Network-based Intrusion Detection Systems)
主機型入侵偵測系統 (Host-based Intrusion Detection Systems)
應用程式型入侵偵測系統 (Application-based Intrusion Detection Systems)

為了方便,以下將以 IDS 來代表入侵偵測系統的簡稱。

網路型入侵偵測系統(以下以網路型 IDS 簡稱)
主機型入侵偵測系統(以下以主機型 IDS 簡稱)
應用程式型入侵偵測系統(以下以應用程式型 IDS 簡稱)

*前言:

在一個網路防禦網裡,IDS 並不能保證你所在網域的安全性,通常 IDS 需要與防火牆、安全人員所制定的安全策略、網路弱點稽查、權限稽核做結合,才能對整個網域做完整的保護措施。

*正題:

一個 IDS 的主要功能有三點,第一是監視目前狀況,第二是偵測的動作,第三是反制方法,而以下所會談到的,主要是第二點的部份,關於監視的方法與原理,請有興趣的讀者自行查閱 sniff/sniffer/sniffing/broadcast 等關鍵字。而要達到這三種功能,我們可以從異常狀況的發生、攻擊事件的確認、可疑事件的綜合分析等方法去達成。

大部份的入侵偵測系統都是以特徵模式(signatures)來辨別是否為蓄意的入侵或有攻擊的意圖,在網路封包的分析上,也開始走向網路規格協定的比對。以採集資料的方式來區分的話,可以將入侵偵測系統分為以監控網路封包為主的網路型IDS、以監控系統紀錄檔來做判斷的主機型 IDS 、以監控應用程式接收值做判斷的應用程式型 IDS。

應用程式型 IDS 主要是因應網路攻擊事件中,光是針對應用程式而使用的攻擊就佔絕大部份,而應用程式輸入值更是攻擊事件的關鍵要點,因此現在出現了針對應用程式接收值做確認的 IDS 。

網路型 IDS:

(A). 運作方式:

在網路的必經節點上過濾所有封包,並即時將這些封包加以分析比對,比如分析封包 header 的資料時,可以偵測到如 source route、out of band、fragmented packet(teardrop) land(same ip, port)

等攻擊,在分析封包內容時,可以偵測到如木馬程式的特定指令、如含有 shellcode 的攻擊程式、含有特定 cgi/php/asp 程式漏洞的特殊指令,這些都可以用最簡單的字串比對等方法來做為攻擊特徵 (signature) 的比對,例如 shellcode 部份可以用累計超過五十個 NOP 指令比對;比對 /etc/passwd 字串以表示有人試圖擷取、修改密碼檔。

在做分析比對的模組上,有以下四種的攻擊特徵比對模式:

(1). 特殊的字串、位元組及特徵值的比對、是否符合網路協定規格

(2). 事件發生的頻率,是否超過所設的門檻值

(3). 可疑事件的關聯性

(4). 統計結果上的異常例外數值 (異於往常的行為模式 *chjong*)

而在比對出符合的攻擊模式後,反應模組會有通知、警告以及做出反制行動等功能,通常會是通知管理者、切斷可疑連線或紀錄可疑連線以做為攻擊證據搜集、研究用。

(B). 網路型 IDS 相對於主機型 IDS 的優(缺)點:

(1). 集中注意於一網路節點:

網路型 IDS 因為只需設置在一網路必經節點上,而不像主機型 IDS 必須設置於網路上的每一台主機,在管理和成本考量上都是較理想的。

(相對的,若只設網路型 IDS 也會因為只靠唯一一層防護而需要冒較高的風險,而且網路型 IDS 如果沒有與應用程式結合運用的話,一遇到加密的點對點連線就沒輒了)

(2). 攻擊者較難除去進行攻擊後留下的封包證據:

因為網路型 IDS 所採取的是即時收集封包,攻擊者要抹滅曾經進行的攻擊證據更加困難。而這些收集到的封包證據也有助於辨認攻擊者。而在主機型 IDS 上,通常他們所用的紀錄檔或是稽核檔案,都可能會被攻擊者入侵後修改,而造成主機型 IDS 失效,甚至誤導之後的稽核檢查動作。

(3). 即時反應,減緩攻擊者造成的傷害:

因為網路型 IDS 所採取的是即時收集封包,可以在分析比對後即時通知、反應,避免給與攻擊者過多時間進行更進一步的攻擊行動。比如當一個惡意的 tcp 連線被偵測到時,網路型 IDS 可以隨即送出一個 tcp reset 封包以截斷這個連線,在一個惡意 udp icmp 連線中,隨即送出 icmp port/destination unreachable 封包以截斷這個連線。主機型 IDS 因為是採定時檢查的方式,容易在反應之前就遭受到阻絕攻擊而導致主機當機、或無法繼續運作、即時反應。

(ref: spoofing!)

(4). 較大的彈性空間:

網路型 IDS 可以選擇和主機型 IDS 一樣放在防火牆內部;但是也可以選擇放在防火牆外部,這點也是主機型 IDS 無法做到的,而此時無論成功通過防火牆或被防火牆擋下的攻擊事件,都會被網路型 IDS 偵測、紀錄下來,以獲得更多關於攻擊者的資訊。

除此之外,網路型 IDS 也不需要像主機型 IDS 要考慮到主機平台是否支援此 IDS 的因素。

(5). 匿蹤、隱形的能力:

相對於主機型 IDS,網路型的 IDS 可以不設定網路介面的位址 (IP address),也就是達到隱形於網路,同時又能截取所有網路封包的資訊。而主機型 IDS 可能就是攻擊者的攻擊目標之一,攻擊者可能針對主機型 IDS 重要的檔案進行移除或更改。

主機型 IDS:

(A). 運作方式:

檢查主機所收集到的系統紀錄檔資料,以找出可疑的攻擊資料。在收集到新的紀錄資料時,IDS 比對可疑的攻擊模式,若有符合攻擊模式特徵(比對模式同網路型IDS 四點),則通知管理人員並做出適當反制措施。

現行的主機型 IDS 除了稽核系統紀錄檔以外,也會定時 (ref: time trap, event trap)對重要的系統設定檔、執行檔進行計算稽核值 (checksum hash, md5, digital signature) 的比對,以確定重要的檔案未受惡意的更改。

而 IDS 的反應速度也就決定於所訂定的檢查頻率、或 event trap 產生(e.g open or modify a file) 的反應時間。當發現攻擊行為時,可以有結束使用者連線,停止使用者權限等反制動作。

現行的主機型 IDS 也有在特定的 port 上進行網路封包檢查,算是結合主機型與網路型 IDS 功能的一種方式,而網路型與主機型相互結合也是 IDS 發展的趨勢之一。

(B). 主機型 IDS 相對於網路型 IDS 的優(缺)點:

(1). 對於攻擊事件的影響有較詳盡的紀錄:

因為主機型 IDS 是將攻擊者所造成的系統改變紀錄下來,因此可以得知更多關於攻擊者對特定主機入侵事件造成的影響,及更準確的紀錄攻擊行動的成敗。這部份的紀錄也可以和網路型 IDS 所能即時測知的預警紀錄互相對照比較。

主機型 IDS 通常有個別使用者的上線紀錄,重要檔案的增刪修改紀錄,使用者權限改變的紀錄,使用者連線到哪裡的紀錄,系統對外開啟的 port 紀錄、由哪一個程式開啟哪些檔案、port number 等紀錄,這些都是網路型 IDS 很難做到的。

(2). console 安全防護:

這是主機型 IDS 可以防護的範圍,而網路型 IDS就無法做到這點防護。

(3). 點對點連線的防護:

目前有許多的點對點連線因為採取加密處理,而無法在網路型 IDS 上做到完全的檢查,除非利用網路架構來解決(ref: reverse proxy),此時就可以在主機型 IDS 上,對連線傳輸的資料做稽核檢察。

(4). 不需另外新增主機硬體:

主機型 IDS 只需要在主機上另外安裝新的軟體,而不像網路型 IDS 需要另外新增主機硬體設備。

應用程式型 IDS:

(A). 變形 shellcode:

主要是針對輸入值的辨認來偵測攻擊行動的發生,可能的話可以直接攔截此輸入值,不讓應用程式執行到惡意的攻擊碼。但在實作偵測上有相當多的問題,因為目前的攻擊程式碼有很多變型的輸入值,從底層的組合語言 shellcode 等的變型,到字元不同編碼的變型,到字串可替代的各種變型都要考慮到,而這些變型如果在網路型 IDS 做檢查的話,勢必會造成處理速度太慢而無法搜集、檢查每個封包。關於字串的比對可能的發展方向是 fuzzy match,可以參考著名的 agrep 實作方法。

在變型的 shellcode 方面,我們可以把偵測連續的 NOP 指令改成是累計數,而不一定用連續的 NOP 作比對,並且對於可能的替代 NOP 用的組合語言指令做一份替換用的指令集列表做比對。針對加裝加密引擎的 shellcode 指令,我們可以加一個解密的模組比對,假如比對出解密的引擎出現,我們就可以假設有變型 shellcode 出現。

(ref: http://www.cansecwest.com/spp_fnord.c , http://www.ngsec.com/ )

(B). Protocol flow and multi-pattern search

應用 protocol analysis 的觀念:

將 client/server 的傳輸分別識為 client->server 的 client flow,以及 server->client 的 server flow。

如此分別我們在已知的傳輸協定中就可以直接將 client flow 拿來做 client request 相關檢查;將 server flow 的資料拿來做 server response 相關檢查,如此一來(分別對 client/server flow 而言),我們可以將比對的規則範圍縮小,也可以在更確切的 protocol

segment 中做規則比對的動作。

multi-pattern 的比對概念在於將某一類的比對規則應用於適合的資料上,因此首先,我們必需先將比對規則做相關類別的分類。比如依據 source/destination port、rule content 等參數為比對規則分類,在每一個分類集合中,也包括了這個分類所適用的封包種類(同時對規則封包做分類)。比如說 protocol flow 就是封包分類標準所用的參數之一。(應用於 snort 2.0 的 multi-rule search 上) snort multi-rule search:

(1). protocol field: (uricontent)

(2). generic content: (byte position in payload)

(3). packet anomaly: (icmp packets > 800bytes)

(ref: http://www.snort.org/docs/Snort_20_v4.pdf )

*閃躲(攻擊) IDS 的方法:

以下討論的各種攻擊方法,主要是針對網路型 IDS 。

目前有一種攻擊程式會在連線當中釋放出誘敵的假封包(decoy with FIN or RST in TCP , of incorrect sequence number.)造成部份會保留連線狀態資料的網路型 IDS 錯認為該連線已經結束,逕而開始真正的攻擊動作。當然,對於直接截取所有封包而未做連線動態資料的網路型 IDS 就較不受影響。

第二種在實用上的攻擊程式則是在連線成功後,先送出大量的假封包(mass packets with wrong sequence numbers)藉此把某些網路型 IDS 的封包資料緩衝區塞滿,接著再進行實際的攻擊動作。當然,對於未設定封包資料緩衝區大小上限的網路型 IDS 這招就無效了,但是無大小上限的實作方式可能就比較需要更聰明的做法來達成,否則遇到傳輸量大的連線必定會變成阻絕攻擊的受害者。但若是以遭到阻絕式攻擊與入侵攻擊兩者的權衡輕重來看,是仍有很多討論空間的 :)

第三種在實用上的攻擊程式是利用封包分段的方式,躲過不檢查分段封包的網路型 IDS,或者是不會將分段封包重組的網路型 IDS 也無法查覺躲在分段封包(包括 IP 層與 TCP 層)中的攻擊程式碼。

(tcp is aware of mtu value, fragmentation example: first 8 bytes tcp header packet, the following packets are all sized to be 32 bytes data)。

另一種分段方法是重疊分段的傳送攻擊碼,比如第一次傳"OVV",第二次傳"ERFLOW",結果是送出 "OVERFLOW"的程式碼。

對於會經過不允許封包分段的網路節點,或者對方是會將過小封包丟棄的路由器或防火牆,此種攻擊法則會失效。(ref: tcp overlap)

第四種在實用上的攻擊程式是在連線之後,送出許多符合目前連線的 SYN 封包,就作業系統本身並不理會這種封包,但是對於會記錄連線狀態的網路型 IDS 而言,則會誤以為是新的連線產生,而與新的封包序號做同步的動作(sequence number sync),在連線 timeout 之前攻擊方再送出一個新序號的 RST 封包,如此就可以讓此 IDS 以為連線已斷,但是事實上真正的行動才正要上演...:P

第五種攻擊是在真正的連線之前,先在攻擊主機上 bind 固定一個 port,再藉同一個 port 做接下來的動作: 送出誘敵的 SYN 封包,而這個封包的 checksum value 我們故意亂填,只要這個 IDS 沒有檢查 checksum 值就會以為已經有連線產生(sync with first SYN),而之後真正的連線封包,反而在 IDS 內被認為是無效的垃圾封包。

第六種是混合型,一開始的情形與第一種攻擊類似,但是接下送出錯誤 checksum 的 FIN/RST 封包讓未檢查 checksum 的 IDS 以為該連線已斷,接下來就開始實際的攻擊動作。

第七種也是以上的混合型,先對目的地送出大量錯誤checksum 的封包,使 IDS 誤判,以躲過 IDS 的偵測。

第八種是藉由計算實際上到目標主機的 TTL 值,再以此值減一(通常就是 IDS 所在位置)送出

FIN/RST/Data 封包藉以讓 IDS 以為該連線已無效,再進行真正的連線。這個方法也可以跟封包分段做結合,也就是利用不會到達目的地的封包(較小的 TTL值、無效的封包),藉此使 IDS 無法比對出真正的攻擊碼。

綜觀以上這些攻擊方法,主要是針對網路協定底層的可能問題如 checksum、sequence number sync、TTL、fragment 等等的封包 header 資料一一進行試驗破解,另外還有許多在網路協定應用程式層面的攻擊尚未介紹,以下我們再來看看另類攻擊包裝的可能方法。

第一種,類似 fragment 封包分段的作法,就是將攻擊的程式分成多段來執行,可以把第一次連線、第二次連線先放上片段的攻擊程式碼,再等到第三次攻擊

才進行真正的執行動作。目前實作的方法是掌握該網路協定的 time out 時限,在同一個 session time out 之前依序送出片段的程式碼,就可以達到躲過 IDS 的目的。值得注意的是,不管是 tcp 或 udp 分段的封包,除了這整串封包的第一個分段封包有 tcp 或 udp header 以外,接下來的分段封包都只含有 ip header 和 tcp 或 udp 的資料。因此,只要第一個分段封包不被發現,就可以達到目的了。

第二種,也是類似封包分段的作法,但是我們可以用不同來源的連線組成真正要執行的程式碼,等到程式碼都上傳完畢再執行。

第三種,利用不同的編碼方式代表同義的字元,比如用二進位或十六進位的方式來代替一般的字元,用 ISO 8859-1 的 &=34 或 &quot 來代表 " ,比如說十六進位的:

GET %65%74%63/%70%61%73%73%77%64

或者是

GET %65%74%63/%70a%73%73%77d

來代表 GET /etc/passwd

再考慮 UNICODE UTF8 編碼的變種方式( 如%c0%af的 escape sequence、%c0%ae%c0%ae 的 `..' 路徑漫遊),這些不同編碼在網頁處理的漏洞攻擊上,常常扮演著重要的角色。

第四種,用變數名稱代表重要的資料、檔案,用 shell script 的名稱來代表要執行的惡意程式,用不同的程式代表同樣的功能,比如 `echo *' 代表 `ls';字串的處理如 /etc/passwd 可以改成如 /etc//\//passwd,/etc/rc.d/.././\passwd。

第五種,使用加密資料來傳輸,到達目的地之後再將資料解密(ref: VPN, SSL, ipsec)。

第六種,先嘗試把 IDS 所在的主機平台設定為第一攻擊目標,在網路型 IDS 運作前就將該主機平台以阻絕式攻擊癱瘓。或者在 IDS 動作前就先取得權限。

第七種,先以大家較熟的"經典"級(較舊的:)的攻擊從假的來源位址發動,以大量的攻擊封包讓 IDS 的 audit record 佔滿該 IDS 的稽核資料庫;或者是讓 IDS 忙碌於較高頻率的雜訊,再趁亂同時發動攻擊,讓 IDS 措手不及。

第八種,變型的 shellcode,在變型的 shellcode 出現之前,IDS 所使用來辨識 shellcode 的方法就是抓取 NOP(0x90 on IA32) 指令,或者是抓取有執行 /bin/sh 或者是 bind port shell 的動作,但是現在變型的 shellcode 可以把一連串的 NOP 指令轉換成 inc %eax, inc %ebx, pop %eax, nop, dec %eax, dec %ebx ...等等的同義 NOP,(0x90) 指令,而在執行shellcode、bind shell 的部份則用了 xor 等指令來做簡單的加密引擎(從病毒寫法模仿而來),使得 IDS 無法辨認。與 NOP 指令同義的相關指令集(包括x86以外的平台)可到以下的網址取得:

http://www.cansecwest.com/noplist-v1-1.txt
(ref: spoof, stick, snot, frageroute, whisker)

*IDS 未來的發展方向:

(1). 網路型和主機型 IDS 兩者的整合,需考慮到 IDS 本身的穩定性,針對阻絕式服務的應變方式,要能有容錯能力,在發生系統錯誤時能夠自動重新啟動、或者是保有備份系統的運作。(ref: fault tolerance)

(2). 整合的事件紀錄資料庫,整合的事件報告,考慮保留連線狀態可能遺漏的攻擊事件紀錄,加強對封包重組檢查的完備性。(ref: data mining)

(3). 整合的事件處理與事件回應,和防火牆整合的應變程序,和決策支援系統的整合,讓管理者能夠依據個別網路環境實況,得到動態的決策建議。
(ref: decision support system, expert system)

(4). 必需對假警報事件做更完整的檢查,並且需考慮到連線狀態的真假判定,以及所監控的網路協定正確的溝通方法,藉由觀察伺服器回應的封包,要有判斷攻擊事件成功與否的判定能力。不可以為了提高效率就忽略封包完整性的檢查,如此就失去 IDS 存在的意義了。

(5). 針對比對的規則,時間與封包數量方面考慮動態的依照事件發生頻率、異常封包、異常流量修改比對的順序、為各種已知攻擊危險性設定加權值,提高比對的效率。

調整同一來源(主機、網域)攻擊的比重值,增加偵測未知攻擊型態的能力。同時也必須注意到所需蒐集資料量的最佳化處理,以免浪費過多處理用的資料空間。
(ref: packet frequency, Digital Signal Process)

(6). 針對各個協定的網路封包格式,進行強制性的封包 header 資料修正動作,直接避免不符合協定的封包。

朝向以 Intrusion Response 為起點, 以 Intrusion Prevention 為目標的發展方向。強制改變封包的動作所造成的影響,也是另一個研究主題。

(ref: preemption, 2003 iraqi war )

(ref: state-full, detect scan, redirect[reply] to spoof feature in ipfilter, protocol analysis, BlackICE, protocol compliance, uricontent in snort, Boyre-Moore, Aho-Corasick, Algorithms on strings, string matching, similarity between of firewall and ids, ipfilter + bridge = stealth, no ip address and route table, reassemble preprocessor in snort :)

*參考資料: 網路上的某十九篇討論 ids 的論文、文章 :)

(1). Pilymorphic Shellcodes vs. Application IDSs
by Next Generation Security Technologies

(2). IDS Evasion Techniques and Tactics
by Kevin Timm

(3). Insertion, Evasion, and Denial of Service:
Eluding Network Intrusion Detection
by Thomas H. Ptacek tqbf at securenetworks.com

Timothy N. Newsham newsham at securenetworks.com
Secure Networks, Inc. January 1998

(4). An Intrusion Detection Model Combining Abnormal
Detection and Misuse Detection Using Self-Organization Mapping.
by
李昭毅 jolo17 at seed.net.tw
蔡敦仁 drtt at mail.pccu.edu.tw
戴文彬 tai at faulty.pccu.edu.tw

(5). Increasing Performance in High Speed NIDS

A look at Snort's Internals
by Neil Desai ndesai01 at tampabay.rr.com

(6). A look at whisker's anti-IDS tactics
by Rain Forest Puppy

rfp at wiretrip.net
http://www.wiretrip.net/rfp/pages/whitepapers/

whiskerids.html(obsolete)
http://www.cirt.net/code/nikto.shtml

技術熱情

我們在隱秘處工作,
我們做能力所及的事,
我們奉獻所擁有的知識,
我們的疑惑就是熱情的泉源,
我們的熱情就是職責所在,
其餘就任由技術狂想馳騁了...

We work in the dark
We do what we can
We give what we have
Our doubt is our passion,
and our passion is our task
The rest is the madness of art.

-- Henry James

若要我描述完美的讀者, 我總是想像一頭充滿
勇氣與好奇心的巨獸, 同時兼備靈活的頭腦, 慧詰
而足智多謀, 以及自我警覺的特點, 並且他更需是
一個天生的冒險家與探險者...

When I picture a perfect reader, I always picture a
monster of courage and curiosity, also something
supple, cunning, cautious, a born adventurer and
discoverer...

-- Friedrich Nietzsche

The Conscience of a Hacker 黑客宣言

Mentor's Last Words

今天,又有另一個人被捕了,報章雜誌上到處都看得到:"一名青少年因電腦犯罪被捕", "駭客入侵網路銀行遭逮捕"...該死的小子,他們總是這樣!

但你是否曾經注視那被捕駭客的雙眼呢?你是否曾想知道,是什麼在驅動著他們,是什麼力量讓他們成為這種樣子?是什麼東西塑造了他們?我是一個駭客,歡迎來到我的世界....

我的世界起始於校園,我比其他大多數的孩子都聰明,學校裡教的東西讓人厭煩,該死的問題青少年!他們都是一個樣!我在國中高中的時候,已經聽過老師解釋如何因式分解不下十五次,我知道如何去解。"對不起老師, 我沒有寫作業,因為我在腦中就可以解出這些題目,不需要寫下來"。該死的小孩,大概又是用抄的,他們總是這樣!

今天我有一個新發現,我發現了電腦這個東西。等等,這實在是太酷了!他做我叫他做的事!如果電腦出錯,我知道是我哪裡沒有搞清楚,而不是因為他討厭我,或覺得我的能力會對他造成威脅,或認為我太聰明而令人厭惡,或不喜歡教書,根本不該出現在學校的那種老師!該死的小孩,他只會玩電玩遊戲,他們總是這樣!

然後...

他發生了,一扇通往另一個世界的門開啟了,透過電話線連接出去,就像是血液中流動的熱血,一個電子脈衝被送出去了,那是現實世界無人知曉的庇護所,我找到了自己的舞台。"就是這裡,這就是我的歸屬... 我知道這裡的任何人,即使是素未謀面,未聞其聲的代號",同樣的...我瞭解你們的想法...該死的小孩,又佔著電話線,他們總是這樣!

你敢打一百個賭我們都是這個樣子,是阿,我們都曾經是教條教育的校園教出來的學生,當我們渴望瞭解更多的時候,他們只會耍弄著課本上的文字遊戲,教著平淡無意義的課程。

我們都曾經被充滿悲觀意識的老師,或那些自認為同情可憐你,偽善地忽略你的老師教過,只有少數的老師認真看待你極想求知的態度,但被這種老師教到的機率,如同在沙漠祈雨般幾希..

現在,我們的時代來臨了,通過電子與開關的媒介,讓我們窺見數據傳送資料時的閃爍之美。而我們免費使用的既存資源,若不是被貪婪的暴利財團壟斷而哄抬價格,根本不用索價如此高昂!

而你說我們是罪犯...我們探險,你說我們是罪犯,我們追求新知,
而你說我們是罪犯...

我們存在於一個沒有膚色、國籍、宗教信仰等歧視偏見的世界,而你說我們是罪犯,你們製造核子彈,隨意發起戰爭,你們殘殺,欺騙我們,還想迫使我們相信,這是為我們好,至此,我們仍是罪犯...

是阿,如果我是罪犯,我的罪名就是好奇心,我的罪名是藉由對方的文字與思考來評斷,而不是岐視他們的外表。我的罪名是比你們聰明,這也是你們永遠無法釋懷的。我是一個駭客,這是我的聲明。

你也許可以停止一個駭客的攻擊,但是你無法阻止我們所有人。

畢竟,我們都是一樣的!

+++精神導師+++

相關連結:

Loyd Blankenship a.k.a the Mentor

Hacker Manifeisto 黑客宣言

Phrack 電子雜誌

高層次超音波

為了讓小寶貝有更完整的健康檢查,以及讓寶寶在胎兒階段就留下一段動態的 4D 影像紀錄,Irene 跟我決定到醫院排定高層次超音波檢查。

原本是想要到赫赫有名的馬階醫院張東曜醫師,但是因為人氣醫師太熱門,沒有兩個月前預約的話是排不到隊的。

於是我們在醫院的推薦下,在婦幼醫院照高層次超音波,主要是由張建宏醫師進行檢查,檢查時醫師也是很詳盡的說明,並針對所提出的問題都一一解釋。

小寶貝的第一張手托臉肖象照。


小寶貝的全身組合照。


另一張手托臉照。


是男寶寶。

2008年2月21日 星期四

讀 DDK ,學畫趨勢線

DDK 的日誌,學著畫趨勢線圖,多頭時低點連線看支撐,高點連線,看拉回。空頭時高點連線看壓力,低點連線,不看支撐

主要還是以周線圖來看,在低點連成的支撐趨勢線,和高點連成的壓力趨勢線之間,稱為軌道。

一開始是使用 ezChart 前免費軟體,ezChart 好用的一個功能是可以左右水平移動時間軸。後來 ezChart 開始收費後,找到了元大證券提供的看盤軟體,雖然無法水平移動,但是至少在日、周、月、年線上的分時都還蠻細的,也有提供畫線工具。目前還是以周線為主。比如:讀大盤新春開紅盤等線圖都是。

在畫線圖時,會發現個股並非每一支都符合,其實是少數有符合,這就是需要自己下功夫的地方了。一開始可以從大盤開始來看。

畫趨勢線圖時,時常會遇到剛好跟均線相當的支撐、壓力點價位相符的巧合點,這其中的關係是如何連結起來的呢?或者只是另一個隨機的必然

技術分析的準確度,只是其中一部份,重點還是在資金控管,觀看趨勢、轉折點進出場,順勢、克服恐懼的人性尊守紀律。尤其最近看市場求生手冊最近貼出刀疤、怪醫等人文章時,關於操作時需要違背人性求生的恐懼感等文章。

也就是說股市中隨機的必然,並非如此隨機,還是有跡可循。

Open Source 是神主牌?還是商業毒藥?

拜讀 MMDaysFOSS 全面抵制趨勢科技
(Trend Micro)
一文,說明趨勢科技利用 proxy
中加入防毒功能的軟體專利,對 Barracuda
使用 ClamAV 提出告訴。

Inquirer news

這次是由荷蘭ScriptumLibre 發起的全球
抵制趨勢科技活動, 其中包括不再使用趨勢
的軟體、在網頁上擺設抵制趨勢標語、鼓勵
資訊科技人員一起參與,ScriptumLibre 也
專設一個新聞媒體網頁

jserv 網站也有微軟濫用軟體專利的相關
紀錄


mozilla Taiwan 討論區,也可以看到觀點
:比爾蓋茲與共產黨同路人 by Richard
Stallman
關於軟體專利危害的論點。

軟體專利的抽象性,是用概念去註冊專利,
也就是說,這只是一個想法,就可以算一個
專利。這樣並不合理,因為同樣的想法,任
何工程師都可能想到,再說現在強調軟體再
用性,許多的程式架構、函式庫都是同樣的
概念,只要一註冊成功,那勢必引起軟體專
利大戰的大災難。

季線操作-哪一條是季線?

剛剛試著自己找季線作分析時,卻發現在元大證券的三個月季線值,跟奇摩股市的季線值是有差異的。

而這次短多操作,除了看一些網路分析說會反彈外,也是用了元大看盤軟體的值,才得出適合搶反彈的結論。

但是當試著用奇摩的數據十二周線,來當作季線分析時,卻是得到完全相反的結論,該股變成壓制在季線之下。

推論是因為十二周,並沒有到三個月的季線天數,要看季線還是要直接找有三個月期的線圖才是準確的。

2008年2月20日 星期三

進出場機制

最近市場求生手冊開始翻出許多舊文,也趁機學習一下進場操作時該擬定的策略。

進場機制,短期均線翻揚。順勢加碼上依趨勢設定的資金部位上限(30%, 60%, 100%)為止。

出場機制,漲勢停止前放任貪婪,培養忍耐穫利成長的能力(*),但漲勢停止後,價跌破均線或最高成本單即停利。

或者在第一筆進場就價跌破均線支撐價位,立即停損出場觀望,等盤勢確定、自己看懂了再進場。

預測絕對不可能神準,行情與判斷不同後,資金部位要立即認錯停損,即使事後看來錯殺也無關緊要。

當然除了資金部位配置的控制外,也需要考量資金進出時間點,停損、停利的重要性,才決定交易的成敗。

資金配置與趨勢操作

短線看日線趨勢,中線看周線趨勢,長線看月、季、年線趨勢。

中、長線空頭,短線多頭時資金操作上限 30%

長線空頭,短、中線多頭時資金操作上限 60%

短、中、長線多頭時資金操作上限 100%

如此區分是利用短、中、長三等分的比例,來作資金配置。虧損發生停損執行後,可動用資金只能動用該筆交易,停損後剩餘的本金。

資金配置是保本(命)的唯一護身符。

2008年2月19日 星期二

外幣定存

閱讀 RichMaster 網站,發現其中包含許多越南
投資相關資訊,主要是看到越南盾的外幣定存,
還有高達7% 的數字,這應該是就學時期才看過
的台幣利率。其中也包括比較紐幣 6%、澳幣
5%。

另外也有介紹越南封閉式基金的介紹,包括
VFMVF1、PRUBF1、MAFPF1三支。另外
網頁中也教人到越南開證券戶,來投資越南
封閉式基金的方式。

2008年2月18日 星期一

Linux 對電子產業的影響

自從 Google 公布開放手機聯盟Android 平台
以來,媒體的焦點都放在這是 Google 介入手機
產業。

另一個重要但被媒體忽略的影響,就是底層作業
系統採用 Linux 作業系統。也由於 Linux 開放源
碼的特性,對於一向採用封閉源碼的手機產業,
開始由程式碼的版權影響手機產業的發展。

開放源碼對程式設計的便利性,可以讓程式設計
師站在大量的開放源碼函式庫、現成應用軟體上
,也使得學習曲線立即趨緩,甚至可能在未完全
瞭解所應用軟體、函式庫時,就直接應用。

而對硬體開發的影響,可以參考電子工程專輯的
分析文章
,是否以後低階程式碼,如驅動程式,
Board Support Package 等硬體相依軟體,都將一
一開放,讓更多人可以直接檢視源碼?這勢必降
低進入偏硬體端的程式設計門檻,加速產業的開
發速度。

同樣參與開放手機聯盟的 Wind River,電子工程
專輯也報導 Wind River 找了協力廠商 ACCESS
進入 Linux 手機市場

以及前陣子眾多併購案中,Nokia 收購 Trolltech
並保持開放源碼授權的舉動,也是走向開放源碼
的一步棋。

手機市場走向開放原始碼大勢底定。

2008/05/21 update

電子工程專輯一篇為何嵌入式 Linux 令人又愛
又恨?
也點出了提供 Linux 解決方案的廠商為
了打廣告,不停地利用 Linux 的多資源與難以
維護等特性作廣告文宣,這種白熱化的廣告戰
也可以印證 Linux 對電子產業影響力的與日俱
增。

2008年2月17日 星期日

平溪天燈網站

平溪天燈網站裡,包括了旅遊行程建議,
特色商圈、紀念品介紹、交通資訊、交通
與管制資訊。這些算是一般的 Promote 資
訊。

其中還包括天燈周邊商品創意比賽、攝影
比賽。這些就是比較進步的方式,周邊商
品創意比賽,應該是給有創意但無資金的
人一個參與平溪天燈活動商機的機會。而
攝影比賽的精彩照片則是推銷這個活動的
最佳廣告。

電子耳溫槍的選擇

白天原本天晴忽然轉變為大雨,和艾媽去找老媽後,去吃了豬排飯、海鮮飯,又是吃到飽撐。:P

後來去重慶南路逛書店,發現連介紹寫無名小站Yahoo Blog 都可以出一本書,沒想到出版業也會嘗試製作部落格內容的書。

逛經過正康藥局,看了些電子血壓計、電子耳溫槍,不過因為本來就沒打算這麼快買,就只是先看看有哪些選擇。
  1. Terumo 日本名牌 迷你電子耳溫槍,Braun 也有出一支,但是剛查 google 看似月子中心、醫院也多用 Terumo。
  2. Braun 德國名牌 電子血壓計,有分手挽、手臂、硬式套手臂等三種。
  3. Accu check 血糖測試機,是必須扎入指頭成傷口,再自行擠血才可以試出血糖值。
2008/02/18 update

癮科技報導了,飛利浦正在開發非侵入性血糖測量儀,糖尿病患者可以用呼出的二氧化碳濃度測得血糖值

再 Survey 一陣子才決定吧。

2008年2月16日 星期六

煮破的湯圓

元宵節即將到來,又到了吃湯圓慶團圓
的日子。配合最近這波寒流,更是適合
吃個剛煮好的熱騰騰包餡湯圓。

市面上可以買到的就桂冠、義美比較多
,一開始是為了買不同口味而刻意挑兩
家品牌來嘗試,結果一試發現,桂冠的
湯圓煮久易破
義美芝麻湯圓煮到整顆
膨賬到兩倍大,卻也是飽實不破。

P2P Lending 點對點借款?

原本是在數位網路上的 P2P 資料交換,對應到
社會網路的現金流,會發生什麼事呢?

西恩潘在P2P,不一樣的玩法中,提出了這個
對應關係。

社會網路中的高利貸、貸款、標會等金錢借貸
關係,除了分享資金所有人的金錢以外,也包
含了借貸關係中的金錢利息回饋。

而 P2P 資料交換的關係,則是以檔案的標的為
目的,每個人都提供一部份檔案資料內容,所
包含的分享回饋則是所要檔案的資料。

看來是找到一種既有的對應關係,其實電腦網
路上的資料交換方法也是人想出來的,而這些
人想出來的方法,只是冠上演算法的大名,並
不一定是特別創新,大多是利用人類社會網路
中既有的運作方式,加以模仿,或變化利用。

linux kernel vmsplice bugs to local root exploit

CVE-2008-0009
CVE-2008-0010
CVE-2008-0600

許久沒看 kernel trap 新聞,結果一翻開就是
bull's eye ,linux kernel local root exploit @@

0009 是 fs/splice.c 中 vmsplice_to_user() 並
未檢查 user space pointer 指向的資料,使用
者可能被用來存取 kernel space 的任意記憶體
位置。

0010 是 位於 fs/splice.c 的
copy_from_user_mmap_sem() 未檢查 user
space pointer 指向的資料,使用者程式可能
被用來取得 root 權限。

0600 是 vmsplice_to_pipe() 未檢查 user space
pointer 指向的資料,使用者程式可能被用
來取得 root 權限。

2008年2月15日 星期五

DARPA 將開發人腦晶片

DARPA 美國國防部先進研究計畫署,將開發
人腦晶片,透明顯示。

美國國防部最近一系列的驚人計劃中,包括了
人腦晶片、自動救援直升機、穿透式顯示器,
將在明年啟動。

今年二月初,美國國防部撥了 32.9 億美元作為
2009 年度的先進計劃預算,其中包括許多新計
劃,這些計劃一個比一個還要令人驚奇!

其中一個特別有野心的計劃,就是採用可擴充的
類神經電子裝置 (Neuromorphic Adaptic Plastic
Scalable Electronics),或稱為突觸 (synapse) 所
組成的系統。

這個計劃將會開發一個人腦晶片,晶片會模仿腦
皮層(biological cortex) 的功能、大小、以及電流
。這項計劃如果成功的話,將成為現代戰場上士
兵所需輔助機器的基礎設計。例如從影像中取得
有用的資訊、並開始執行任務。電子腦計劃將在
明年花費三百萬美元的經費。Noah Shachtman
猜想實際的花費一定高出這個金額才可能完成。

2oo8/02/19 update
Only Perception 寫一篇實驗室晶片模仿腦部的化
學作用
,裡面也介紹了晶片腦相關的文章,該晶片
主要是模仿神經細胞對外界刺激的反應,方便供實
驗室實驗使用。

另一個南丁格爾(Nightingale)計劃則是設計一輛
完全自動化的飛行救護車。希望有一天可以有一
輛空中的無人救護車,成為可以機械式搜尋與救
援的飛行器。

未完待續...

2008年2月14日 星期四

批判性思考與鑽牛角尖

最近在看 ptt fund 版文章,出現了一
位跟前陣子的人氣王 isaacchen 挑戰權
威的 SLAC,其中 SLAC 為了說明
isaacchen 論述有瑕疵,特別緊咬著 i
所論述的日本 - The Sunset Samurai
一文中,提出的 PPPGDP 評比適
用於各國互相比較有意義,或是只適
用在單一國家的不同時期比較才有意
義。

如果常常為了自己發現別人的一些小
錯誤,花費許多時間在爭論無關緊要
的旁枝末節,只是浪費自己的時間罷
了。

批判性思考來作學術研究是一回事
,但是用來鑽牛角尖,除了把自己氣
度越做越小外,也是浪費時間。

2008年2月13日 星期三

Irene 上菜



Irene 養生清炒高麗菜。



Irene 香噴噴的肉絲、蝦仁、蛋炒飯,因為加
了鰹魚醬油,所以散發出來的香味更加迷人。


*^_^*

杜拜將建造世界最大拱橋

聽說 FXFOWLE 最近標得杜拜建築設計比賽,
杜拜的各種建設已經為我們建構出未來世界的
面貌,從人造島嶼、世界唯一七星級帆船飯店
,現在將要建造全世界最大的拱橋。

  1. 長度達一英哩、高 670 英呎
  2. 多達 12 線道
  3. 花費高達八億一千七百萬美金
  4. 每一方向的交通流量將達到每小時兩千輛車
  5. 2008 年三月開始建造,預計 2012 年完成
照片一

照片二

照片三

照片四

阿拉伯聯合大公國建造中的杜拜塔,也將要創下世
界新高樓紀錄。

2008年2月9日 星期六

安全問題的唯一武器是資訊

Bruce Schneier 在 Linux.conf.au 演講時
,發表了這篇安全問題的唯一武器是資訊
的文章。

裡面提出 RFID 標籤,公眾監視器等目前
火紅的資訊安全產業,只是監視器廠商的
炒作,與特殊政治運作的結果。

資訊安全不應該只在謀求人民虛幻的安全
感,或者讓人們活在廠商與政治意圖的恐
懼感中。

安全問題的基礎是資訊。

如果有足夠的有效資訊,你就可以分辨什
麼是虛幻的安全感、恐懼感,以及什麼是
有用的安全措施。

GPS 導航系統的限制

據報載GPS 系統也會因為天氣因素,影響
到導航使用的精準度。

由成大林建宏助理教授,利用福爾摩沙衛星
三號觀測證實,衛星與導航器之間的電磁波
傳播,會因為天氣導致太空電離層電漿密度
變化,而影響導航器精準度。

但是報導、或研究中並未指出這樣的不精準
誤差,到底是多少?十、百公尺?還是到公
里?

無論如何,多了一個不買 GPS 導航器的理
由。 :P

2008年2月6日 星期三

電影:令人討厭的松子的一生

大年初一,除了繼續跟家人努力消
化年夜飯、菜以外,還看了幾部電
影。

一部是之前就跟 Irene 看過的反恐
戰場
,另外就是令人討驗的松子的
一生


故事是松子一連串倒楣的事件,從
她因為疼愛而袒護偷竊的學生開始
,松子從離職、得不到父親關愛(JJ
觀點) 而想要從其他男人身上,找
回自己缺乏的關愛。並且在錯誤的
時間點遇到好人(理髮師),或者是
遇到不好的男人(暴力作家、因為
自卑而跟松子不倫戀的對手作家、
只會利用松子的吃軟飯路人、直到
劇終才覺悟松子的愛的學生)而出賣
靈肉,甚至於挨打也自我催眠式的
說服自己男人是愛她的。

故事從松子的姪子,為找尋松子死
因,而進行的回憶錄式敘述法,帶
領我們瞭解松子的一生。看似倒楣
透頂的後半輩子,但松子卻以相當
樂觀的態度教我們如何面對生活上
的不順遂(JW觀點)。這麼倒楣的人
生,松子都能這麼樂觀面對,我們
大多數人算是很幸運。

故事的結尾,松子的爸爸終於不需
要等松子扮鬼臉取悅,能夠自然的
對松子笑顏以對,松子的妹妹也開
心的迎接松子回家(天堂)。

許多的心理癥結,其實都只繫於我
們日常生活中的微小細節,只要多
點笑容、多點體諒與善意,就可能
避免讓一個人(小孩)誤入歧途,能夠
認識真誠的關愛。

2008年2月5日 星期二

外匯存底排名

外匯存底排名無意義。

根據中央銀行二月五日發布新聞
外匯存底的存量,並非越大越好,
太多的外匯存底反而會劇烈影響金
融市場波動幅度。

目前央行依照本國的經濟規模,及
金融情況調整出最適合台灣的外匯
存底金額。

影響外匯存底的因素有
  1. 相對國內生產毛額之比率
  2. 外匯存底足數進口月數
  3. 相對 M2 之比率
  4. 相對短期外債之比率
四種標準衡量。台灣目前的外匯存
底數,已經遠高於各種適足程度的
標準值,也遠高於18-20國平均值


2008年1月台灣外匯存底數2,728億
美元,足數15個月進口所需。

外匯存底排名無意義。

駭客精神是進步的解藥

駭客一詞,在現今社會只是網路安全
出現問題時,拿來鞭打的草紙人。

但其實駭客一詞的發源,是指技術專
才,有能力及意願去發現問題,並解
決問題的人


社會的進步,在物質層面來看,是藉
由經濟規模的持續擴張支撐,而經濟
規模的擴張,所需要的基底可以分為
兩大種類。

其中之一,是在既有的產業、工作領
域中精益求精,不斷的提升既有領域
以達到升級,變強壯。也就是付出越
多體勞力與腦勞力,得到越多收穫的
紅海競爭。

其二,是較少發生的,創新、創意,
發現新領域的觀察與嘗試的工作。這
也需要第一種類的努力付出來支撐,
只是努力的方向是擴張層面,而非在
原有的層面上競爭短時間內,進步有
限的成果。並不只是開發新的需求,
也要勇於面對已有但未被重視的問題
,並研究解決方式。

駭客精神就是綜合了以上兩點的思考
,因此,在電腦硬體知識專精,在電
腦軟體專精,與在修理汽機車專精的
人,是完全平等的,這兩者之間,並
沒有任何差異。

同樣的類比,可以放在專於寫作的作
家,專精於演唱的歌手,專精於繪畫
的藝術家,專精於駕駛的司機,專精
於打掃除垢的清潔人員,專精於傳播
廣告說服群眾的廣告企劃。只要是肯
持續精益求精、發現問題與需求,並
努力學習、思考解決方法的,都是俱
備有駭客精神,也就是可以創造價值
的人。

因此,駭客精神才是進步的解藥。

2008年2月2日 星期六

監控設備網路化

從傳統的類比監控監視器,到數位監控,數位監控
再進入現在的監控設備網路化。

監控設備網路化,又可以分成兩類來看。

第一種是網路化做到一半。用傳統類比訊號轉錄到
硬碟成為數位資料,再以網路連線,將硬碟主機的
錄影資料傳輸出去,或提供 Web 介面,供使用者
遠端監看。

第二種是 IP Camera 採用 IP-based 有線或無線裝
置,這些 Camera 本身就提供 Streaming 供使用者
監看。

2008年2月1日 星期五

2008年的科技業併購案

  1. 微軟併購雅虎雅虎最近股價的走勢,表現出公司營運的分針以及與 Google 競爭的過程已告一段落(敗),微軟此舉是否真的能有綜效?值得存疑。目前看來只是讓雅虎多了一個全球最有錢的大金主,繼續燒錢。
  2. 法國巴黎銀行併購興業銀行,興業銀行是由於偶發事件造成的內部控管危機,假使併購後能夠強化內部控管,合併案會是巴黎銀行相當成功的危機入市。
  3. CME併購NYMEX,如果成功將成為市值六百億美金的最大交易市場,主因是NYMEX欠缺電子交易系統的技術,CME恰好可以填補這項空缺。CME目前提供的交易平台,包括利率、外匯、股票指數、商品期貨。
  4. Nokia 併購 Trolltech,手機大廠 Nokia 併購了發展 QTTrolltech ,為的是要加速軟體開發的進展。Nokia 本身也參與了 Google Android 手機平台的 Open Handset Alliance 計劃,如此看來這個併購案對於開放平台手機(Linux Kernel)介面的開發,就很有實質幫助。