Հեղինակների պահոցներ՝ Անդրանիկ Վարդանեան

Անդրանիկ Վարդանեան-ի մասին

Համահիմնադիր @ իլլուրիա։ Փոխտնօրէն @ Մութ Ուժեր™։ Խոնարհ ծառայ @ Համացանց։ միշտ կարգիչի դիմաց։ հիմնականում անվնաս։

Անդրանիկ Վարդանեան

8 Դեկտեմբերի, 2022

#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

ու մի հատ էլ ենք աշխատացնում ու տեսնում ենք՝

Screen Shot 2022 12 08 at 10 07 15 PM

Ախ, վերջապէս (։

Ասանկ բաներ…

Պատասխանել մեյլով

Անդրանիկ Վարդանեան

8 Դեկտեմբերի, 2022

#CyHubCTF2022

Որոշեցի հարթակը տեղադրել 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

Screen Shot 2022 12 08 at 5 44 10 PM

Օքեյ։ Անցնենք Python֊ական բաներին (։

Պատասխանել մեյլով

Անդրանիկ Վարդանեան

8 Դեկտեմբերի, 2022

#CyHubCTF2022

Տղաները խնդրեցին որ այս տարի օգտագործենք CTFd հարթակը։ Ընդհանրապէս օգտագործում էինք RootTheBox֊ը։

CTFd֊ն գրուած է Python֊ով։ Այնպէս որ ընդհանրապէս բարդ չի լինի տեղակայել FreeBSD֊ի վրայ։

Այս տարի սերւէրները լինելու են հենց CyHub֊ի դատասենտրում, բայց հարթակը կը տեղադրեմ մի քանի տեղ, որ եթէ հոսանքի խնդիր ունենանք, ապա շատ արագ կարողանանք failover անել։

Պատասխանել մեյլով

Անդրանիկ Վարդանեան

8 Դեկտեմբերի, 2022

Օքեյ, սկսում եմ պատրաստել CTF֊ի ինֆրաստրուկտուրան։ Մանրամասները գրառելու եմ այստեղ։

Կարող էք բոլոր գրառումները կարդալ հետեւելով CyHub CTF 2022 պիտակին։

Սկսեցինք։

Պատասխանել մեյլով

Անդրանիկ Վարդանեան

8 Դեկտեմբերի, 2022

Ովքեր տեղեակ չեն, Դեկտեմբեր 10-11֊ին տեղի է ունենալու CyHub Armenia֊ի CTF֊ը, Հայերէն՝ «Գրաւիր Դրօշը» մրցոյթը։

Մանրամասների համար, տես՝ CyHub CTF 2022

Տղաները շատ լաւ ելոյթ տուեցին երեկ, ու ներկայացրեցին, թէ ինչ է CTF֊ը եւ ինչ է նրա դերը ռուսական յեղափոխութեան մէջ ինչպէս խաղալ այն.

 Ի՞նչ է CTF֊ը | CTF101 Հայերեն 

Ու ունենք նաեւ շատ սիրուն բաններ.

Banner

Մինչ շաբաթ օր։

Ասանկ բաներ…

Պատասխանել մեյլով

Անդրանիկ Վարդանեան

8 Դեկտեմբերի, 2022

Արդէն առաջին գրառումն արեցի, շատ յաջող ստացուեց։

Ահա կիսուեմ նկարներով, թէ ոնց ա աշխատում։

Սա գլխաւոր պատուհանն է՝

Screen Shot 2022 12 08 at 2 52 30 PM

Սա էլ խմբագրիչն է, որի մէջ հիմա գրում եմ՝

Screen Shot 2022 12 08 at 2 52 35 PM

Մի բան միայն դուրս չի գալիս, դա Հայերէն ուղղագրիչն է։ Firefox֊ում շատ լաւ է աշխատում, կարելի է ասել նոյնիսկ 100% դէպքերում ճիշտ է աշխատում։ Իսկ macOS֊ի text box֊ի մէջ մէկ֊մէկ որոշում ա չաշխատել։

Սպասւում է ուղղագրական սխալներ։

Ասանկ բաներ…

Պատասխանել մեյլով

Անդրանիկ Վարդանեան

8 Դեկտեմբերի, 2022

Այս պահին փորձարկում եմ MarsEdit ծրագիրը։ շատ հետաքրքիր ա իրականում (։

Մի քանի օր կը փորձարկեմ, եթէ դուրս գայ, հաւանաբար նաեւ կառնեմ։ Ինձ դուր են գալիս Native ծրագրերը։

Գուցէ սենց աւելի շատ գրառեմ։

Ասանկ բաներ…

Պատասխանել մեյլով