Axorot xavfsizligi



Download 1,07 Mb.
bet10/10
Sana14.07.2022
Hajmi1,07 Mb.
#794836
1   2   3   4   5   6   7   8   9   10
Bog'liq
BMI namuna Yuldashev Sardor

Frame Relay
Frame Relay – yana bitta telefon tarmog‘i orqali axborotlarni uzatishga mo‘ljallangan protokol. X.25 kabi yuqori ishon chliligidan tashqari yangi qo‘shimcha imkoniyatlarga ham egadir. Uzatiladigan axborotlar video, audio formatda yoki elektron axborot ko‘rinishida bo‘lishi mumkin bo‘lgani s babli uzatilayotgan axborotga qarab uzatish imkonini tan-lashi mumkin.

Apple Talk
Apple Talk protokoli Apple Computer kompaniyasining
mulki bo‘lib, u Makintosh kompyuterlari bilan aloqa o‘rnatish
uchun yaratilgan. TCP/IP kabi Apple Talk ham protokollar
to‘plamidan iborat bo‘lib, ulardan har biri ISO/OSI modelining har birining ishi uchun javobgardir. TCP/IP va IPX/SPX protokollaridan farqli Apple Talk protokoli jismoniy va kanal bosqichlarini o‘zi ijro etadi.

Hozirgi kunda ko'pchilik uyda bir nechta kompyuterga ega, garchi ularning hammasi ham mahalliy tarmoqqa ulanmagan bo'lsa ham ... Mahalliy tarmoq esa juda qiziqarli narsalarni beradi: siz tarmoq o'yinlarini o'ynashingiz, fayllarni almashishingiz (yoki hatto umumiy disk maydonidan foydalanishingiz mumkin) ), hujjatlar ustida birgalikda ishlash va hokazo.


Kompyuterlarni mahalliy tarmoqqa ulashning bir necha usullari mavjud, ammo eng arzon va eng osonlaridan biri tarmoq kabelidan foydalanish (oddiy o'ralgan juftlik), u bilan kompyuterlarning tarmoq kartalarini ulashdir. Bu qanday amalga oshirilganligi va biz buni ushbu maqolada ko'rib chiqamiz.
Boshlash uchun nima kerak?
1) Tarmoq kartalari bo'lgan 2 ta kompyuter kerak
Barcha zamonaviy noutbuklar (kompyuterlar), qoida tariqasida, o'z arsenalida kamida bitta tarmoq kartasiga ega.

1-rasm: tarmoq qurilmalarini ko'rish uchun quyidagi yorlig'ga o'ting «Устройства/устройства Windows».
Aytgancha, siz noutbuk (kompyuter) korpusida joylashgan barcha ulagichlarga ham e'tibor berishingiz mumkin. Agar tarmoq kartasi mavjud bo'lsa, siz standart RJ45 ulagichini ko'rasiz (2-rasmga qarang).

2-rasm: RJ45 (standart noutbuk korpusi, yon tomondan ko’rinishi)

2) Tarmoq kabeli
Eng oson variant - kabelni sotib olish. To'g'ri, agar sizning kompyuterlaringiz bir-biridan uzoqda bo'lmasa va devor orqali kabel o'tkazishingiz shart bo'lmasa, bu variant mos keladi.
Vaziyat teskari bo'lsa, kabelni joyida siqib qo'yishingiz kerak bo'lishi mumkin (bu uchun sizga maxsus pense, kerakli uzunlikdagi kabel va RJ45 konnektorlari (routerlar va tarmoq kartalariga ulanish uchun eng keng tarqalgan ulagich) kerak bo'ladi).

3-rasm: Tarmoq kabeli.
2 ta kompyuterni kabel orqali tarmoqqa ulash: barcha harakatlar tartibi bilan:
1) Kompyuterlarni tarmoq kabeli bilan ulash.
Bu yerda hech qanday qiyin narsa yo'q - shunchaki kompyuterlarni kabel orqali ulang va ikkalasini ham yoqing. Ko'pincha, ulagichning yonida yashil LED mavjud bo'lib, u sizning kompyuteringizni qandaydir tarmoqqa ulaganligingizni bildiradi.

4-ram: Kabelni noutbukga ulash.

2) Kompyuter nomini va ishchi guruhini o'rnatish.


Keyingi muhim nuance shundaki, ikkala kompyuterda (kabel orqali ulangan) quyidagilar bo'lishi kerak:
1. bir xil ishchi guruhlar (mening holatimda bu WORKGROUP, 5-rasmga qarang);
2. turli xil kompyuter nomlari.
Ushbu sozlamalarni o'rnatish uchun " МОЙ КОМПЬЮТЕР " (yoki ushbu kompyuter) ga o'ting, so'ngra kontekst menyusining istalgan joyini o'ng tugmasini bosing va ochilgan kontekst menyusida " Свойства " havolasini tanlang. Shunda siz shaxsiy kompyuteringiz nomini va ishchi guruhini ko'rishingiz, shuningdek ularni o'zgartirishingiz mumkin bo'ladi (5-rasmdagi yashil doiraga qarang).

5-rasm: Komyuterga nom berish.
Kompyuter nomini va uning ishchi guruhini o'zgartirgandan so'ng, kompyuterni qayta ishga tushirishni unutmang.

3) Tarmoq adapterini sozlash (IP manzillarini, tarmoq maskasini, DNS serverini sozlash)


