Dnevnik rada

1. tjedan (9.4.2018 - 16.4.2018.)

Dosadašnji rad

Dogovoren sastanak sa asistentom. Proučio sam kako se rade “Access Pointovi” preko androida.

Daljnji koraci

Na sastanku se dogovoriti koji bi bio radni plan.

2. tjedan (26.3.2018 - 2.4.2018.)

Dosadašnji rad

Na sastanku se dogovorio sa asistentom da ću za početak napravirti open-vpn server na debianu u virtualnoj mašini. Uspio sam to napraviti uz manje probleme.

Daljnji koraci

Spojiti se preko android uređaja na server te riješiti problem sa spajanjem preko javne ip adrese.

3. tjedan (2.4.2018. - 9.4.2018.)

Dosadašnji rad

Uspio sam se spojiti na server preko android uređaja koristeći aplikacije OpenVPN Connect i SSHJuice. Server sam napravio koristeći tutorial https://www.cyberciti.biz/faq/how-to-install-and-configure-an-openvpn-server-on-debian-9-in-5-minutes/. Također sam morao forwardirat port 1194. Također kako ne bih stalno morao mijenjati postavke servera i mijenjati postavke routera zbog javne dinamičke IP adrese koristio sam dinamički dns preko kojeg sam napravio domenu koja će uvijek poazivati na moju javnu IP adresu. https://www.noip.com/remote-access.

Daljnji koraci

Ostvariti slanje mrežnog prometa sa androida na open-vpn server.

4. tjedan (9.4.2018. - 16.4.2018.)

Dosadašnji rad

Par grešaka se ostvarilo ovaj tjedan. Naime mogu dobiti ssh pristup računalu preko mobitela, ali ne mogu ići na internet preko mobitela kada sam spojen na openVPN server. Nakon čitanja raznih foruma te mijenjanja postavka firewalla, mijenjanja konfguracijskih datoteka openVPN-a (server.conf, client.ovpn) nisam uspio rijepiti problem. Uspio sam si samo “pokvariti” debian te više ne mogu na internet s njim te nakon pokušaja na Linux Mintu koji nije na VirtualBoxu ni na njega se više nisam u mogućnosti spojiti.

Daljnji korac

Pokušati sve gore navedeno napraviti sa WinInetd-om koji bi u konfiguraciji trebao imati podršku za korisnike.

5. tjedan (7.11.2017. - 14.11.2017.)

Dosadašnji rad

Napisan plan projekta i predan na fer web.

Daljni koraci

Poslje međuispita izvesti sve navedeno u 4. tjednu.

6./7. tjedan - Međuispiti

8. tjedan (2.12.2017. - 9.12.2017.)

Dosadašnji rad

Proučio sam kako pisati konfiguracijski file wininetd.conf. Uspio sam pokrenuti servis wininetd koji je vidljiv u Task Manageru. Napravio sam jednostavan program (program.exe, ispisuje sa stdina na stdout) na kojeg cu se pokušati spojiti sa drugog računala. Dao sam mu port za kojeg sam prije toga provjerio je li slobodan sa netstat-om. Kada pokrenem wininetd –debug, uspije ga staviti na mrežu. Tu sam imao problem jer wininetd u konfiguracijskom file-u prilikom dodjele puta do datoteke program.exe iz nepoznatih razloga izbriše zadnji znak te se u konfiguracijsku datoteku mora dodati još jedan znak na kraj kako ne bi došlo do pogreške (c:\program.exee → c:\program.exe). Na istom računalu sa drugog terminala naredbom nc (netcat) koja kao parametre prima IP adresu i port zadajem vlastitu IP adresu (ipconfig) te unaprijed određeni port. Sa terminala na kojem je pokrenut wininetd –debug se vidi da se klijent spojio sa određenom ip adresom i portom, ali na klijentskom računalu (netcat) se ne pokreće zadani program odnosno ne ispisuje ono što bi trebalo.

Daljni koraci

Probati na kućnoj mreži istu stvar sa dva različita računala. Riješiti problem na koji sam naišao. Ukoliko ne uspijem, javiti se asistentu.

9. tjedan (9.12.2017. - 16.12.2017.)

Dosadašnji rad

