[Write-up][ສະເຫລີຍ] Forensics 300: Lost in the forest | IceCTF 2018

Frank Xayachack
LaoHacker
Published in
4 min readSep 20, 2018
ບັນຍາກາດຕອນ Submit flag
ຄຳອະທິບາຍ: You've rooted a notable hacker's system and you're sure that he has hidden something juicy on there. Can you find his secret?

ໂຈດນີ້ເຮົາຈະໄດ້ໄຟລ໌ zip ມາໄຟລ໌ໜຶ່ງຊື່ວ່າ fz.zip ເມື່ອແຕກໄຟລ໌ອອກມາກໍ່ຈະໄດ້ folder ໜຶ່ງແລະຢູ່ໃນກໍ່ຈະເປັນ file system ໃນ linux ເລີຍໂດຍຜູ່ຂຽນເອງກໍ່ເລາະໆເບິ່ງວ່າມີຫຍັງໜ້າສົນໃຈບໍ່

ໄຟລ໌ທຳອິດທີ່ໜ້າສົນໃຈແມ່ນໄຟລ໌ຊື່ວ່າ “hzpxbsklqvboyou” ເມື່ອເປີດເບິ່ງກໍ່ຈະມີຂໍ້ຄວາມດັ່ງນີ້

8NHY25mYthGfs5ndwx2Zk1lcaFGc4pWdVZFQoJmT8NHY25mYthGfs5ndwx2Zk1lcaFGc4pWdVZFQoJmT8NHY25mYthGfs5ndwx2Zk1lcaFGc4pWdVZFQoJmT8NHY25mYthGfs5ndwx2Zk1lcaFGc4pWdVZFQoJmT8NHY25mYthGfs5ndwx2Zk1lcaFGc4pWdVZFQoJmT

ເຊິ່ງບໍ່ຮູ້ວ່າມັນເປັນຂໍ້ຄວາມຫຍັງກໍ່ເລີຍຊອກຢ່າງອື່ນຕໍ່ໄປໂດຍໄປເຫັນຮູບໜຶ່ງຢູ່ /home/hkr/Desktop

clue.png

ເປັນຮູບປາຊື່ວ່າ clue.png ເຊິ່ງກໍ່ກວດໄປໝົດບໍ່ວ່າຈະຊອກ strings ເບິ່ງ exif ແຕ່ກໍ່ບໍ່ມີຫຍັງພິເສດເລີຍຄິດວ່າໜ້າຈະເປັນໄຟລ໌ຫລອກ ເມື່ອຊອກຕໍ່ໄປກໍ່ເຫັນວ່າມີໄຟລ໌ .bash_history ເຊິ່ງເກັບຂໍ້ມູນວ່າ fs ນີ້ເຄີຍໃຊ້ຄຳສັ່ງຫຍັງຢູ່ terminal ມາແນ່ ເມື່ອເປີດເບິ່ງຈະເຫັນຄຳສັ່ງຕ່າງໆດັ່ງນີ້