Keyin Windows boshqaruv paneliga o'tishingiz kerak, manzil: Панель управления\Сеть и Интернет\Центр управления сетями и общим доступом.
Chap tomonda " Изменение параметров адаптера " havolasi bo'ladi va siz uni ochishingiz kerak (ya'ni, biz kompyuterdagi barcha tarmoq ulanishlarini ochamiz).
Aslida, siz tarmoq adapteringizni ko'rishingiz kerak, agar u boshqa kompyuterga kabel orqali ulangan bo'lsa, unda qizil x(iks)lar yonib turmasligi kerak (6-rasmga qarang, ko'pincha bunday adapterning nomi Ethernet). Siz sichqonchaning o'ng tugmachasini bosishingiz va uning xususiyatlariga o'tishingiz kerak, so'ngra «IP версии 4» protokolining xususiyatlariga o'ting (har ikkala shaxsiy kompyuterda ham ushbu sozlamalarga kirishingiz kerak).

6-rasm: Adapterning xususiyatlari.

Endi bitta kompyuterda siz quyidagi ma'lumotlarni o'rnatishingiz kerak:


1. IP manzil: 192.168.0.1;
2. Tarmoq maskasi: 255.255.255.0 (7-rasmdagi kabi).

7-rasm: "Birinchi" kompyuterda IP-ni o'rnatish.
Ikkinchi kompyuterda siz biroz boshqacha parametrlarni o'rnatishingiz kerak:
1. IP manzil: 192.168.0.2;
2. Tarmoq maskasi: 255.255.255.0;
3. Standart shlyuz: 192.168.0.1;
4. DNS server: 192.168.0.1 (8-rasmdagi kabi).

8-rasm: Ikkinchi kompyuterda IP sozlamalari.

Keyin sozlamalarni saqlang. To'g'ridan-to'g'ri lokal ulanishni o'rnatish tugallandi. Endi, agar siz “проводник” ga o'tsangiz va " Сеть " havolasini (chapda) bossangiz - ishchi guruhingizdagi kompyuterlarni ko'rishingiz kerak.

Lokal tarmoq foydalanuvchilari uchun papkaga (yoki diskka) kirishni qanday ochish mumkin?
1) Fayl va printerni umumiy almashishni yoqing
Windows boshqaruv paneliga o'ting: Панель управления\Сеть и Интернет\Центр управления сетями и общим доступом.

8-rasm: Tarmoq va almashish markazi.
Keyinchalik, siz bir nechta profillarni ko'rasiz: mehmon, barcha foydalanuvchilar uchun, shaxsiy (10, 11, 12-rasm). Vazifa oddiy: hamma joyda fayl va printer almashishni yoqing, tarmoqni toping va parol himoyasini olib tashlang. Faqat quyida rasmda ko'rsatilgandek bir xil sozlamalarni o'rnating.

10-rasm: Shaxsiy (bosish mumkin).

11-rasm: Mehmon (bosish mumkin).


12-rasm: Barcha tarmoqlar uchun.
Muhim nuqta. Tarmoqdagi ikkala kompyuterda ham shunga o'xshash sozlamalarni o'rnatishingiz kerak!

2) Disk/papkani almashish


Endi faqat ruxsat bermoqchi bo'lgan kerakli papkani yoki diskni toping. Keyin uning xususiyatlariga o'ting va " Доступ " yorlig'ida siz " Расширенная настройка " tugmasini topasiz va ustiga bosing, 13-rasmga qarang.


13-rasm: Faylga ruhsat.

Kengaytirilgan sozlamalarda " Открыть общий доступ к папке " yonidagi katakchani belgilang va " разрешения " yorlig'iga o'ting (odatiy holati bo'yicha faqat o'qish uchun ruxsat ochiq bo'ladi, ya'ni lokal tarmoqdagi barcha foydalanuvchilar faqat fayllarni ko'rishlari mumkin bo'ladi, lekin ularni tahrir qilmang yoki o'chirmang. " разрешения " yorlig'ida siz ularga barcha fayllarni to'liq olib tashlashgacha har qanday imtiyozlarni berishingiz mumkin).



14-rasm: Papka almashishga ruxsat bering.

Sozlamalarni saqlang - va sizning diskingiz butun lokal tarmoqqa ko'rinadigan bo'ladi. Endi siz undan fayllarni nusxalashingiz mumkin (15-rasmga qarang).



15-rasm: Lokal ravishda fayl uzatish.

Lokal tarmoq uchun Internetni ulashish


Bundan tashqari, foydalanuvchilar duch keladigan juda keng tarqalgan muammo. Qoidaga ko'ra, kvartirada bitta kompyuter Internetga ulangan, qolganlari esa undan foydalanishadi (agar, albatta, router o'rnatilmagan bo'lsa :).
1) Birinchi, " сетевые подключения " yorlig'iga o'ting (Agar siz boshqaruv paneliga kirsangiz, uni ochishingiz mumkin va keyin qidiruvda " Просмотр сетевых подключений " ni kiriting).
2) Keyinchalik, siz Internetga kirish mumkin bo'lgan ulanish xususiyatlariga o'tishingiz kerak (mening holatimda bu " беспроводное подключение ").
3) Keyinchalik, xususiyatlarda siz " Доступ " yorlig'ini ochishingiz va "Разрешить другим пользователям сети использовать подключение к интернету" bandi yonidagi katakchani belgilashingiz kerak (16-rasmdagi kabi).

16-rasm: Internetni ulashish.
4) Sozlamalarni saqlash va Internetdan foydalanishni boshlash qoldi.

TARMOQ TRAFIK ANALIZERI

1.Kirish
-----------

Agar siz tizim administratori, xavfsizlik bo'yicha mutaxassis yoki siz bo'lsangiz


faqat sizning LANda nima bo'layotganiga hayron bo'lib, keyin tutib va
bir nechta tarmoq paketlarini tahlil qilish foydali mashq bo'lishi mumkin. Da
kichik C dasturining yordami va tarmoqqa oid asosiy bilimlar
texnologiyalardan foydalansangiz ham, tarmoq trafik ma'lumotlarini ushlab turishingiz mumkin bo'ladi
ular sizga qaratilgan emas. Bu qanday bo'lishi mumkinligini ushbu maqola o'rganadi
Ethernet tarmog'ida qilish, hozirgi paytda eng keng tarqalgan
mahalliy kompyuter tarmoqlarini qurish texnologiyalari.

2. Ethernet texnologiyasiga umumiy nuqtai


---------------------------------

