Winteacher.com  (Farsi User Guide)  
Winteacher.com
Theft On The Web: Prevent Session Hijacking
 

در این بخش ما به مواردی اشاره می کنیم که یک Attacker می تواند از آنها در شبکه استفاده کند مانند گرفتن با دزدیدن Session ها

بین دو کامپیوتر یا Monitor کردن ارتباط دو سیستم یا تغییر دادن ارتباط بین دو سیستم و....

 
At A Glance:
  • TCP hijacking mechanics
  • ACK packet storms
  • UDP attacks
  • Network attack prevention
 

سوالی که پبش می آید می تواند اینها باشد :

  • اول چگونه این موارد رخ می دهند و کار می کند؟

  • دوم آیا شبکه ما مستعد این Attack ها می باشد؟

  • سوم چطور می توان جلوی آنها را گرفت ؟

Session Hijacking

برای اینکه ارتباط بین دو سیستم معمولا محافظت نمی شود بوسیله Credential در زمان شروع ارتیاط .

این نوع Attack معمولا سه حالت دارد Man-in-the-middle (MITM) , Blind Hijack, and Session Theft.

 
Man-in-the-middle (MITM)

در این نوع Attacker ارتباط بین دو سیستم را بطور کامل قطع می کند . در این روش ارتباط سرور با Client کاملا قطع شده و Hacker به جای Client با

Server ارتیاط بر قرار می کند و یا با سرور ..استفاده از Public Key برای جلوگیری از این Attack روش مناسب می باشد .

Blind Hijack

این نوع روش معمولا کم استفاده می شود چون کارش فقط بر هم زدن ارتباط بین دو سیستم می باشد و با تزریق اطلاعات مشکل ساز بین Packet های

ارسالی بین دو سیستم موجب قطع ارتباط آنها می شود در واقع موجب می شود که اطلاعات بین دوسیستم در شبکه به مقصد نرسد و در شبکه گم شود.

به همین دلیل خیلی کم این مورد توسط Attacker ها رخ می دهد .

Session Theft Attack

در این روش Attacker نه کاری با ارتیاط بین دوسیستم دارد و نه چیزی بین ارتباط آن دو وارد با تزریق می کند بلکه در این روش Attacker یک Session جدید

می سازد با از Session موجود استفاده می کند برای برقراری ارتباط یا سیستم ها .این حمله در Application Layer رخ می دهد و مخصوص Web می باشد.

این روش بیشترین موارد Attack از این نوع را شامل می شود .

 
Hijacking a TCP Session

یکی ار قابلیتهای TCPIP این می باشد که در آن Packet ها به ترتیب و با اطمینان بالا ردوبدل می شود و Packet ها گم نمی شود برای این کار

TCPIP  از Acknowledgement ACK Packets و از Sequence Number استفاده می کند. دستکاری کردن این دو مورد را TCP Session Hijacking می نامند.

یا بهتر است یگوییم این دو مورد موارد اساسی برای شروع و مقدمه این نوع Attack می باشند.

در بالا گفتیم که MITM بسادگی می تواند بین دو سیستم Server و Client قرار بگیرد و

برای اینکه متوجه شوید که Attacker چگونه دزدکی می تواند وارد شود و مشکل ایجاد کند در Blind Hijack باید 

یه شروع ارتیاط  بین Client با سرور دقت کنید.

در شکل Figure1 سیستم Client شروع کنند ارتباط می باشد و با ارسال Sync Packet  و Sequence Number X به سمت سرور شروع کننده می باشد .

x در اینجا شماره می باشد .سرور جواب را با یک SYN/ACK Packet که دارای یک Sequence Number P  مربوط به سرور می باشد

و یک Sequence Number X+1 که از

Client گرفته بود آن را یک واحد اضافه می کند .بعد از گرفتن SYN/ACK سیستم Client به سمت سرور ACK Packet را ارسال می کند که درآن P گه همان

Sequence Number مربوط به سرور می باشد + یک واحد کرده و ارسال می کند .حالا دو سیستم آماده ارتباط و ردوبدل کردن Data می باشند و...

به Sequence Number دقت کنید چون یرای شرح Attack ها به آن نیاز داریم . تذکر Sequence Number می تواند یک واحد یابیشتر اضافه شود ,

بستکی مستقیم دارد به مقدار DATA و...

 

   

      Figure 1:  TCP Three-Way Handshake

