Skip to content

Commit a3665b3

Browse files
committed
Remove irrelevant packets
Signed-off-by: Still Hsu <[email protected]>
1 parent b87e0dd commit a3665b3

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

xor-encode-malware/MalwareC2TrafficPoC/Solution/ctf-rewrite-flag.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@
1717
type=str, nargs='?')
1818
args = parser.parse_args()
1919
if not re.search(flag_re, args.flag):
20-
raise ValueError(f'Unexpected flag format. Flag must match the regular expression {flag_re}.')
20+
raise ValueError(
21+
f'Unexpected flag format. Flag must match the regular expression {flag_re}.')
2122

2223
packets = rdpcap(args.input)
2324
new_packets = []
2425
for packet in packets:
2526
ip_packet = packet.getlayer('IP')
26-
if ip_packet and ip_packet.dport == 433:
27-
raw_payload = ip_packet.getlayer('TCP').payload
27+
if ip_packet and ip_packet.src == "10.152.152.150" and ip_packet.dport == 433:
28+
tcp_packet = ip_packet.getlayer('TCP')
29+
raw_payload = tcp_packet.payload
2830
if not raw_payload:
2931
new_packets.append(packet)
3032
continue
@@ -36,14 +38,15 @@
3638
length = int.from_bytes(raw_length, 'big')
3739

3840
base_length = len(key) + len(raw_length)
39-
data = xor_data(tcp_payload[base_length: base_length + length], key).decode('utf-8')
41+
data = xor_data(
42+
tcp_payload[base_length: base_length + length], key).decode('utf-8')
4043
deserialized_data = json.loads(data)
4144
if not re.search(flag_re, deserialized_data['Description']):
4245
new_packets.append(packet)
4346
continue
4447

4548
deserialized_data['Description'] = args.flag
46-
new_json = json.dumps(deserialized_data).encode()
49+
new_json = json.dumps(deserialized_data, indent=4).encode()
4750
new_data = xor_data(new_json, key)
4851
new_length = xor_data(key, len(new_data).to_bytes(2, 'big'))
4952
new_payload = key + new_length + new_data
@@ -55,10 +58,14 @@
5558

5659
raw_payload.load = new_payload
5760
packet['TCP'].payload = raw_payload
61+
packet['TCP'].explicit = tcp_packet.explicit
5862
new_packet = l2.Ether(packet.build())
63+
new_packet['TCP'].time = tcp_packet.time
64+
new_packet.time = packet.time
5965
new_packets.append(new_packet)
6066
else:
6167
new_packets.append(packet)
6268
new_plist = PacketList(new_packets)
6369
wrpcap(args.output, new_plist)
64-
print(f"Dumped the modified capture to {args.output}; be sure to verify with ctf-solve.py!")
70+
print(
71+
f"Dumped the modified capture to {args.output}; be sure to verify with ctf-solve.py!")
Binary file not shown.

0 commit comments

Comments
 (0)