Birinchidan, Ethernet tarmog'i qanday ishlashini ko'rib chiqaylik (sizlar


bu masala bilan tanish bo'lsangiz, ushbu paragrafni o'tkazib yuborishingiz mumkin). IP paketlar
manbasi foydalanuvchi ilovasi bo'lgan (ma'lumotlargrammalari),
Ethernet ramkalarida (chekilgan protokol paketlari,
tarmoq orqali uzatiladi). Har bir ramka asl IP-paketni va boshqasini o'z ichiga oladi
uni adresatga etkazish uchun zarur bo'lgan ma'lumotlar, xususan, 6
foydalanadigan maqsadning bayt chekilgan manzili (MAC manzili).
ARP protokoli maqsadli IP-manzilga moslashtirilgan. Shunday qilib
Shunday qilib, paketni o'z ichiga olgan shakllangan ramka uning boshlanadi
kabel orqali jo'natuvchi xostdan qabul qiluvchi xostga sayohat
birikma.

Ethernet protokoli sathida marshrutlash mavjud emas. Boshqa so'zlar bilan,


jo'natuvchi xost tomonidan yuborilgan ramka to'g'ridan-to'g'ri qabul qilinmaydi
maqsad xost, lekin tarmoqqa ulangan barcha xostlar uchun mavjud bo'ladi.
Har bir tarmoq kartasi ramka oladi va undan dastlabki 6 baytni o'qiydi.
Bu baytlar maqsad hostning MAC manzilini o'z ichiga oladi, lekin har biriga faqat bitta karta
tarmoq uni o'ziga xos deb belgilaydi va ramkani keyingisiga uzatadi
tarmoq drayveriga ishlov berish. Tarmoq drayveri "Tur
ramka sarlavhasining protokoli" va shu qiymatga asoslanib yo'naltiriladi
berilganning mos keladigan qabul qilish funktsiyasining inkapsullangan paketi
protokol. Ko'pgina hollarda, bu IP protokoli. qabul qilish funktsiyasi
qabul qilingan datagramdan IP sarlavhasini ajratib oladi va yuboradi
tegishli protokol moduliga inkapsullangan xabar
transport qatlami (masalan, TCP yoki UDP). Ushbu protokollar, in
navbatga qo'ying, sarlavhalarini qayta ishlang va ma'lumotlarni protokollarga o'tkazing
dastur darajasi. Ushbu "sayohat" davomida turli darajadagi
tarmoq stegi, asl paket protokollarning barcha xizmat ko'rsatish maydonlarini yo'qotadi va
oxirida, paketda uzatilgan ma'lumotlar foydalanuvchi tomonidan qabul qilinadi
ilova.

3. Paketli rozetkalar


------------------

Tarmoqdagi trafik ma'lumotlarini ushlab qolishning ko'plab usullari mavjud. eng ko'p


ixtisoslashgan kutubxonalardan foydalanish maqbuldir,
masalan, libcap. Aynan shu kutubxona ularning ishlarida foydalaniladi.
tcpdump va snort. Bizning misolimizda biz kutubxonalarga tayanmaymiz,
lekin tarmoq trafik ma'lumotlarini qanday tutib olishni ko'rib chiqing
bu paketli soket.

Standart qo'ng'iroq rozetkasi bilan rozetka yaratishda (int domeni, int turi,


int protokoli) domen parametri aloqa domenini belgilaydi
qaysi rozetkadan foydalaniladi. Odatda ishlatiladigan qiymatlar PF_UNIX
mahalliy mashina bilan cheklangan ulanishlar uchun va PF_INET uchun
IPv4 protokoliga asoslangan ulanishlar. Type argumenti turni belgilaydi
yaratilayotgan rozetka va bir nechta qiymatlarga ega. SOCK_STREAM qiymati
virtual rejimda ishlash uchun rozetka yaratishda ko'rsatilgan
ulanishlar (TCP protokoli) va SOCK_DGRAM qiymati bilan ishlash uchun
ma'lumotlar jadvalini yo'naltirish (UDP protokoli). Protokolning oxirgi parametri
foydalaniladigan protokolni belgilaydi (IEEE 802.3 ga muvofiq).

2.2 dan boshlab LINUX yadrosi versiyalari yangi rozetka turini qo'llab-quvvatladi


- paketli rozetkalar. Paket rozetkalari yuborish va qabul qilish uchun ishlatiladi
qurilma drayveri darajasidagi paketlar. Ushbu turdagi rozetkalar yaratilgan
rozetkani chaqirish orqali (PF_PACKET, int turi, int protokoli). parametr turi
SOCK_RAW yoki SOCK_DGRAM qiymatini oladi. SOCK_RAW tipidagi paketlar
qurilma drayveriga uzatiladi va undan hech qanday holda qabul qilinadi
paket ma'lumotlarini o'zgartirish. SOCK_DGRAM yuqori darajada ishlaydi.
Jismoniy sarlavha (MAC manzili) paketdan oldin o'chiriladi
qayta ishlash uchun foydalanuvchiga yuboriladi.
4. Analizatorning dasturiy ta'minotini amalga oshirishga misol
-------------------------------------------------

Biz quyidagilarga muvofiq ishlaydigan tarmoq analizatorini ishlab chiqamiz


algoritm:

- ishga tushirilgandan so'ng, analizator tarmoq parametrlarini aniqlaydi


eth0 interfeysi, masalan, IP manzili, pastki tarmoq niqobi, MTU o'lchami,
indekslaydi va interfeysni bema'ni rejimga qo'yadi.
Ushbu rejimda interfeys tarmoqda aylanayotgan barcha paketlarni hatto qabul qiladi
agar ular berilgan xostga murojaat qilmasa;

- paketli soket yaratiladi va tanlanganga ulanadi


tarmoq interfeysi (eth0). Keyinchalik, cheksiz tsikldagi analizator
tarmoq paketlarini qabul qiladi va ushbu paket haqidagi ma'lumotlarni ko'rsatadi -
Yuboruvchi va maqsad MAC va IP manzillari, paket hajmi, hajmi
sarlavha IP, transport protokoli turi (TCP/UDP), manba porti va
oluvchi. Loopdan chiqish SIGINT signali kelganda amalga oshiriladi
(Ctrl-C tugmalar birikmasi tomonidan yaratilgan);