دراینجا مثالی زده شده که در آن Client یک Packet ارسال کرده که در آن Data وجود دارد در بخش Payload آن که حرف "A" می باشد .

در شکل 2 مشاهده می کنید که حرف A باید توسط  یک Packet که دارای SeqNumber X+1 می باشد به سمت سرور برود و سرور بعداز دریافت A جواب

می دهد یعنی Packet را گرفته جواب آن ACK Packet می باشد که دارای SeqNumber X+2 می باشد .

   

      Figure 2 Sending DATA Over TCP

دراینجا 1 Byte که همان کارکتر A می باشد به SeqNumber X+1 که برای Client می باشد اضافه می شود توسط Server برای Client ارسال می شود .

اگر Attacker بخواهد وارد عمل شود در ابن مرحله او باید موارد زیر را رعایت کند یا بداند :

اول باید آدرس Client راداشته باشد دوم باید حدس بزند عدد Sequence Number بعدی که سرور منتظر آن است تا از Client دریافت کند و سوم یاید DATA

مربوط به Packet بعدی را که Client می خواهد ارسال کند به سرور را نیز داشته باشد .

 

مرحله اول و دوم به راحتی انجام پذبر است اما سومی امکانپذبر نیست مگر اینکه Attacker جادوگر باشد .

در نتیجه Attacker باید کاری کند که مشکل مرحله سوم را جور دیگری حل کند . او باید جلوگیری کند از ارسال Packet بعدی Client که دارای SeqNumber

نیز می باشد .برای اینمنظور Attacker باید به سرور یک Packet اسال کند و امیدوار باشد

که Packet وی زودتر از Packet Client به سرور برسد در اینجا Attacker یک Packet که دارای یک SeqNumber X+2 می باشد ارسال می کند به سمت سرور

البته Attacker ها برای اطمینان بیشتر ازاینکه Client نتواند زودتر به سرور Packet ارسال کند از روشهایی استفاده میکنند تا Client را دچار مشکل کنند

تا Client نتواند بموقع Packet خود را به سرور ارسال کند برای اینمنظور از DoS و ARP Spoofing استفاده می کنند تا Client را گیج کنند .

دراین مدت زمان کوتاه Attacker به سرور می تواند Packet خود که دارای DATA Z برای مثال می باشد و با SeqNumber X+2 را ارسال  کند .

خوب حالا Packet ارسال شده و سرور آن را دریافت کرده و ACK Packet  را با SeqNumber X+3 را برای Client واقعی نه Attacker ارسال می کند

به نشانه آنکه DATA Z را دریافت کرده .اما وقتی Client واقعی این ACK Packet را دریافت می کند بیشتر گیج می شود و دچار سردرگمی میشود

چراکه این بیغام برای Client معنا ندارد زیرا Client به سرور DATA Z را ارسال نکرده تا منتظر این ACK باشد مشکل بعدی SeqNumber X+3 می باشد که

Client آن را Invalid می داند در نتیجه ترتیب SeqNumber نبز بین Client/server نیز بهم می ریزد.

در اینجا Attacker توانسته رابطه Client را با سرور دچار اشکال کند و آن را ازبین ببرد در نتیجه Attacker موفق شده کارش را انجام بده .

ادامه این روند که در بالا گفته شد موجب می شود که Attacker پشت سر هم برای مثال DATA Z را با SeqNumber X+Y را ارسال کند و سرور هم

پشت سرهم ACK Packet را برای Client بیچاره ارسال کند و.............

البته با یک بار انجام این کار رابطه بین Client/Server از بین می رود وقتی این مورد رخ داد Client چون SeqNumber در یافتی از سرور برایش Invalid است

یک Packet جدید برای  Resync به سمت سرور ارسال می کند تا SeqNumber صحیح را دریافت کند اما سرور دوباره همان SeqNumber نادرست را ارسال

می کند و این عمل درون Loop افتاده و تا زمانیACK Packet در شبکه ازبین برود رخ می دهد این حلقه موجب کندی Performance

سیستم ها و شبکه میشود به این رویداد ACK Storm می گویند (این رویداد در زیر بیشتر شرح داده شده . شکل Figure 4)

 
   

      Figure 3:  Blind Injection

Figure 4: ACK Storm

 

Attacker برای این کار و Automatic کردن  آن از Tools استفاده می کنند و یا یرنامه هایی که خود نوشته اند تا بتوانند این کار را با سرعت بالا و زمان کم

