Vô hi u hóa/kích h ot plugin:

Một phần của tài liệu Lập trình vượt firewall (Trang 76)

Cho phép ng i dùng có th m quy n đ c vô hi u hóa/kích ho t plugin.

6.3 M t s v n đ c n l u ý khi vi t plugin cho trình duy t IE : 6.3.1 Khái ni m Browser Helper Objects (BHO):

Browser Helper Objects (BHO), t m d ch là đ i t ng tr giúp cho trình duy t, là 1 khái ni m do Microsoftđ a ra. ây là 1 d ng ng d ng đ c phát tri n d a trên môi tr ng COM (Component Object Model). Dòng đ i c a đ i t ng này g n li n v i dòng đ i c a trình duy t Internet Explorer, t c là khi kh i đ ng s s d ng chung vùng nh cùng v i trình duy t web Internet

Explorer và ch đ c h y khi trình duy t b đóng. Khi ch y, đ i t ng s có th t ng tác v i t t c m i thành ph n c ng nh đ i t ng khác c a trình duy t (ví d : c a s , toolbar, textfield,…),có th nh n đ c các thông đi p, s ki n do trình duy t phát ra nh các s ki n tr v trang tr c đó (GoBack), trang sau

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

(GoForward), hay s ki n Download thành công (DocumentComplete),… Các BHO khi đ c kh i t o thì tr c h t ph i tr i qua quá trình đ ng kí vào Registry cho h th ng thông qua giá tr c a CLSID. Giá tr này đóng vai trò nh 1 giá tr đnh danh (Identifier) cho duy nh t BHO.

Hình d i đây minh h a quá trình trình duy t kh i đ ng và n p các BHO vào b nh đ x lí:

Hình 28 Quá trình trình duy t kh i đ ng và n p các BHO

Quá trình ho t đ ng nh sau : - Kh i đ ng trình duy t.

- Trình duy t s tìm trong Registry các giá tr CLSID c a các BHO t ng ng và load các module ng d ng c a các BHO này vào b nh

- M i BHO đ c kh i t o s có 1 Interface (t m d ch là đ i t ng giao ti p) riêng bi t. Khi tìm th y các Interface này c a BHO, trình duy t s chuy n con tr tr đ n Interface c a chính mình (Interface

IUnkown) cho các BHO. Chính vi c chuy n IUnkown cho các BHO mà các BHO này m i có th can thi p đ c vào các đ i t ng c ng nh các s ki n c a trình duy t.

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

6.3.2 M t s hàm x lí quan tr ng:

- HRESULT SetSite(IUnknown* pUnkSite)

• ây chính là hàm kh i t o đ i t ng BHO. Nhi m v chính c a hàm này là nh n con tr đ i t ng IUnkown và 1 s đ i t ng quan tr ng khác (IWebBrowser2, IConnectionPointContainer) t trình duy t và l u l i đ x lí.

- HRESULT Connect(void)

• Báo cho trình duy t bi t r ng BHO có ý đnh mu n b t các s ki n và x lí tr c khi g i tr l i cho trình duy t.

- HRESULT Invoke()

• B t các s ki n do trình duy t phát ra và chuy n đ n hàm x lí s ki n t ng ng.

- HRESULT Disconnect(void)

• Khi đ i t ng b h y hay ch đ ng k t thúc, c n g i s ki n này đ thông báo ch m d t vi c x lí các s ki n cho trình duy t

- Các hàm x lí s ki n: Tùy theo lo i s ki n mà BHO s có các x lí t ng ng, các s ki n đ c x lí trong Module này l n l t là:

DISPID_BEFORENAVIGATE2: S ki n chu n b duy t đ n 1 trang web khác trang hi n hành.

DISPID_ONQUIT : S ki n đóng trình duy t

- Nói thêm v vi c đ ng kí BHO vào registry cho trình duy t

• M c dù khi t o 1 ng d ng d ng COM Plugin cho Internet Explorer, Visual C++ 6.0 s t t o các dòng l nh kh i t o các thông s cho ng d ng trong regsitry trong t p tin có đuôi là rgs. Tuy nhiên các dòng l nh đ ng kí ng d ng vào Registry thì ng i dùng ph i t thêm vào. N i dung c n thêm vào nh sau :

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

