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}نویسنده