انجام دهند این روش را TCP Session Hijacking می نامند. Juggernaut , Hunt دو Tools می باشد برای این نوع Attack.

 
  • Attackers can automate the session hijacking process just described with tools such as Juggernaut, by Mike Schiffman, and Hunt, by Pavel Krauz

Determining Susceptibility

مسلما سرویسهای که در شبکه وجود دارند نقاط ضعف نیز دارند مانند DNS , FTP, TELNET و... سرویسها اگر ترافیک آنها توسط Encryption محافظت نشود

راحت می توان به آنها حمله کرد درشبکه شما می توانید از IPSEC و یا SSL استفاده کنید برای محافظت دربرابر این نوع Attack ها . مخصوصا FTP , Telnet که

این دو بسیار بی دفاع می باشند در برابر Attacker ها.

 

Tricks and Techniques

Session Hijacking دارای حالتهای متفاوت می باشد و در هر شرایط روشها و حیله های خودش را دارد که Attacker ها می توانند از آنها استفاده کنند

در نتیجه Attacker ها از یک حالت و وضعیت استفاده نمی کنند تا ما فقط آن حالت را بدانیم و مراقب آن باشیم .

برای مثال در MITM یک Attacker باید ترافیک را بین دو سیستم را از طریق سیستم خود مسیر دهی کند و با عبور دهد برای این کا او می تواند از

روش ICMP Packet Redirect استفاده کند و یا از ARP Spoofing در نتیجه می بینید که Attacker ها روشهای خرابکاری متفاوت زیادی دارند .

در TCP ACK انها با Routing Table کاردارند در نتیجه Routing Table Modification را انجام می دهند و....

Attacker ها روشهای حیله گری زیادی دارند مانند:

  • Some common items include TCP ACK packet storms, ARP table modifications, TCP resynchronizations, and remote modifications of routing table

Hijacking a UDP Session

این روش کامل همانند نوع TCP می باشد فقط با این تفاوت که مکانیزم Sequence Number در UDP بصورت ساختاری اصلا وجود ندارد در نتیحه Attacker

دیگر نگران SeqNumber نیست چون نیازی به آن ندارد در واقع UDP یک ارتباط Connectionless می باشد در نتیجه بسیار ساده تر از نوع TCP برای Attacker

می باشد .

   

      Figure 5:  Session Hijacking over UDP

سرویسهایی مانند DNS, Game online, Peer-to-peer Protocols مواردی می باشند که ازUDP استفاده می کنند .

 
ARP Table Modifications

ARP برای IPAddress-to-MacAddress استفاده می شود .

در زیر یک نمونه مثال زده می شود .

در اینجا HOST A:IP 192.168.1.100 می خواهد یک Packet ارسال کند به HOST B:IP 192.168.1.250 .

تازمانی که ARP Table این دوسیستم خالی باشد هیچ ارتباط بین این دو سیستم رخ نمی دهد .برای پر کردن جدول و بدست آوردن MAC همدیگر سیستم

شروع کنند ارتباط یعنی HOST A یک ARP Broadcast Request ارسال می کند این PACKET به دست تمام سیستم های شبکه می رسد اما فقط یک سیستم

به آن جواب می دهد و آن هم سیستمی است که IPAddress درخواستی در Request را دارا باشد .بقیه سیستم ها Request را Discard می کنند

حالا HOST A جواب را گرفته مبنی براینکه MAC سیستم به آدرس 192.168.1.250 مساوی BB:BB:BB:BB:BB:BB است .

   

      Figure 6:  Finding the Owner of a MAC Address

سیستم A حالا ARP Table خود را Update کرده و آماده این است که اول Sync packet و سپس Data را به سیستم B ارسال یا Send کند .

خوب سوال پیش می آید که Attacker در اینجا چکار می تواند بکند یا چگونه می تواند مشکل ایجاد کند

چواب: اگر برای مثال Attacker فیل از HOST B به Request که از طرف HOST A به شبکه Broadcast شده جواب دهد برای مثال جواب

را ابنگونه ارسال کند که HOST B دارای MAC : E0:E0:E0:E0:E0:E0 است چه اتفاقی می افتد .

   

      Figure 7:  Spoofed Reply

بله همانند شکل 7 مشاهده می کنید که سیستم HOST A فریب خورده و DATA خود را به سیستم Attacker که دارای MAC: E0:E0:E0:E0:E0:E0 می باشد

ارسال می کند و فکر می کند که به HOST B ارسال کرده .