- SIGINT signalini olgandan so'ng, analizator paketlarni qabul qilish tsiklini to'xtatadi, olib tashlaydi.


tarmoq interfeysidan nopok bayroq va bajarishni tugatadi.

Tarmoq interfeysining parametrlarini aniqlang va uning rejimlarini almashtiring


getifconf() funktsiyasi. Ushbu funktsiyaning prototipi quyidagicha ko'rinadi:
int getifconf(__u8 *, struct ifparam *, int)

Funktsiya uchta parametrni oladi:


-tarmoq interfeysining ramziy nomini o'z ichiga olgan qatorga ko'rsatgich;
- tarmoq parametrlari saqlanadigan strukturaga ko'rsatgich
interfeys. Ushbu tuzilmaning ta'rifi quyida muhokama qilinadi;
-interfeysning ishlash rejimini belgilovchi bayroq
getsock_recv() funktsiyasi paketli rozetkani yaratadi:
int getsock_recv (int)

Funktsiya parametri tarmoq interfeysining indeksidir


rozetkaga ulangan.
Saqlaydigan ifparam strukturasini aniqlash
tarmoq interfeysi parametrlarini analizator.h fayliga joylashtiramiz:
/* Listing 1. analizator.h fayli */
#include
#define PROMISC_MODE_ON 1 // promiscuous rejimni yoqish uchun belgilang
#define PROMISC_MODE_OFF 0 // promiscuous rejimni yoqish uchun belgilang
struct ifparam {
__u32ip; // IP manzil
__u32 mask; // Tarmoq maskasi
int mtu; // MTU hajmi
int index; // interfeys indeksi
}ifp;
Keling, har bir funktsiyani batafsil ko'rib chiqaylik.
/*
* Listing 2. Tarmoq interfeysi parametrlarini aniqlash funksiyasi va
* almashtirish rejimlari (getifconf.c fayli)
*/
#include
#include
#include
#include
#include "analizator.h"

int getifconf(__u8 *intf, struct ifparam *ifp, int mode)


{
int fd;
struct sockaddr_in s;
struct ifreq ifr; // см.

memset((void *)&ifr, 0, sizeof(struct ifreq));


if((fd = socket(AF_INET,SOCK_DGRAM,0)) < 0) return (-1);

sprintf(ifr.ifr_name,"%s",intf);

/*
* Rejim bayrog'ini tekshiring. Agar u 0 ga o'rnatilgan bo'lsa, promiscuous rejimi
* o'chirilgan bo'lishi kerak, shuning uchun sozlash rejimi yorlig'iga o'tish darhol amalga oshiriladi
*/
if(!mode) goto setmode;
/*
* Tarmoq interfeysining IP manzilini aniqlang
*/
if(ioctl(fd, SIOCGIFADDR, &ifr) < 0) {
perror("ioctl SIOCGIFADDR");
return -1;
}
memset((void *)&s, 0, sizeof(struct sockaddr_in));
memcpy((void *)&s, (void *)&ifr.ifr_addr, sizeof(struct sockaddr));
memcpy((void *)&ifp->ip, (void *)&s.sin_addr.s_addr, sizeof(__u32));
/*
* Tarmoq maskasiini aniqlaymiz
*/
if(ioctl(fd, SIOCGIFNETMASK, &ifr) < 0) {
perror("ioctl SIOCGIFNETMASK");
return -1;
}
memset((void *)&s, 0, sizeof(struct sockaddr_in));
memcpy((void *)&s, (void *)&ifr.ifr_netmask, sizeof(struct sockaddr));
memcpy((void *)&ifp->mask, (void *)&s.sin_addr.s_addr, sizeof(u_long));
/*
* MTU hajmini aniqlaymiz
*/
if(ioctl(fd, SIOCGIFMTU, &ifr) < 0) {
perror("ioctl SIOCGIFMTU");
return -1;
}
ifp->mtu = ifr.ifr_mtu;
/*
* Interfeys indeksi
*/
if(ioctl(fd, SIOCGIFINDEX, &ifr) < 0) {
perror("ioctl SIOCGIFINDEX");
return -1;
}
ifp->index = ifr.ifr_ifindex;

/*
* Tarmoq interfeysining belgilangan ish rejimini o'rnating


*/
setmode:
/*
* Bayroqlarning qiymatini oling
*/
if(ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
perror("ioctl SIOCGIFFLAGS");
close(fd);
return -1;
}
/*
* Funktsiyaning uchinchi parametrining qiymatiga qarab, o'rnating
* yoki behayo bayroqni olib tashlang
*/
if(mode) ifr.ifr_flags |= IFF_PROMISC;
else ifr.ifr_flags &= ~(IFF_PROMISC);
/*
* Interfeys bayroqlarining yangi qiymatini o'rnating
*/
if(ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) {
perror("ioctl SIOCSIFFLAGS");
close(fd);
return (-1);
}

return 0;


}
SIOCGIFADDR, SIOCGIFNETMASK, SIOCGIFMTU va boshqalar qiymatlari quyidagilarda aniqlanadi.
fayl . Ushbu fayl sarlavha ro'yxatiga kiritilmagan.
fayllar, chunki u allaqachon da aniqlangan.
/*
* Listing 3. Paket rozetkasini yaratish funksiyasi (getsock_recv.c fayli)
*/
#include
#include
#include
#include

int getsock_recv(int index)


