Pivoting Network

โดย admin

2 นาที
แชร์
Blog Thumbnail

Pivoting Network


สวัสดีมิตรรักนักอ่านทุกท่านครับ วันนี้ผมจะมาพูดเรื่องของ Pivot ว่ามันคืออะไร? ใช้เครื่องมืออะไรในการทำได้บ้าง? และมีประโยชน์อย่างไร? เอาล่ะเรามาเริ่มกันเลยครับ

Pivot คืออะไร?

Pivot คือเทคนิคที่ใช้เพื่อเข้าถึงเครือข่ายภายในได้ (Internal Network) โดยเมื่อเราสามารถเข้าควบคุมเครื่องเป้าหมายที่หนึ่ง (Victim 1) ที่สามารถเข้าถึงได้จากเครือข่ายภายนอก (External Network) และมีการเชื่อมต่อเครือข่ายภายในนั้น หมายความว่าเราสามารถใช้เทคนิคนี้ เพื่อเข้าไปสู่เครื่องเป้าหมายที่สอง (Victim 2) ที่อยู่ในเครือข่ายภายในได้นั้นเอง

จากตรงนี้ผมมั่นใจว่าทุกท่านที่อ่านอาจจะงง ๆ ว่าเอ๊ะมันเข้าถึงอะไรยังไงนะ เพราะฉะนั้นเรามาจำลองเหตุการณ์คร่าว ๆ กันสักหน่อยดีกว่า…

สมมุติว่าพวกคุณได้รับการจ้างวานจากใครก็ไม่รู้มาว่า “เฮ้~ ฉันอยากจะให้แกมาลองขโมยข้อมูลของบริษัทฉันสักหน่อย ซึ่งข้อมูลจะอยู่ในเครื่องที่ชื่อว่า secret” หลังจากนั้นผู้ว่าจ้างก็ส่งรูปนี้มาให้

Ref: https://tryhackme.com/room/wreath

จากรูปจะเป็นแผนผังจำลองระบบภายในบริษัทของผู้ว่าจ้าง ซึ่งจะมีเครื่องที่อยู่บนเครือข่ายของเป้าหมายอยู่ทั้งหมด 4 เครื่อง (สีน้ำเงิน) โดยจะสามารถแบ่งได้เป็น 2 ประเภท คือ

  • เครื่องสาธารณะที่เปิดให้คนภายนอกสามารถเข้าถึงได้ 1 เครื่อง (สีเขียววงนอก)
  • เครื่องที่คนภายนอกไม่สามารถเห็นหรือเข้าถึงได้ 3 เครื่อง (น้ำเงินวงใน)

ส่วนเครื่องสีแดงนอกกรอบ คือเครื่องของผู้โจมตีหรือก็คือตัวเรานั้นเอง จากรูปนี้เราจะเห็นได้ว่าเครื่องที่เราต้องการจะขโมยข้อมูลนั้นมีการใช้เครือข่ายที่ใช้กันเฉพาะภายในองค์กร (Internal Network) ด้วยเหตุนี้เราจึงไม่สามารถที่จะเข้าไปจัดการกับเครื่องเป้าหมายจากเครือข่ายภายนอกได้โดยตรง

Ref: https://tryhackme.com/room/wreath

แต่เรายังสามารถที่จะเข้าไปจัดการกับเครื่องสาธารณะ (Public Server) ที่สามารถเข้าจากเครือข่ายนอกได้อยู่ ณ จุดนี้เองจะเห็นได้ว่าเราจำเป็นต้องนำวิธีการ pivot มาใช้เพื่อเข้าถึงเครื่องเป้าหมายของเรา

ทว่าการที่เราจะทำ pivot ได้ เราจำเป็นที่จะต้องเข้าควบคุมเครื่องสาธารณะให้ได้ก่อนเป็นอันดับแรก และหลังจากเขาควบคุมเครื่องสาธารณะนั้นได้สำเร็จก็จะเป็นขั้นตอนการทำ pivot เพื่อเข้าไปสู่เครื่องเป้าหมายหลักต่อไป โดยวิธีการทำ pivot ส่วนใหญ่ที่ใช้กันหลัก ๆ จะมีอยู่ด้วยกัน 2 แบบ

  1. Proxying จะเป็นการสร้างการเชื่อมต่อแบบ proxy โดยเราจะทำการสร้าง proxy server จำลองบนเครื่องสาธารณะ (Public Server) เพื่อกำหนดเส้นทางการรับส่งข้อมูลที่ต้องการไปยังเครือข่ายภายในของเป้าหมาย (Internal Network)

2. Port Forwarding จะเป็นการสร้างการเชื่อมต่อแบบโดยตรงกับเครื่องเป้าหมาย (secret) โดยมีเครื่องสาธารณะ (Public Server) เป็นตัวกลางในการรับส่งข้อมูล

ทั้ง 2 วิธีนี้เราสามารถเลือกใช้วิธีไหนก็ได้ในการทำ pivot ซึ่งทั้ง 2 วิธีนี้จะมีเครื่องมือที่ใช้การทำงานแตกต่างกันไปในแต่ละวิธี

เครื่องมือที่ใช้สำหรับ Pivot

และผมจะมาแนะนำเครื่องมือที่ใช้สำหรับทำ pivot โดยในความคิดเห็นของผม ผมจะแบ่งเครื่องมือที่ใช้ในการทำ pivot ออกเป็น 2 แบบหลัก ๆ คือ

  1. ใช้ Metasploit ในการทำ pivot Metasploit เป็นหนึ่งในเครื่องมือที่มีความเก่งและโกงในระดับหนึ่ง ตัวของมันนั้นสามารถที่จะช่วยในการทำการโจมตีแบบต่าง ๆ ได้เยอะมาก และหนึ่งในความเก่งนั้นก็คือการทำ pivot เครื่องมือตัวนี้จะทำให้การทำ pivot นั้นเป็นอะไรที่ง่าย รวดเร็วและประหยัดเวลามากขึ้น โดย Module ใน Metasploit ที่จะมาช่วยเราในการทำนั้นคือ “autoroute” และ “socks_proxy” ที่จะใช้ร่วมกับ proxychains อีกทีหนึ่ง

รูป Module ของ socks_proxy

รูป Module ของ autoroute

2. Manual pivot เครื่องมือที่ไม่ใช้ Metasploit นั้นจะมีความยากในการใช้งานมากกว่ามาก เนื่องด้วยตัวเราต้องเขียนคำสั่งต่าง ๆ ด้วยตัวเอง ซึ่งเครื่องมือในส่วนนี้ผมมีแนะนำอยู่ประมาณ 4 ตัว

a. SSH คือ Network Communication Protocol ตัวหนึ่งที่ใช้เพื่อทำการแลกเปลี่ยนข้อมูลระหว่างคอมพิวเตอร์ด้วยกัน จะมีการเข้ารหัสข้อมูลเพื่อความปลอดภัยในระหว่างการสื่อสาร ซึ่ง SSH จะใช้ในระบบปฏิบัติการ Linux หรือ Unix เป็นหลัก โดย SSH สามารถใช้ทำ pivot ได้ทั้งแบบวิธี port forwarding และ proxying ซึ่งขึ้นอยู่กับคำสั่งที่ใช้และจะใช้ร่วมกับคำสั่ง proxychains ในการรับส่งข้อมูล
 ตัวอย่างคำสั่ง

ssh -R LOCAL_PORT:TARGET_IP:TARGET_PORT USERNAME@ATTACKING_IP -i KEYFILE

b. Socat คือ เครื่องมือที่ใช้สำหรับการรับส่งข้อมูลระหว่างเครื่องคอมพิวเตอร์ด้วยกันโดยจะต้องอาศัยเครื่องคอมพิวเตอร์เป็นตัวกลางเพื่อติดตั้งมันให้สามารถทำงานได้ ซึ่งตัว Socat นั้นสามารถนำไปประยุกต์ใช้ได้กับหลาย protocol เช่น TCP, UDP, UNIX เป็นต้น อีกทั้งยังสามารถใช้ได้หลายระบบปฎิบัติการ เช่น Windows, Linux เป็นต้น ซึ่ง Socat สามารถใช้ทำ pivot ได้ทั้งแบบวิธี port forwarding และ proxying ซึ่งขึ้นอยู่กับคำสั่งที่ใช้ 
 ตัวอย่างคำสั่ง