HKLM{SOFTWARE{Microsoft{ Windows {CurrentVersion

{Explorer{'Browser Helper Objects'{ForceRemove {S ID đã đ c VC t o s n} = s 'Tên đ i t ng BHO mu n th hi n'}}}}}}}

6.4 Chi ti t l u tr d li u : 6.4.1 B ng Forbidden

Tên tr ng Ki u Chú thích

URL Text a ch trang web based proxy b c m

6.4.2 B ng Trusted

Tên tr ng Ki u Chú thích

URL Text a ch trang web tin c y

6.5 Thu t toán chính c a ng d ng : 6.5.1 Mô hình ho t đ ng c a Plugin :

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng s ki n Phát Trình duy t IE Kh i đ ng Plugin Hàm x lí s ki n Kh i đ ng chuy n ây là s ki n BeforeNavigate úng B l c 1 Không vi ph m B l c 2 B l c 3 Không vi ph m Không vi ph m L u vào CSDL Vi ph m Vi ph m Vi ph m Trang web này tin c y ? Không chuy n 1 2 3 4 6 Sai úng 5 8 Trang thông báo 7 Hình 29 Mô hình ho t đ ng c a Plugin

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

6.5.2 Di n gi i mô hình :

- BeforeNavigate: S ki n do trình duy t phát ra khi ng i dùng chu n b duy t đ n 1 trang web m i nào đó (khác v i trang hi n hành). Ví d : Khi click chu t vào 1 link, 1 nút trên trang web và chuy n sang 1 trang web m i, khi gõ đa ch vào thanh address bar đ chu n b duy t,…

- B l c 1: Nh n vào đ a ch trang web không đáng tin c y và ti n hành ki m tra. B l c s truy xu t vào c s d li u đ duy t xem trang web này có n m s n trong danh sách các trang b c m hay không. N u có thì b l c s l u đ a ch này vào c s d li u và chuy n h ng đ n trang thông báo c m cho ng i dùng. N u không thì s chuy n đ n b l c ti p theo.

- B l c 2: Nh n vào đ a ch trang web không đáng tin c y và ti n hành ki m tra. N u đa ch này ch a thêm 1 đa ch trang web khác thì đ c xem nh vi ph m (đã trình bày trên). B l c s l u đ a ch vi ph m này vào c s d li u.

- B l c 3: Nh n vào con tr đ i t ng IWebBrowser2 đ x lí. Con tr này đ i di n cho trang web hi n hành c n ki m tra. D a vào con tr đ i t ng này, ta có th l y đ c toàn b n i dung trang web (các th HTML, các script,….). Nh đã trình bày trên, b l c 3 ho t đ ng d a trên vi c ki m tra n i dung các INPUT FIELD c a trang web. Do đó b l c ch chú tr ng đ n vi c l c các th INPUT c a trang HTML. 1 trang web đ c b l c xem là 1 trang Web Based Proxy khi và ch khi nó ch a không quá 4 th INPUT d ng text, và ít nh t 1 trong các th Input này có n i dung là đa ch 1 trang web nào đó. N u trang web nào th a đi u ki n nêu trên thì s đ c xem là vi ph m và l u l i vào c s d li u.

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

6.6 Nh ng u đi m và h n ch :

Plugin áp d ng 1 s thu t gi i Heuristic nh m phát hi n các trang Web-proxy m i ho c ch a có trong c s d li u, khi n b l c thông minh h n do có kh n ng t h c các đa ch trang web m i mu n qua m t Firewall. Khi ch y th các trang web-proxy m i, b l c ho t đ ng khá hi u qu và chính xác.

a s các thu t gi i này đ c xây d ng d a trên vi c quan sát quá trình v n hành c a các trang Web-based Proxy và tìm ra nh ng đi m chung đ c tr ng và khác bi t so v i các trang web khác làm c ch ho t đ ng cho b l c. Do thu t gi i không đ m b o tính chính xác 100% nên có 1 s tr ng h p thi u sót hay th m chí sai sót ngoài ý mu n. a s nh ng sai sót đ u r i váo tr ng h p khi ng i dùng s d ng search engine (nh google,yahoo,…) đ ti n hành tìm ki m 1 đa ch nào đó trên internet. Trong nh ng tr ng h p này, plugin s t cho r ng các trang web tìm ki m này là các Web-Based Proxy và ti n hành ng n ch n. L i trên có th kh c ph c đ c b ng cách thêm vào danh sách các trang web tin c y và bu c b l c ki m tra các “trang web tin c y này” tr c khi l c. Tuy nhiên cách này c ng không th kh c ph c hoàn toàn.