{
int sd;
/*
* Manzil ma'lumotlarini saqlash uchun paketli rozetkalar bilan ishlashda
* sockaddr_in strukturasi o'rniga tarmoq interfeysi, struktura ishlatiladi
* sockaddr_ll (qarang: )
*/
struct sockaddr_ll s_ll;
/*
* Paket rozetkasini yarating. Chunki Shuningdek, biz MAC manzillarini qayta ishlaymiz,
* rozetka tizimi chaqiruvining turi parametri SOCK_RAW ga o'rnatiladi
*/
sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
if(sd < 0) return -1;

memset((void *)&s_ll, 0, sizeof(struct sockaddr_ll));


/*
* s_ll manzil tuzilmasi maydonlarini to'ldiring
*/
s_ll.sll_family = PF_PACKET; // rozetka turi
s_ll.sll_protocol = htons (ETH_P_ALL); // qabul qilingan protokol turi
s_ll.sll_ifindex = index; // tarmoq interfeysi indeksi

/*
* Soketni tarmoq interfeysiga ulang. Asosan, buni qiling


* agar xostda faqat bitta tarmoq interfeysi faol bo'lsa talab qilinadi.
* Ikki yoki undan ortiq tarmoq kartalari mavjud bo'lsa, paketlar darhol hammadan olinadi
* faol interfeyslar va agar bizni faqat bitta segmentdagi paketlar qiziqtirsa
* tarmoqlar, rozetkani kerakli interfeysga ulash tavsiya etiladi
*/
if(bind(sd, (struct sockaddr *)&s_ll, sizeof(struct sockaddr_ll)) < 0) {
close(sd);
return -1;
}

return sd;


}
Tarmoq paketlarini qabul qilish va natijalarni ko'rsatish sikli amalga oshiriladi
main() funktsiyasida.

/*
* Listing 4. Asosiy funksiya (analyzator.c fayli)


*/
#include
#include
#include
#include
#include
#include
#include
#include "analizator.h"
/*
* Qabul qilingan tarmoq paketlari buff buferida saqlanadi.
* ETH_FRAME_LEN qiymati Ethernet ramkasining maksimal uzunligiga teng (1514)
* va da belgilangan
*/
__u8 buff[ETH_FRAME_LEN];

/*
* Standart SIGINT signal ishlovchisini almashtiradigan funksiya.


* Ushbu funktsiyaning vazifasi interfeysni tashqariga chiqarishdir
* Oddiy rejimga "Promiscuous mode" ni bildiradi
*/
void mode_off()
{
if(getifconf("eth0", &ifp, PROMISC_MODE_OFF) < 0) {
perror("getifconf");
exit(-1);
}

return;
}

/*
* Asosiy funktsiya
*/
int main()
{
__u32 num = 0;
int eth0_if, rec = 0, ihl = 0;
struct iphdr ip; // paketning IP sarlavhasini saqlash uchun tuzilma
struct tcphdr tcp; // TCP sarlavhasi
struct ethdr eth; // Ethernet ramka sarlavhasi
statik struct sigaction act;
/*
* eth0 tarmoq interfeysi parametrlarini oling va uni tarjima qiling
* fohisha rejimiga
*/
if(getifconf("eth0", &ifp, PROMISC_MODE_ON) < 0) {
perror("getifconf");
return -1;
}

/*
* Tarmoq interfeysining qabul qilingan parametrlarini ko'rsatish


*/
printf("IP адрес - %s\n",inet_ntoa(ifp.ip));
printf("Маска подсети - %s\n",inet_ntoa(ifp.mask));
printf("MTU - %d\n", ifp.mtu);
printf("Индекс - %d\n", ifp.index);

/*
* Paket soketi deskriptorini oling


*/
if((eth0_if = getsock_recv(ifp.index)) < 0) {
perror("getsock_recv");
return -1;
}

/*
* Yangi SIGINT signal ishlovchisini aniqlang - mode_off funksiyasi


*/
act.sa_handler = mode_off;
sigfillset(&(act.sa_mask));
sigaction(SIGINT, &act, NULL);

/*
* Biz paketlarni qabul qilishning cheksiz tsiklini boshlaymiz


*/
for(;;) {

memset(buff, 0, ETH_FRAME_LEN);



rec = recvfrom(eth0_if, (char *)buff, ifp.mtu + 18, 0, NULL, NULL);
if(rec < 0 || rec > ETH_FRAME_LEN) {
perror("recvfrom");
return -1;
}

memcpy((void *)ð, buff, ETH_HLEN);


memcpy((void *)&ip, buff + ETH_HLEN, sizeof(struct iphdr));
if((ip.version) != 4) continue;
memcpy((void *)&tcp, buff + ETH_HLEN + ip.ihl * 4, sizeof(struct tcphdr));

/*
* Yuboruvchi va maqsadli MAC manzillari


*/
printf("\n%u\n", num++);
printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\t->\t",
eth.h_source[0],eth.h_source[1],eth.h_source[2],
eth.h_source[3],eth.h_source[4],eth.h_source[5]);

printf("%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",


eth.h_dest[0],eth.h_dest[1],eth.h_dest[2],
eth.h_dest[3],eth.h_dest[4],eth.h_dest[5]);

printf("Длина заголовка - %d, ", (ip.ihl * 4));


printf("длина пакета - %d\n", ntohs(ip.tot_len));

/*
* Agar transport protokoli TCP bo'lsa, IP manzillar va portlarni ko'rsating


* oluvchi va jo'natuvchi
*/
if(ip.protocol == IPPROTO_TCP) {
printf("%s (%d)\t->\t",inet_ntoa(ip.saddr), ntohs(tcp.source));
printf("%s (%d)\n",inet_ntoa(ip.daddr), ntohs(tcp.dest));
printf("TCP пакет\n");
}
}

return 0;


}

Bajariladigan faylni yaratish uchun quyidagi tarkibga ega Makefile faylini yaratamiz:


.PHONY = clean
analizator: analizator.o getifconf.o getsock_recv.o
gcc $^ -g -o $@

%.o: %.c
gcc -c $^


clean:
rm -f *.o


rm -f ./analizator

Ishga tushgandan so'ng, dastur interfeysni noaniq rejimga o'tkazadi


va tarmoq trafigini tinglash va ko'rsatishning cheksiz tsiklini boshlaydi
natijalar. Interfeysning behayo rejimi yoqilganligi aniqlanadi
/var/log/messages faylida:
eth0: Promiscuous mode enabled.
device eth0 entered promiscuous mode
Kombinatsiyani bosgandan so'ng analizatorning cheksiz aylanishi to'xtatiladi
Ctrl-C tugmalari. Dastur SIGINT signalini va signal ishlov beruvchisini oladi
mode_off() funksiyasi interfeysdan behayo bayroqni olib tashlaydi. Qayerda
/var/log/messages faylida yozuv paydo bo'ladi:
device eth0 left promiscuous mode