git
exit
cd root
pwd
ls
ls -la
exit
cat /etc/hostname
exit
cat /etc/hostname
exit
cat /eyc/hostname
cat /etc/hostname
echo Centos >> /etc/hostname
bash
echo Centos > /etc/hostname
bash
exit
cd ~/.i3
cd ~
ls
pwd
cd ..
ls
cd .i3
pwd
ls -a
cd ~/.i3
cd
ls
ls -a
pwd
cd ..
ls
ls -a
cd ..
ls
ls -a
cd etc
ls
ls -a
cd i3
ls
cd
ls
ls -a
mkdir .i3
ls
ls -a
ls
ls -a
cd Documents/
ls
mv config ~/.i3
ls
cd ..
ls
ls -a
cd .i3
ls
cd
cd documents
cd Documents/
ls
cd
ls
cd .i3
ls
sudo subl config
cd
ls
cd Pictures/
ls
pwd
cd ..
ls
ls 0a
ls -a
cd bin
ls
cd
ls
cd
ls
ls -a
cd .bashrc
sudo subl .bashrc
sudo subl .bash_aliases
ls
brightness
ls
sudo echo 200 > brightness
sudo su
cd
cd Downloads
wget https://gist.githubusercontent.com/Glitch-is/bc49ee73e5413f3081e5bcf5c1537e78/raw/c1f735f7eb36a20cb46b9841916d73017b5e46a3/eRkjLlksZp
cd
ls
sudo subl .bash_aliases
backlight
brightrness
brightness
ls
cd
command-list
alias-list
alias-list
alias-list
sudo subl .bashrc
sudo subl .bash_aliases
i3-config
alias-list
brightness
i3-config
alias-list
sudo subl .bashrc
alias-list
sudo subl .bashrc
alias-list
bash_aliases
. ~/.bash_aliases
sudo subl .bash_welcome
sudo subl .bash_todo
alias-list
todo
to-do
edit-todo
to-do
cd
alias-list
edit-todo
cd Downloads
ls -a
mv eRkjLlksZp tool.py
cat .bash_aliases
sudo subl .bash_aliases
alias-list
cat .bash_aliases
ls -a
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
javac -version
sudo apt update
apt list --upgradable
javac -version
sudo apt install oracle-java8-installer
javac -version
sudo apt install oracle-java8-set-default
ls
cd bin
ls
./studio.sh
ls
cd android
cd Android/
ls
cd ..
ls
cd ..
cd
./studio.sh
cd ..
ls
cd ..
ls
cd /mnt
ls
cd
cd Downloads
./tool.py ../secret > ../hzpxbsklqvboyou
ls -a
cd ..
ls
cd usr/
ls
cd bin
ls
ls ..
ls
cd ..
ls
cd locals
cd local
ls
cd android-studio/
ls
cd
shred secret
ls
ls -a
sudo subl .bash_aliases
android-studio
ls
ls Documents/
ls
cd Documents/
ls
cd ..
cd Downloads/
rm tool.py
ls
ls
cd
ls
git
sudo apt install git
git config --global user.name "skuli"
git config --global user.email "sheep.man@fake.com"
ls -a
cat .gitconfig
cd Documents/
ls
mkdir projects
ls
cd projects
pwd
cd ..
cd Downloads/
cd java/
ls
cd jre1.8.0_171/
ls
cd bin/
ls
cd ..
cd jre1.8.0_171/
ls
cat README
cd ..
ls
cd ..
ls
cd local/
ls
cd bin/
ls
ls
cd 3840x2160/
ls
cd ..
cd .
cd ..
ls -al
cd .local/
ls
cd share/
ls
ls
cd Write/
ls
sudo chmod +x INSTALL
ls
sudo ./INSTALL
sudo chmod -x INSTALL
cat INSTALL
ls
./Write
ls
cd ..
ls
sudo rm write209.tar.gz
sudo rm -R Write/
ls
cd ..
ls
ls
ls -al
grep / "howdy" 2> /dev/null
cd ..
grep -r "howdy" 2> /dev/null
ls /lib/security/
cd /lib/security/
ls
ls -al
tree
cd howdy/
ls
./cli
./cli.py
ls
exit

ຖ້າຜູ່ອ່ານເລື່ອນເບິ່ງດີໆຈະເຫັນສິ່ງທີ່ໜ້າສົນໃຈຢູ່ 4 ຄຳສັ່ງນັ້ນຄື

wget https://gist.githubusercontent.com/Glitch-is/bc49ee73e5413f3081e5bcf5c1537e78/raw/c1f735f7eb36a20cb46b9841916d73017b5e46a3/eRkjLlksZp....
...
mv eRkjLlksZp tool.py...
....
./tool.py ../secret > ../hzpxbsklqvboyou...
...
rm tool.py

ຈະໄດ້ເຫັນວ່າເຄີຍມີການໃຊ້ wget ເພື່ອໂຫລດໄຟລ໌ໜຶ່ງມາຈາກ gist ຂອງ github ແລ້ວທຳການປ່ຽນຊື່ ເປັນ tool.py ແລ້ວກໍ່ run file tool.py ກັບໄຟລ໌ secret ຜົນລັບຫລັງຈາກ run ແມ່ນເກັບໃນໄຟລ໌ຊື່ hzpxbsklqvboyou (ທີ່ມາມັນມາຈາກນີ້ເອງ!) ຫລັງຈາກນັ້ນກະທຳການລຶບໄຟລ໌ tool.py ຖິ້ມ

ເມື່ອເຮົາຮູ້ຂັ້ນຕອນມັນລ່ະເຮົາມາໂຫລດໄຟລ໌ ຈາກ gist ເລີຍ

ເມື່ອໂຫລດມາໄດ້ກໍ່ປ່ຽນຊື່ເປັນ tool.py ແລ້ວເປີດໄຟລ໌ເບິ່ງວ່າ ມັນເປັນແນວໃດ

