Hidden coordinates
توضیحات چلنج
یک فایل packet capture بهمون داده شده که باید فلگ رو از داخلش در بیاریم
طبق گفته چلنج احتمالا فلگ داخل پیام های ICMP مخفی شده ،ولی بهتره به استراتژی همیشگی بچسبیم و اول ببینیم پیامی هست که رمز نگاری و مخفی نشده باشه
مثل همیشه اول روی فلگ پوش TCP فیلتر میزاریم که ببینیم چی دستمون میاد
کلی پیام TLS داریم میبینیم که فعلا استفاده ای برامون ندارن پس فیلترشون میکنیم که نبینیمشون
خب مثل اینکه از TCP
چیزی در نمیاد فعلا
خب بریم سر ICMP
ببینیم چیزی دستمون رو میگیره یا نه
ICMP payload
یکی از قسمت هایی که خیلی خیلی مهمه payload
داخل ICMP
هست که برای 2 tunneling و در کل انتقال دیتا استفاده میشه چون سادس
خب ما که به پکت های ICMP
نگاه میکنیم میبینیم کلا دو جور payload
دارن این پیاما
-
datadatadatadata
-
abcdefghijklmnopqrstuvwabcdefghi
برنامه هایی که پینگ میگیرن معمولا اگه ازشون بخوای که یسری دیتا هم بفرستن که پینگ کردن یکم سنگین تر شه میان به ترتیب حروف الفبای انگلیسی میچینن payload
رو
پس میتونیم با قاطعیت بگیم اونایی که payload
دومی رو دارن متعلق به نرم افزار پینگ استانداردن
با فیلتر کردن ICMP
هایی که پیلود abcdefghijklmnopqrstuvwabcdefghi
رو دارن رو حذف میکنیم
خب اگه درست جلو اومده باشیم فلگ جاهای محدودی میتونه باشه
باید بگردیم داخل فیلد های مختلف پکت که دیتا ممکنه داخلشون مخفی شده باشه
ICMP sequence number
دیتایی نداشت
ICMP checksum
هم نمیتونه مهم باشه چون مقدار درستی داره
تصور اینکه اینقدر خوب پکت رو درست کرده باشن که از checksum
فلگ در بیاد دور از انتظاره
فیلد ttl
از هدر IP
داخل پیام هایی که از سمت 192.168.1.50 میاد خیلی مشکوکه
ولی قبلش باید یه مقدمه بهتون بگم از ttl
Ttl
ttl
یک فیلد داخل IPv4 هست که نشون میده پکت حق داره چند بار توسط روتر forward شه
حواستون باشه این با forward کردن توی سویچ های link layer فرق داره
و هر دفعه که forward
میشه router
یکی از ttl پکت کم میکنه
یسری router
ها به دلایل امنیتی اینکار رو نمیکنن
وقتی به صفر برسه router
اون پکت رو drop
میکنه
تقریبا همیشه دستگاه فرستنده این فیلد رو یکی از اینا ست میکنه
64, 128, 255
دستگاه 192.168.1.50 مقدار ttl رو به صورت استاندارد ست نمیکنه
از کجا میدونیم؟
چون پکت کپجر روی این دستگاه انجام شده و باید داخل ttl
یکی از اعداد 255،128،64 رو میدیدیم
از کجا میدونیم پکت کپچر روی 192.168.1.50 انجام شده؟
وقتی به پیام های عادی که از سمت 192.168.1.50 هستن نگاه میکنیم میبینیم که ttl=128 دارن یعنی هنوز یکبار هم forward
نشدن
پس ما 192.168.1.50 هستیم
فرمت فلگ uctf{}
هست و ttl
پیام اول فیلتر شده 117 که مطابق کد اسکی u هست که میشه کاراکتر اول فلگ
پیام هایی که فیلتر کردیم رو با وایرشارک export
میکنیم و با این برنامه فلگ رو به دست میاریم
from scapy.all import *
pcap = rdpcap("icmp.pcapng")
for packet in pcap:
#if is not icmp echo request, skip the packet
if packet[ICMP].type != 8:
continue
#print ttl of IP layer
print(chr(packet[IP].ttl), end='')
FLAG 
uctf{Iran_K4run_River}
نویسنده