5. Paketlarni filtrlash. paket filtri


---------------------------------------

Ish paytida analizator tarmoqda aylanayotgan barcha paketlarni oladi,


va har bir qabul qilingan paket haqidagi ma'lumotlarni ko'rsatish. Agar biz paketlarga qiziqsak,
ma'lum xostlarga tegishli bo'lsa, manzil qismini tahlil qilish kerak
har bir qabul qilingan paket. Buni operator yordamida analizatorning o'zi amalga oshirishi mumkin
shartlar bo'lsa. Ammo bu funktsiyani OS yadrosiga tayinlash yaxshiroqdir.
Linux soket filtri (LSF) vositalaridan foydalanib, keraksiz trafikni yo'q qilishingiz mumkin.
LSF sizga filtrni to'g'ridan-to'g'ri rozetkaga yaratish va ulash imkonini beradi
quyidagi formatdagi ko'rsatmalar ketma-ketligidir
(qarang: ):

struct sock_filter /* Filter block */


{
__u16 code; /* Actual filter code */
__u8 jt; /* Jump true */
__u8 jf; /* Jump false */
__u32 k; /* Generic multiuse field */
};

LSF Berkeley Packet Filter (BPF) tilining vorisi hisoblanadi


Stiv MakKen va Van Jeykobson tomonidan ishlab chiqilgan.
LSF ko'rsatma kodlari BPF bilan bir xil, barcha ko'rsatmalarning tafsilotlari
BSD bfp.4 manpage yoki opennet.ru saytiga murojaat qilib olish mumkin.
Biz asosiy turlarni ta'riflaymiz va LSF ko'rsatmalaridan foydalanishga misollar keltiramiz.
BPF_LD

BFP_LD ko'rsatmasi akkumulyatorga quyidagi qiymatlarni yuklash uchun ishlatiladi:


- konstantalar (BPF_IMM)
- ma'lumotlar blokida ma'lum bir ofsetda joylashgan qiymat
(BPF_ABS, BPF_IND)
- xotira katagida joylashgan qiymat (BPF_MEM)

BPF_IND va BPF_ABS qiymatlari uchun yuklanishi kerak bo'lgan ma'lumotlarning hajmi quyidagicha ko'rsatilishi kerak.


so'z (BPF_W), yarim so'z (BPF_H), bayt (BPF_B). Bu mashina degan ma'noni anglatadi
umumiy maqsadli registrlardagi bitlar soniga teng bo'lgan so'z. 32 uchun
bit protsessorlari, bu qiymat 4 bayt.

Ushbu yo'riqnomadan foydalanishga misollar:

- ma'lumotlar blokidan akkumulyatorga 4/2/1 bayt yuklash. Ma'lumotlar blokida ofset
k qiymati bilan berilgan:
{(BPF_LD + BPF_W + BPF_ABS), 0, 0, k} A <- P[k:4]
{(BPF_LD + BPF_H + BPF_ABS), 0, 0, k} A <- P[k:2]
{(BPF_LD + BPF_B + BPF_ABS), 0, 0, k} A <- P[k:1]

- ma'lumotlar blokidan akkumulyatorga 4/2/1 bayt yuklash. Ma'lumotlar blokida offset k qiymatlari va indeks registridagi qiymat yig'indisi bilan beriladi:


{(BPF_LD + BPF_W + BPF_IND), 0, 0, k} A <- P[X+k:4]
{(BPF_LD + BPF_H + BPF_IND), 0, 0, k} A <- P[X+k:2]
{(BPF_LD + BPF_B + BPF_IND), 0, 0, k} A <- P[X+k:1]

- doimiy K ni akkumulyatorga yuklang:


{(BPF_LD + BPF_IMM), 0, 0, k} A <- k

- K manzilli xotira katagida joylashgan qiymatni akkumulyatorga yuklang:


{(BPF_LD + BPF_MEM), 0, 0, k} A <- M[k]

BPF_LDX


BPF_LDX ko'rsatmasi indeks registriga quyidagi qiymatlarni yuklash uchun ishlatiladi:
- konstantalar (BPF_IMM)
- xotira katagida joylashgan qiymat (BPF_MEM)
- IP paket sarlavhasi uzunligi (BPF_MSH)
Ushbu yo'riqnomadan foydalanishga misollar:
- doimiy K ni indeks registriga yuklang:
{(BPF_LDX + BPF_IMM), 0, 0, k} X <- k

- qabul qilingan IP-paket sarlavhasining uzunligini indeks registriga yuklang:


{(BPF_LDX + BPF_B + BPF_MSH), 0, 0, k} X <- 4 * (P[k:1] & 0xF)

Sarlavha uzunligi IP-paketning birinchi baytining pastki 4 bitida joylashgan va o'z ichiga oladi