ຈະເຫັນໄດ້ວ່າເປັນໄຟລ໌ python ທີ່ທຳການເຂົ້າລະຫັດຂໍ້ຄວາມດ້ວຍ base64 ແບບບໍ່ທຳມະດາມີການປ່ຽນຕຳແໜ່ງຕ່າງໆນີ້ນັ້ນ ເມື່ອເຫັນໄຟລ໌ນີ້ກໍ່ຮູ້ແລ້ວວ່າໂຈດແມ່ນໃຫ້ເຮົາຖອດລະຫັດໄຟລ໌ hzpxbsklqvboyou ນີ້ເອງ

ມາວິເຄາະເບິ່ງວ່າມັນເຂົ້າລະຫັດແນວໃດເນາະ ສິ່ງທີ່ສັງເກດເຫັນທຳອິດແມ່ນ [::-1] ຄືການ reverse string ຫລື ປິ້ນ string ເນາະ ແລະຕໍ່ມາແມ່ນ *5 ແມ່ນຄູນ string ທີ່ເຂົ້າລະຫັດນັ້ນມາເພີ່ມເປັນ 5 ຊຸດ

ຕົວຢ່າງ
olleholleholleholleholleh

ມາເບິ່ງໃນ method b64encode ກໍ່ຈະເຫັນວ່າມັນກ່ອນຈະທຳການເຂົ້າລະຫັດຈະໄດ້ມີການ shift ໂຕອັກສອນແຕ່ລ່ະໂຕຈາກຄຳສັ່ງນີ້ກ່ອນ

(ສຳລັບຄົນທີ່ຢາກຮູ້ເລື່ອງ shift ໂຕອັກສອນແມ່ນການເຂົ້າລະຫັດທີ່ເອີ້ນວ່າ caesar cipher)

(''.join([chr(ord(s[x])+([5,-1,3,-3,2,15,-6,3,9,1,-3,-5,3,-15] * 3)[x]) for x in range(len(s))])

ເມື່ອເຂົ້າລະຫັດແລ້ວ ກໍ່ຈະທຳການ reverse string ທີ່ໄດ້ຈາກການເຂົ້າລະຫັດແລ້ວຄູນເພີ່ມ 5

ຕົວຢ່າງການເຂົ້າລະຫັດຄຳວ່າ “hello” ກໍ່ຈະໄດ້ຂໍ້ຄວາມເຂົ້າລະຫັດດັ່ງນີ້

=EXavRWT=EXavRWT=EXavRWT=EXavRWT=EXavRWT

ເມື່ອເຂົ້າໃຈແລ້ວວ່າມັນເຂົ້າລະຫັດຈັ່ງໃດ ບາດນີ້ເຮົາກໍ່ສາມາດມາຖອດລະຫັດມັນໄດ້ລ່ະ

ໂດຍເຮົາພຽງແຕ່ຂຽນໂປແກມໃຫ້ມັນສະຫລັບຂົ້ວກັບການເຂົ້າລະຫັດ ເທົ່ານີ້ເຮົາກໍ່ສາມາດຖອດລະຫັດໄດ້ແລ້ວ

ໃນການຖອດລະຫັດ, ເຮົາເອົາພຽງແຕ່ສ່ວນໜຶ່ງຈາກຂໍ້ຄວາມທີ່ເຂົ້າລະຫັດມາກໍ່ພໍເນາະເພາະມັນຊຳ້ກັນ 5 ເທື່ອ ໂຍນ string ທີ່ເຂົ້າລະຫັດເຂົ້າໄປໃນ function decode ແລ້ວທຳອິດເລີຍແມ່ນປີ້ນ string ຄືນແລ້ວທຳການຖອດລະຫັດຈາກ base64 ເມື່ອຖອດລະຫັດອອກມາແລ້ວກໍ່ທຳການ shift ແຕ່ລະໂຕອັກສອນຄືນດ້ວຍການ ປ່ຽນເຄື່ອງໝາຍ ‘ບວກ’ ເປັນ ‘ລົບ’ ພຽງເທົ່ານັ້ນເຮົາກໍ່ເປັນອັນວ່າສຳເລັດ

ມາລອງ run ໂປຣແກມນີ້ເບິ່ງເນາະ ແລ້ວ ຜົນທີ່ໄດ້ກໍ່ຄື

ແລ້ວ flag ທີ່ໄດ້ແມ່ນ

IceCTF{good_ol_history_lesson}

ເອົາໄປ submit ກໍ່ໄດ້ມາ 300 ຄະແນນແລ້ວ!

--

--

Frank Xayachack
LaoHacker

GEEK | PROGRAMMER | CTF PLAYER | COMPUTER SECURITY LEARNER