Quá trình ho t đ ng c a Plugin ph thu c khá nhi u vào “s t n t i” c a t p tin c s d li u l u tr các trang Web-Based Proxy. Nên khi t p tin trên không t n t i hay b l i, tính n ng l c c a Plugin ch c ch n không th ho t đ ng chính xác đ c.

Trong quá trình ch y th và ki m l i, chúng em đã c g ng s a ch a h u h t các sai sót này.Chúng em xin c g ng phát tri n thêm đ b l c ngày càng hoàn thi n h n.

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

Ch ng 7: SERVICE CH NG V T FIREWALL

Ch ng này chúng em xin phép đ c trình bày v module th hai: Service ch ng v t firewall cho h đi u hành Windows.

7.1 Gi i thi u s l c :

Service ch ng v t Firewall là 1 ng d ng đ c vi t d a trên mô hình Service truy n th ng c a Windows. Service là 1 ng d ng ch y n n trong h th ng, hoàn toàn tuân th theo các yêu c u và tính n ng b o m t do Windows quy đnh (Ch có ng i ch Service – tr ng h p module này là admin h th ng – m i có quy n t t/m /xóa serive mà thôi). Service ch u trách nhi m l c và b t các gói tin g i ra m ng ngoài (Internet) nh m phát hi n và ng n ch n các gói tin g i đ n các HTTP Proxy Server

và l u l i đa ch các HTTP Proxy Server này đ làm c s ho t đ ng cho b l c. Service bao g m 2 module nh : module b t gói tinmodule ch n đ a ch IP.

7.2 Các tính n ng chính c a module:

Theo nh đã gi i thi u, module này đ c chia ra làm 2 module nh riêng bi t, h tr nhau trong quá trình Service ho t đ ng: ó là module b t gói tinmodule ch n đa ch IP.

- Module b t gói tin: module đ c vi t d a trên th vi n Winsock2.0 c a Windows, nhi m v b t các gói tin l u thông ra/vào card m ng c a h th ng. - Module ch n đa ch IP: module đ c vi t d a trên mô hình Filter-Hook

Driverđ c Microsoft gi i thi u trong tài li u Windows 2000 DDK. ng d ng vi t d a trên mô hình này có th l c các gói tin ra vào card m ng c a h th ng (theo tài Windows 2000 DDK). Theo tài li u RFC v HTTP Protocol, các gói tin g i đ n HTTP Proxy Server đ u có đi m đ c tr ng riêng so v i các gói tin khác. Service d a vào đ c đi m này làm c s ho t đ ng cho b l c c a mình.

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

7.3 Module b t gói tin :

Module ch u trách nhi m b t và ki m tra n i dung gói tin ra/vào card m ng.

7.3.1 c đi m c a gói tin HTTP request đ n HTTP Proxy Server:

Theo tài li u RFC v HTTP Protocol, gói tin HTTP request đ n Proxy server s có đnh d ng nh sau :

Hình 30 nh d ng c a gói tin g i đ n proxy server

Trong hình minh h a trên, ta th y n i dung 1 gói tin HTTP Request (câu l nh HTTP đây chính là l nh GET) đ c b sung thêm tr ng Proxy-

Connection: Keep-Alive. ây chính là đ c đi m m u ch t đ ph n bi t gói tin HTTP Request đ n 1 Proxy Server so v i các gói tin thông th ng khác.

7.3.2 Tóm t t các b c c n l u ý khi xây d ng module;

- Kh i t o các thông tin c n thi t (đa ch ,port,..) cho 1 SOCK_RAW Socket.

- Chuy n ch đ ho t đ ng c a Socket sang ch đ SIO_RCVALL (b t t t c các gói tin ra/vào h th ng).

- B t đ u nh n và x lí gói tin. L u ý: Do m c tiêu đ ra ban đ u c a module là b t và x lí các gói tin HTTP (TCP) nên c n ph i g b các Header c a gói tin nh n đ c (đây là các gói IP) r i m i b t đ u x lí. - Tham kh o thêm tài li u v c u trúc gói tin TCP/IP và HTTP Protocol

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

7.3.3 Chi ti t các đ i t ng, hàm x lí chính c a module :

- socket(AF_INET, SOCK_RAW, IPPROTO_IP)

• Hàm t o Socket. L u ý ph i kh i t o socket d ng SOCK_RAW thì m i có th b t đ c gói tin t ng IP.

- WSAIoctl(SOCKET s,DWORD dwIoControlCode, , , , , , ,)

• Hàm thi t l p ch đ ho t đ ng cho socket. Ch c n l u ý đ n 2 tham s đ u tiên: SOCKET c n thi t l p và ch đ ho t đ ng. đây

dwIoControlCode ph i b ng SIO_RCVALL thì module m i có th b t đ c các gói tin ra/vào card m ng

- M t s hàm liên quan khác: recv, WSAStartup, …

7.4 Module ch n đa ch IP:

Module ch u trách nhi m l c và ch n các gói tin ra/vào card m ng d a trên đa ch IP. Module đ c xây d ng d a trên mô hình Filter-Hook Driver c a Windows 2000 DDK.

7.4.1 Gi i thi u v Filter-Hook Driver :

Filter-Hook Driver là khái ni m đ c Microsoft đ a ra trong tài li u v Windows 2000 DDK. ây là Driver m r ng các tính n ng c a IP Filter Driver (Có s n trong h di u hành Windows 2000 tr v sau).

Th c ch t Filter-Hook Driver không ph i là 1 trình đi u khi n dành cho môi tr ng m ng, nó đ c xem nh 1 trình đi u khi n dành cho nhân c a h th ng (Kernel Mode Driver). Bên trong trình đi u khi n này, chúng ta ch c n đnh ngh a 1 hàm CALLBACK (1 d ng hàm b t s ki n) và đ ng kí hàm CALLBACK này cho trình đi u khi n b l c đ a ch IP c a h th ng (IP Filter

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

Driver). Khi đ ng kí thành công, b l c đa ch s g i l i hàm CALLBACK khi 1 gói tin đ c g i ra hay nh n vào h th ng đ x lí.

7.4.2 Tóm t t các b c xây d ng Filter-Hook Driver đ b t gói tin:

- Kh i t o Filter-Hook Driver. Cung c p tên và các thông s c b n cho Driver nh sau:

LoadDriver("IpFilterDriver","System32\\Drivers\\IpFltDrv.sys", null, true)

- L y con tr đa ch c a Ip Filter Driver đã kh i t o b c 1 đ kh i t o và đ ng kí hàm CALLBACK.

- Kh i t o và đ ng kí hàm CALLBACK b ng cách g i con tr hàm CALLBACK đã đnh ngh a s n cho IP Filter Driver.

- B t đ u l c gói tin. G i hàm StartFilter.

- Khi mu n k t thúc, không l c gói tin n a thì ta ph i g b thông tin đ ng kí kh i IP Filter Driver. Lúc này, ta ch c n đ ng kí l i v i Driver v i con tr hàm CALLBACK là Null.

7.5 Chi ti t l u tr d li u : 7.5.1 B ng ForbiddenProxy 7.5.1 B ng ForbiddenProxy

Tên tr ng Ki u Chú thích

ProxyIP Text a ch IP c a proxy b c m (do service l u l i đ c trong quá trình ho t đ ng) 7.5.2 B ng TrustedProxy: Tên tr n g Ki u Chú thích

Lu n v n t t nghi p M ng máy tính GVHD: ThS Hoàng C ng

ProxyIP Text a ch IP c a các Proxy server tin c y (th ng là đa ch Proxy Server trong m ng LAN)

7.6 S đ ho t đ ng c a Module ch n đa ch IP :

Service Kh i đ ng

Module ch n IP 1

Module b t gói tin

Kh i đ ng 2 Card m ng Gói tin IP Request đ n Proxy Server? Phát/Nh n B t đ u l c Thêm IP vào b l c 4 3 5 6 7 8 Hình 31 S đ ho t đ ng c a module ch n đa ch IP

Một phần của tài liệu Lập trình vượt firewall (Trang 76)