sarlavhadagi 32 bitli so'zlar soni. Chunki sarlavhaning minimal hajmi
20 bayt, keyin bu maydonning minimal qiymati 5 (ya'ni besh 32
bit so'zlar). Yuqori 4 bit protokol versiyasini o'z ichiga oladi va IPv4 uchun bu
qiymati 4. Shunday qilib, birinchi bayt 0x45 qiymatini o'z ichiga oladi deylik.
Quyidagi arifmetik-mantiqiy amallarni bajaramiz:
(0x45 & 0x0F) * 4 = 0x14

Natijada, biz 0x14 ni olamiz, o'nli ko'rinishda - 20. Bu kerakli uzunlikdir


Sarlavha IP.

BPF_JMP


BPF_JMP ko'rsatmasi filtrlash dasturini bajarish tartibini o'zgartiradi. Bu
Ko'rsatma ham shartli, ham shartsiz bo'limni bajarishi mumkin. Da
shartsiz sakrashda ofset 32 ​​bitli qiymat bilan belgilanadi, shartli -
8-bit. Ofset - bu kerak bo'lgan ko'rsatmalar soni
filtrlash dasturini o'tkazib yuboring.

Ushbu yo'riqnomadan foydalanishga misollar:

- K qiymati bilan belgilangan ofset bo'yicha shartsiz o'tish:
{(BPF_JMP + BPF_JA), 0, 0, k} pc += k

- akkumulyator va doimiy K qiymatlarini taqqoslash. Shartli novdani ofset bo'yicha, jt maydonida A > k sharti ostida ko'rsatilgan:


{(BPF_JMP + BPF_JGT + BPF_K), jt, jf, k} pc += (A > k)?jt:jf
BPF_RET

Tarmoqqa kelgan har bir paket uchun filtrlash dasturi bajariladi


interfeys. Filtrning natijasi musbat butun son,
qabul qilingan paketdagi qancha bayt keyingi foydalanish mumkin bo'lishini ko'rsatadi
foydalanuvchi ilovasi tomonidan qayta ishlash. Qabul qilingan paket shartlarga javob bermasa
filtrlash, filtrlash dasturi null qiymatni qaytaradi.

Ushbu ko'rsatmani ishlatishga misol:


- keyingi ishlov berish uchun ilovaga K baytni qaytaring


{(BPF_RET + BPF_K), 0, 0, k}


Barcha BPF_xxx qiymatlari da aniqlangan


6. Paket filtrini dasturiy ta'minlashga misol


-------------------------------------------------

Yaratilayotgan rozetkaga ulanish orqali getsock_recv() funksiya kodini o'zgartiramiz


filtr. Kiritilgan filtr quyidagi tuzilma bilan tavsiflanadi (qarang: ):
struct sock_fprog
{
unsigned short len; /* Number of filter blocks */
struct sock_filter *filter;
};

Bu yerda struct sock_filter *filtr ifodalovchi filtr dasturidir


struct sock_filter tuzilmalari massividir.

Filtrlash dasturini kompilyatsiya qilishdan oldin filtrlash shartlarini aniqlaymiz:


IP protokol paketlarini qabul qilish, jo'natuvchining manzili - 192.168.1.2, transport
protokol - TCP, port - telnet.

Filtrlash dasturini kompilyatsiya qilishda biz quyidagilardan foydalanamiz


so'l ta'riflar (qarang: ):
#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }

/*
* Listing 5. Filtrlash dasturi


*/
struct sock_fprog Filter;
struct sock_filter BPF_code[] = {

/*
* Qabul qilingan Ethernet ramkasida 12 bayt ofsetda (MAC manzilining 6 bayti


* jo'natuvchi + 6 bayt MAC manzili) 2 baytni tashkil qiladi
* tarmoq sathi protokoli identifikatori. Biz ushbu 2 baytni yuklaymiz
* batareya
*/
BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),

/*
* Akkumulyatorga yuklangan qiymat identifikatorga mos kelishini tekshiring


* IP protokoli (ETH_P_IP). Ushbu qiymatlarning tengligi sharti bajarilganda
* keyingi yo'riqnomaga o'ting (jt = 0). Aks holda, biz harakat qilamiz
* 8 ko'rsatmalar pastga (jf = 8) va filtrlash dasturidan qaytish bilan chiqing
* nol qiymat
*/
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, ETH_P_IP, 0, 8),
/*
* Biz akkumulyatorga 26 ofsetda joylashgan 4 baytlik qiymatni yuklaymiz
* olingan paketda. Bu qiymat manbaning IP manziliga mos keladi
*/
BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 26),

/*
* Akkumulyatorga yuklangan qiymat IP manziliga mos kelishini tekshiring


* 192.168.1.2, olti burchakli - 0xC0A80102. Tarmoqda
* formatlash ushbu manzil 0x0201A8C0 kabi ko'rinadi. Bu uzatish tartibi bilan bog'liq.
* tarmoqdagi ma'lumotlar - uzatish eng kam ahamiyatli baytdan boshlanadi. Agar manzil bo'lmasa
* mos keldi - filtrlash dasturidan chiqing
*/
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, 0xC0A80102, 0, 6),

/*
* Biz akkumulyatorga 23-ofsetda 1 bayt yuklaymiz.Bu bayt


* transport qatlamining protokol identifikatorini o'z ichiga oladi
*/
BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, IPPROTO_TCP, 0, 4),

/*
* IP sarlavhasining uzunligini aniqlang


*/
BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, ETH_HLEN),

/*
* IP sarlavhasi uzunligi qiymati indeks registriga yuklangan. Manba porti


* IP va Ethernet sarlavhalari uzunligi yig'indisi bilan belgilanadigan ofsetda joylashgan
*/
BPF_STMT(BPF_LD+BPF_H+BPF_IND, ETH_HLEN),

/*
* Manba portining qiymatini tekshiring


*/
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, 0x17, 0, 1),
BPF_STMT(BPF_RET+BPF_K,1500),
BPF_STMT(BPF_RET+BPF_K,0),
};

Filtr dasturi tayyor. struct sock_fprog Filtr tuzilmasi maydonlarini to'ldirish


va filtrni rozetkaga ulang:
Filter.len = 11; // количество структур в массиве BPF_code
Filter.filter = BPF_code;

setsockopt(sd, SOL_SOCKET, SO_ATTACH_FILTER, &Filter, sizeof(struct sock_fprog));


Yuqoridagi misolda muhim kamchilik bor - dastlabki ma'lumotlar
filtrlash (IP-manzil va port) to'g'ridan-to'g'ri dastur matniga kiritiladi.

Biz getsock_recv() funktsiyasini yangisiga moslashuvchan sozlash imkonini berish uchun o'zgartiramiz


filtrlash shartlari. Filtrlash parametrlari - IP-manzil va port - uzatiladi
asosiy funksiyadan. getsock_recv() funksiyasi prototipi quyidagi shaklni oladi:
int getsock_recv (int, __u8 *, int)

Birinchi parametr o'zgarmadi - bu tarmoq interfeysining indeksidir. Ikkinchi parametr - bu


