Pivoting Network

Datafarm
3 min readNov 2, 2022

สวัสดีมิตรรักนักอ่านทุกท่านครับ วันนี้ผมจะมาพูดเรื่องของ 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
socat tcp-l:8000 tcp:ATTACKING_IP:443

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

chisel server -p LISTEN_PORT
chisel client LISTEN_IP:LISTEN_PORT LOCAL_PORT:TARGET_IP:TARGET_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 เลยทีเดียว เอาล่ะก็สมควรแกเวลาแล้ว ผมขอจบบทความนี้ไว้เพียงเท่านี้นะครับ ขอให้สนุกกับการทำแล็บครับ

--

--

No responses yet