در نتیجه Attacker اطلاعاتی که مالکیت آن برای HOST B بوده را دزدیده و احتمالا با گرفتن پول آنها را به HOST B پس می دهد ........

 

Attacker می تواند با Tools هایی مانند Hunt به دو سیستم ARP Reply های نادرست و دستکاری شده ارسال کند برای مثال به HOST A یک ARP Reply

ارسال کند که در آن  MAC:C0:C0:C0:C0:C0:C0  را یه HOST B نسبت داده و به HOST B یک Reply ارسال کند که در آن MAC:D0:D0:D0:D0:D0:D0 را به

HOST A نسبت داده باشد ما می دانیم که هر دو MAC نادرست می باشد .

   

      Figure 8:  Stopping a TCP ACK Strom

در نتیجه HOST A/B هر دو Packet های خود را به جایی که بهم ارسال کنند به سیستم هایی که دارای این دو MAC هستند در شبکه ارسال می کنند

و چون آن دوسیستم ناشناس با این دو MAC آدرس Packet ها را دریافت می کنند به دلیل Invalid بودن آنها بین دوسیستم HOST A/B و آن دو سیستم

ناشناس در شبکه ترافیک ACK Strom رخ میدهد که ما ACK Storm را در بالا شرح داده ایم .

Conclusion
Protecting network sessions that carry sensitive and important data such as credit card numbers, bank transactions, and administrative server commands is an important first step at improving the security posture of your organization. By removing an attacker's ability to inject data into those sessions, you raise the security bar and force your adversary to try other, more complex avenues that are less likely to compromise your organization's security

دوست عزیز اگر مطالب این صفحه یرای شما مفید بوده لطفا از بین 1 تا 5 به این صفحه ارزش دهی کنید  برای اینکار یر روی یکی از ستارهای بالا کلیک کنید باتشکر.

 
 

TCP Resynchronizing
To hide his or her tracks, an attacker who is finished with the session hijacking attack might want to resynchronize the communicating hosts. The problem is that after the attack, the two hosts whose session was hijacked will be at different points in the session. In other words, each host will be expecting different sequence numbers.

For example, the server might think that it is 40 bytes into the session when really the client might have sent only 29 bytes. Thus, the expected sequence numbers on each side will differ. Since sequence numbers move in only a positive direction, it's not possible with TCP stacks to manipulate the server so that its expected sequence number moves downward to match the client's sequence number.

In this situation, the attacker needs some way to move the client's sequence numbers to match the servers. Tools like Hunt try to solve this problem by sending a message to the client. Here is an example (note that the number 13 is used arbitrarily):

msg from root: power failure – try to type 13 chars

Hunt will replace this value with whatever number of bytes the client is required to send to be resynchronized with the server. The hope is that the user will comply. When the user has typed enough characters, Hunt will use more forged ARP reply packets to restore the correct values to the ARP table entries it modified on the client and server to avoid TCP ACK storms.

This technique of resynchronizing client and server TCP stacks is dependent on the user following instructions sent by the Hunt tool, and will probably not work against well-educated users or any protocol other than Telnet or possibly FTP.


Remotely Modifying Routing Tables
As discussed earlier, an attacker who wants to hijack a session at the network level wants to route all communications between a client and server through him or her, making it easy to monitor, modify, and inject data into the session, as in MITM attacks. This boils down to the attacker tricking one of the hosts, usually the client, into routing all its session traffic through the attacker. When an attacker is local to the host whose traffic is being intercepted, one popular way to modify the routing table of the host is to forge ICMP Redirect (type 5) packets and advertise them as the route to take when sending data.

To protect Windows® hosts from forged ICMP redirect attacks, set the EnableICMPRedirect value to 0 under the registry key HKLM\System\CurrentControlSet\Services\AFD\Parameters.

OR Using Windows Firewall  > advanced Settings > ICMP Settings > Deselect Allow Redirect

در زیر مشخصات نویسنده این مقاله را مشاهده می کنید .

Theft On The Web: Prevent Session Hijacking

Kevin Lam, David LeBlanc, and Ben Smith all work on security at Microsoft. Ben is the coauthor of Microsoft Windows Security Resource Kit and David is the coauthor of Writing Secure Code 2 (both from Microsoft Press).
 

Last Updated: December 26, 2008

Winteacher.com
Theft On The Web: Prevent Session Hijacking

 © 2003-2009 Winteacher.com . All rights reserved