IP-manzilni o'z ichiga olgan qatorga ko'rsatgich, uchinchi parametr - port qiymati.
BPF_code massivida uchinchi va sakkizinchi elementlar quyidagicha qayta yoziladi:
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, 0, 0, 6), // 3-element
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, 0, 0, 1), // 8
Bu erda IP-manzil va port qiymatini o'z ichiga olgan konstantalar nolga o'rnatiladi.
Keling, ularni asosiy funktsiyadan o'tgan qiymatlar bilan to'ldiramiz:
BPF_code[3].k = __swab32(inet_addr(ip_addr));
BPF_code[8].k = port;

Biz IP-manzilning satr qiymatini tarmoq formatiga o'zgartiramiz va keyin qachon


__swab32 so'l ta'rifining yordami (qarang: fayli)
joylarda baytlar - uchinchisi bilan nolga, ikkinchisi birinchisi bilan.

Natijada getsock_recv() funktsiyasi quyidagicha ko'rinadi:

/*
* Listing 6. Paket rozetkasini yaratish va ulanish funksiyasi
* paket filtri (getsock_recv.c fayli)
*/
#include
#include
#include
#include
#include
#include
#include

int getsock_recv (int index, __u8 *ip_addr, int port)


{
int sd;

struct sockaddr_ll s_ll;


struct sock_fprog Filter;
struct sock_filter BPF_code[] = {
BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, ETH_P_IP, 0, 8),
BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 26),
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, 0, 0, 6),
BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, IPPROTO_TCP, 0, 4),
BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, ETH_HLEN),
BPF_STMT(BPF_LD+BPF_H+BPF_IND, ETH_HLEN),
BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_IMM, 0, 0, 1),
BPF_STMT(BPF_RET+BPF_K,1500),
BPF_STMT(BPF_RET+BPF_K,0),
};

sd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));


if(sd < 0) return -1;

memset((void *)&s_ll, 0, sizeof(struct sockaddr_ll));


s_ll.sll_family = PF_PACKET;


s_ll.sll_protocol = htons(ETH_P_ALL);
s_ll.sll_ifindex = index;

if(bind(sd, (struct sockaddr *)&s_ll, sizeof(struct sockaddr_ll)) < 0) {


close(sd);
return -1;
}

BPF_code[3].k = __swab32(inet_addr(ip_addr));


BPF_code[8].k = port;

Filter.len = 11;


Filter.filter = BPF_code;

if(setsockopt(sd, SOL_SOCKET, SO_ATTACH_FILTER, &Filter, sizeof(struct sock_fprog))<0) {


perror("SO_ATTACH_FILTER");
close(sd);
return -1;
}

return sd;


}
Asosiy funktsiyaga o'zgartirishlar kiritish qoladi (to'liq matn berilmagan):
int main(int argc, char **argv)
{
/* Oʻzgaruvchan taʼriflar */
....
if(argc != 3) {
perror("argc");
return -1;
}
/* Interfeys parametrlarini aniqlang va natijalarni ko'rsating */
....
/* Paket rozetkasini oling */
if((eth0_if = getsock_recv(ifp.index, argv[1], atoi(argv[2]))) < 0) {
perror("getsock_recv");
return -1;
}
/* Paketlarni qabul qilish va natijalarni ko'rsatish uchun tsikl */
....
}
Analizatorni ishga tushirishda parametrlar buyruq satrida - IP manzilida o'rnatiladi
jo'natuvchi va port.

Agar filtrlash dasturini yozishni juda soddalashtirish mumkin


tcpdump xizmatlaridan foydalaning. Masalan, filtrlash dasturini yozamiz,
192.168.1.1 xostidan olingan paketlarni qabul qilish,
transport protokoli - TCP, port - 23. Buyruqni kiriting:
tcpdump -dd src 192.168.1.1 and tcp src port 23
Javob sifatida qabul qilamiz:

{ 0x28, 0, 0, 0x0000000c },


{ 0x15, 0, 10, 0x00000800 },
{ 0x20, 0, 0, 0x0000001a },
{ 0x15, 0, 8, 0xc0a80101 },
{ 0x30, 0, 0, 0x00000017 },
{ 0x15, 0, 6, 0x00000006 },
{ 0x28, 0, 0, 0x00000014 },
{ 0x45, 4, 0, 0x00001fff },
{ 0xb1, 0, 0, 0x0000000e },
{ 0x48, 0, 0, 0x0000000e },
{ 0x15, 0, 1, 0x00000017 },
{ 0x6, 0, 0, 0x00000060 },
{ 0x6, 0, 0, 0x00000000 },
Bu kerakli filtrlash dasturi.
Xulosa
Ushbu loyihada zararli veb-saytlarga kirayotgan foydalanuvchilarni kuzatib borish uchun biz tarmoq trafigi analizatorini yaratdik va amalga oshirdik va dastur kodlari skriptidan foydalangan holda tarmoq trafigini tahlil qildik, zararli veb-saytlarga kirishga urinayotgan foydalanuvchilarning IP manzillarini va boshqa foydali ma'lumotlarini tahlil qildik. Shuningdek, Buyruqlar qatori interfeysi (.cli) formatidagi fayl yordamida zararli veb-saytlarning IP manzili. Shuningdek, biz geografik joylashuvlarni Keyhole Markup Language (.kml) format faylidan foydalangan holda oldik. Biz ushbu ilovani Python skripti yordamida ishlab chiqdik, u GeoLiteCity ma'lumotlar bazasidan foydalanadi va butun dunyo bo'ylab joylashuvga oid barcha ma'lumotlarni o'z ichiga oladi. Shuningdek, biz Google Maps va Wireshark kabi vositalardan foydalandik. Biz foydalanadigan kutubxonalarga PyGeoIP va DPKT python modullari kiradi.
Ma'lumotnomalar
1. https://python.org
2. https://pypi.python.org/pypi/pygeoip
3. https://pypi.python.org/pygi/dpkt
4. https://wireshark.org
Download 1,07 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish