– #CyHubCTF2022 –
Մայկա տռուսիկները պատրաստ են:
Սկսենք Փայթոնական բաները տեղադրելով՝
pkg install -y py39-pip
Ապա տեղադրենք CTFd֊ն՝
root@ctfd0:~ # cd /usr/local/www/ root@ctfd0:/usr/local/www # git clone https://github.com/CTFd/CTFdCloning into 'CTFd'... remote: Enumerating objects: 14857, done. remote: Counting objects: 100% (94/94), done. remote: Compressing objects: 100% (54/54), done. remote: Total 14857 (delta 39), reused 73 (delta 34), pack-reused 14763 Receiving objects: 100% (14857/14857), 30.98 MiB | 16.73 MiB/s, done. Resolving deltas: 100% (9137/9137), done.
root@ctfd0:/usr/local/www # cd CTFd/
root@ctfd0:/usr/local/www/CTFd # pip install -r requirements.txt
Հիմա սպասում ենք Python֊ական dependency֊ները քաշի։
Մէկ էլ ասում ա՝
error: can't find Rust compiler
Օքեյ, դա էլ քաշենք՝
root@ctfd0:/usr/local/www/CTFd # pkg install -y rust
Նորից եմ աշխատեցնում pip install
֊ը եւ ստանում եմ՝
$ GOPATH=/tmp/tmplfo6wiyc go get -d error: [Errno 2] No such file or directory: 'go'
Օքեյ, հիմա էլ Go֊ն տեղադրենք՝
root@ctfd0:/usr/local/www/CTFd # pkg install -y go
Ու մի անգամ էլ pip install
աշխատեցնելուց յետոյ ամէն ինչ տեղակայուեց։
Սկսեմ կարգաւորել config.ini
ֆայլը։
Ահ, էստեղ գրած ա DATABASE_URL
, աչքիս մի հատ էլ MySQL֊ի համար Jail սարքեմ՝
root@console:~ # jailer create -n -t eb -a 10.0.0.15 mysql0
root@console:~ # jailer nat add -i vtnet0 mysql0
Ապա տեղադրեմ MariaDB՝
root@console:~ # jailer cons mysql0 root@mysql0:~ # pkg install -y mariadb106-server
Ու նաեւ կարգաւորեմ նոր օգտատէր՝
root@mysql0:~ # mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.6.11-MariaDB FreeBSD Ports Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. root@localhost [(none)]> create database ctfd; Query OK, 1 row affected (0.001 sec) root@localhost [(none)]> create user ctfd@10.0.0.10 IDENTIFIED VIA mysql_native_password USING PASSWORD(“REDACTED"); Query OK, 0 rows affected (0.004 sec) root@localhost [(none)]> grant all privileges on ctfd.* to ctfd@10.0.0.10 with grant option; Query OK, 0 rows affected (0.003 sec) root@localhost [(none)]> flush privileges; Query OK, 0 rows affected (0.001 sec)
Դէ փորձարկենք՝
root@console:~ # jailer cons ctfd0 root@ctfd0:~ # mysql -h 10.0.0.15 -u ctfd -p ctfd Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 12 Server version: 10.6.11-MariaDB FreeBSD Ports Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. ctfd@10.0.0.15 [ctfd]>
Թո՛յն։
Շարունակեմ մնացած կարգաւորումներն անել։
Երեւի կարելի է փորձել միացնե՞լ։ Տեսնենք՝
root@ctfd0:/usr/local/www/CTFd # python3.9 serve.py * Importing gevent and monkey patching. Use --disable-gevent to disable. Traceback (most recent call last): File "/usr/local/www/CTFd/serve.py", line 23, in app = create_app() File "/usr/local/www/CTFd/CTFd/__init__.py", line 199, in create_app url = create_database() File "/usr/local/www/CTFd/CTFd/utils/migrations/__init__.py", line 26, in create_database if not database_exists_util(url): File "/usr/local/lib/python3.9/site-packages/sqlalchemy_utils/functions/database.py", line 470, in database_exists engine = sa.create_engine(url) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/__init__.py", line 488, in create_engine return strategy.create(*args, **kwargs) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/strategies.py", line 87, in create dbapi = dialect_cls.dbapi(**dbapi_args) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 118, in dbapi return __import__("MySQLdb") ModuleNotFoundError: No module named 'MySQLdb'
Ահ, լաւ հեսա դա էլ տեղադրեմ՝
root@ctfd0:~ # pkg install -y py39-mysqlclient
ու մի հատ էլ ենք աշխատացնում ու տեսնում ենք՝
Ախ, վերջապէս (։
Ասանկ բաներ…
Որոշեցի հարթակը տեղադրել Vultr֊ում, իրենց տրամադրում են FreeBSD մեքենաներ։
Խնդիրը նրանում է, որ իրենց մեքենաները աշխատում են UFS֊ով, սակայն ինձ պէտք է OpenZFS ֆայլային համակարգը։
Կարող եմ ստանալ վիրտուալ դիսկեր օգտագործելով truncate
հրամանը։
root@console:~ # truncate -s 40G /usr/local/disk0.img root@console:~ # zpool create zjails /usr/local/disk0.img root@console:~ # zpool list NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT zjails 39.5G 129K 39.5G - - 0% 0% 1.00x ONLINE - root@console:~ # sysrc zfs_enable=“YES” zfs_enable: NO -> YES
Իհարկէ, առաջին բանը որ տեղադրում եմ հետեւեալ ծրագրերն են՝
tmux
vim
git-tiny
git-tiny
֊ն պէտք է նրա համար, որ տեղադրեմ illuria֊ի կողմից ստեղծուած Jailer
ծրագիրը՝
root@console:~ # git clone https://github.com/illuria/jailer
Cloning into ‘jailer’…
remote: Enumerating objects: 447, done.
remote: Counting objects: 100% (447/447), done.
remote: Compressing objects: 100% (206/206), done.
remote: Total 447 (delta 301), reused 384 (delta 238), pack-reused 0
Receiving objects: 100% (447/447), 136.34 KiB | 7.57 MiB/s, done.
Resolving deltas: 100% (301/301), done.
root@console:~ # cd jailer/
root@console:~/jailer # make install
root@console:~/jailer # jailer init
Enable the jail service first: Done!
Setting jailer_dir in rc.conf: Done!
Creating ZFS dataset zjails/jails with the mount point /usr/local/jails: Done!
Առաջին հերթին պէտք է քաշեմ ՕՀ֊ի պատկեր (image) Jailer
֊ի համար՝
root@console:~/jailer # jailer image fetch
Fetching 13.1-RELEASE: Done!
Ապա պէտք է ցանցերը կարգաւորեմ։ Երեւի աւելի լաւ կը լինի առանձին IP հասցէ տամ այդ jail֊ին։
Սկսեմ bridge network կարգաւորելով.
root@console:~ # sysrc cloned_interfaces=“bridge0” cloned_interfaces: -> bridge0 root@console:~ # sysrc ifconfig_bridge0="inet 10.0.0.1 netmask 255.255.255.0 up” ifconfig_bridge0: -> inet 10.0.0.1 netmask 255.255.255.0 up root@console:~ # service netif restart bridge0 /etc/rc.d/netif: WARNING: bridge0 does not exist. Skipped. Created clone interfaces: bridge0. Starting Network: bridge0. bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 ether 58:9c:fc:10:d8:4f inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255 id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200 root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0 groups: bridge nd6 options=1
Հիմա արդէն կարող եմ ստեղծել նոր container օգտագործելով Jailer
֊ը՝
root@console:~ # jailer create -n -t eb -a 10.0.0.10 ctfd0 Creating ctfd0: Done!
Ապա միացնում ենք IP forwarding֊ը՝
root@console:~ # echo 'net.inet.ip.forwarding=1' >> /etc/sysctl.conf root@console:~ # service sysctl restart
Մնում է firewall֊ի մէջ աւելացնել հետեւեալ կարգաւորումները, /etc/pf.conf
ֆայլում՝
include "/etc/jail.conf.d/.pf.nat.jailer.conf” include "/etc/jail.conf.d/.pf.rdr.jailer.conf”
Ու վերջում, ստեղծում ենք այդ ֆայլերը՝
root@console:~ # touch /etc/jail.conf.d/.pf.rdr.jailer.conf root@console:~ # touch /etc/jail.conf.d/.pf.nat.jailer.conf
Ապա կարգաւորում ենք NAT եւ Redirection՝
root@console:~ # jailer nat add -i vtnet0 -a 140.82.57.32 ctfd0 Reloading pf rules. root@console:~ # jailer rdr add -i vtnet0 -a 140.82.57.32 ctfd0 Reloading pf rules. root@console:~ # pfctl -sn nat on vtnet0 inet from 10.0.0.10 to any -> 140.82.57.32 rdr pass on vtnet0 inet from any to 140.82.57.32 -> 10.0.0.10
Ապա ստուգենք։
root@console:~ # jailer cons ctfd0 root@ctfd0:~ # pkg install -y nginx0 root@ctfd0:~ # service nginx enable nginx enabled in /etc/rc.conf root@ctfd0:~ # service nginx start
Օքեյ։ Անցնենք Python֊ական բաներին (։
Տղաները խնդրեցին որ այս տարի օգտագործենք CTFd հարթակը։ Ընդհանրապէս օգտագործում էինք RootTheBox֊ը։
CTFd֊ն գրուած է Python֊ով։ Այնպէս որ ընդհանրապէս բարդ չի լինի տեղակայել FreeBSD֊ի վրայ։
Այս տարի սերւէրները լինելու են հենց CyHub֊ի դատասենտրում, բայց հարթակը կը տեղադրեմ մի քանի տեղ, որ եթէ հոսանքի խնդիր ունենանք, ապա շատ արագ կարողանանք failover անել։
Օքեյ, սկսում եմ պատրաստել CTF֊ի ինֆրաստրուկտուրան։ Մանրամասները գրառելու եմ այստեղ։
Կարող էք բոլոր գրառումները կարդալ հետեւելով CyHub CTF 2022 պիտակին։
Սկսեցինք։
Ովքեր տեղեակ չեն, Դեկտեմբեր 10-11֊ին տեղի է ունենալու CyHub Armenia֊ի CTF֊ը, Հայերէն՝ «Գրաւիր Դրօշը» մրցոյթը։
Մանրամասների համար, տես՝ CyHub CTF 2022
Տղաները շատ լաւ ելոյթ տուեցին երեկ, ու ներկայացրեցին, թէ ինչ է CTF֊ը եւ ինչ է նրա դերը ռուսական յեղափոխութեան մէջ ինչպէս խաղալ այն.
Ու ունենք նաեւ շատ սիրուն բաններ.
Մինչ շաբաթ օր։
Ասանկ բաներ…
Եթէ ամէն ինչ լաւ ստացուի, աչքիս սկսելու եմ բոլորի գլուխը տանել այս micro գրառումներով։
Արդէն առաջին գրառումն արեցի, շատ յաջող ստացուեց։
Ահա կիսուեմ նկարներով, թէ ոնց ա աշխատում։
Սա գլխաւոր պատուհանն է՝
Սա էլ խմբագրիչն է, որի մէջ հիմա գրում եմ՝
Մի բան միայն դուրս չի գալիս, դա Հայերէն ուղղագրիչն է։ Firefox֊ում շատ լաւ է աշխատում, կարելի է ասել նոյնիսկ 100% դէպքերում ճիշտ է աշխատում։ Իսկ macOS֊ի text box֊ի մէջ մէկ֊մէկ որոշում ա չաշխատել։
Սպասւում է ուղղագրական սխալներ։
Ասանկ բաներ…
Այս պահին փորձարկում եմ MarsEdit ծրագիրը։ շատ հետաքրքիր ա իրականում (։
Մի քանի օր կը փորձարկեմ, եթէ դուրս գայ, հաւանաբար նաեւ կառնեմ։ Ինձ դուր են գալիս Native ծրագրերը։
Գուցէ սենց աւելի շատ գրառեմ։
Ասանկ բաներ…