socat tcp:ATTACKING_IP:8001 tcp:TARGET_IP:TARGET_PORT,fork

c. Chisel คือ เครื่องมือที่สามารถใช้ในการทำ pivot แบบ proxying หรือ port forwarding อย่างรวดเร็วผ่านเครื่องเป้าหมายที่เราควบคุม สามารถใช้ได้หลายระบบปฎิบัติการ โดย Chisel จะมี 2 โหมดการทำงานหลัก ๆ คือ server และ client ซึ่งการทำงานคร่าว ๆ ของ Chisel คือตัวมันเองจะจำลองตัวเองเป็น server เพื่อรอรับข้อมูลต่าง ๆ จาก Chisel ของโหมด client และจะใช้ร่วมกับคำสั่ง proxychains ในการรับส่งข้อมูล 
ตัวอย่างคำสั่ง

chisel server -p LISTEN_PORT

d. Sshuttle คือ เครื่องมือที่มีการใช้ SSH ในการสร้างการเขื่อมต่อแบบ proxy ซึ่งจะมีความแตกต่างจากเครื่องมืออื่น ๆ อยู่นิดหน่อยตรงที่เมื่อตัว sshuttle ทำการเชื่อมต่อไปยังเครื่องสาธารณะได้สำเร็จ มันจะทำการกำหนดเส้นทางการรับส่งข้อมูลของเรากับเครื่องภายในเครือข่ายของเป้าหมายผ่าน proxy เองโดยที่ไม่ต้องใช้ proxychains ในการรับส่ง 
ตัวอย่างคำสั่ง

sshuttle -r user@address --ssh-cmd "ssh -i KEYFILE" SUBNET

จากข้อมูลข้างต้น พอจะเห็นภาพคร่าว ๆ แล้วใช่ไหมครับ ว่าทำไมเราถึงต้องทำ Pivot กัน ซึ่งประโยชน์ที่เห็นชัด ๆ เลย คือ Pivot เป็นเทคนิคที่ดีมากเทคนิคหนึ่ง ที่ช่วยให้เราสามารถเข้าไปยังเครือข่ายภายในองค์กรของเป้าหมายได้จากเครือข่ายภายนอกที่เราไม่มีสิทธิ์เข้าถึงได้

สุดท้ายนี้ แน่นอนครับว่าการอ่านบทความช่วยให้เราเข้าใจมากขึ้น แต่การที่เราลงมือทำด้วยตนเองนั้น จะยิ่งช่วยให้เราเข้าใจมากขึ้นไปอีก เพราะฉะนั้นแล้วผมจึงมีแล็บของ TryHackMe มานำเสนอ นั่นคือ “Room: Wreath (https://tryhackme.com/room/wreath)” โดยแล็บนี้จะเป็นการสอนเรื่องของ pivot ตั้งแต่ 0 ถึง 100 เลยทีเดียว เอาล่ะก็สมควรแกเวลาแล้ว ผมขอจบบทความนี้ไว้เพียงเท่านี้นะครับ ขอให้สนุกกับการทำแล็บครับ


Ref:

แชร์
กลับไปด้านบน
  • Blog thumbnail

    อ่านต่อ

  • ตอนก่อนหน้า Lab Double Pivoting

    บทความที่เกี่ยวข้อง

    อัปเดตข้อมูลด้านไซเบอร์ ทุกสัปดาห์
    รับข่าวสารความรู้เชิงลึกเกี่ยวกับความปลอดภัยไซเบอร์จากดาต้าฟาร์มก่อนใคร

    ฟีเจอร์นี้จะเปิดให้ใช้งานเร็ว ๆ นี้ โปรดติดตาม

    ส่งสัปดาห์ละ 1 ครั้ง ไม่มีสแปม ยกเลิกการรับข่าวสารได้ทุกเมื่อ