Uspio sam riješiti problem od prošlog puta. Wininetd radi normalno bez definiranog usera. Kod stavljanja usera u wininetd.config te pokretanja wininetd-a javljao se error. Jedan od errora sam uspio riješiti tako da sam debuggiro wininetd.c,našao grešku koja se javlja pozivom funkcije LogonUserA te nakon proučavanja greške na internetu našao riješenje. Naime u Windowsima treba otići u Local Security Policies (Start → Run → secpol.msc → Local Policies → User Rights Assignment → Log on as batch job) te dodati usera kojeg smo upisali u konfiguracijskoj datoteci u Log on as batch job. Nakon toga pojavila se nova greška ([wininetd] unable to create process as user: cmdln='c:\pr.exe' user='Roko' err='A required privilege is not held by the 'lient.) Nakon mnogo googlanja i debuggiranja nisam uspio otrkiti problem te sam se obratio mentoru.

Daljni koraci

Čekati odgovor mentora te nastaviti dalje prema njegovim uputama.

10. tjedan (16.12.2017. - 23.12.2017.)

Dosadašnji rad

Uz mentorovu pomoć, dosta googlanja i debuggiranja uspio sam riješiti problem od prošlog puta. Razlog pogreške je poziv funkcije CreateProcessAsUserA u wininetd.c datoteci. Greška koju Windowsi bacaju je ERROR_PRIVILEGE_NOT_HELD A required privilege is not held by the client. Na na linku https://msdn.microsoft.com/en-us/library/windows/desktop/ms682429 koji mi je proslijedio mentor piše sljedeće : CreateProcessAsUser function must have the SE_INCREASE_QUOTA_NAME privilege and may require the SE_ASSIGNPRIMARYTOKEN_NAME privilege if the token is not assignable. Riješenje sam našao na sljedećem linku: https://stackoverflow.com/questions/1475577/createprocessasuser-error-1314 . Naime, uz dodavnje usera u security policies → Logon as batch job, također treba usera ili grupu usera dodati u Local Policies → User Rights Assignement → Replace a process level token. Nakon dodavanja usera (u mojem slučaju Roko) wininetd radi te uspjevam pristupiti servisu sa drugog računala.

Daljni koraci
Napraviti više usera kojima ću dati različite ovlasti za pristupanje određenim datotekama te pokušati pristupiti datotekama sa drugog računala.

11. tjedan (23.12.2017. - 30.12.2017.)

Dosadašnji rad
Za početak sam dodao dva usera : User1 i User2. To sam učinio na sljedeći način. Pokrenuo sam run.exe preko starta te upisao lusrmgr.msc nakon čega sam stisnuo Ok. Otvorio se prozor Local Users and Groups. Nakon toga sam kreirao dva usera tako što sam odabrao Users, desni klik na prazan prostor te New User. Odabrao sam username i password te spremio oba usera. Zatim sam na isti način napravio novu grupu koju sam nazvao Projekt u koju sam dodao oba usera. Nakon toga sam otišao u Security Policies te dodao grupu u Logon as a batch job i u Replace a process level token. Nakon toga sam napisao program u c-u koji prima put do određene datoteke te na stdin ispisuje njen sadržaj. Program sam dodao u wininetd.conf sa dva različita usera na sljedeći način:

202 User1:1234 c:\program.exe
203 User2:12345 c:\program.exee

Zatim sam napravio dvije tekstualne datoteke različitog sadržaja i imena (user1.txt, user 2.txt). Korisniku User1 dao sam dozvolu da pročita datoteku user1.txt, a onemogućio da pročital ili piše u datoteku user2. Obrnuto sam napravio za Usera2. Navedeno sam napravio na sljedeći način. Desni klik na user1.txt, klik na Security tab te klik na edit. Tu sada klikom na određenog usera promijeniti ovlasti koje ima nad tom datotekom. Nakon pokretanja wininetd-a te spajanjem na određeni port (recimo npr. 202) sa drugog računala zaista mogu pročitati što se nalazi u datoteci user1, a ne mogu pročitati što se nalazi u datoteci user2.

Moj zadatak je uspio.

12. tjedan (30.12.2017. - 6.12.2017.)

Dosadašnji rad
Napravljene su i postavljene kompletne upute sa slikama na mojoj stranici http://studentski-izvjestaji.zesoi.fer.hr/lib/exe/fetch.php?media=studenti:roko_grubelic:pokretanje_izoliranih_ranjivih_mreznih_servisa_na_windows_serveru_za_ctf_zadatke.pdf

Otvorio sam github account, napravio novi repozitorij u koji sam stavio svoj program koji prima put do datoteke i njen sadržaj ispisuje na stdout te kompletne upute na engleskom kako se koristi wininetd na Windowsima. https://github.com/rockymus/wininetd