Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 305694|Відповідь: 99

[Консольна програма] .net/c# реалізує вихідний код DNS-захоплення

  [Копіювати посилання]
Опубліковано 10.11.2017 10:31:54 | | | |
Тепер, коли інтернет-викрадення DNS стало поширеним, операторам легко реалізувати DNS-викрадення, що таке DNS-викрадення? Енциклопедія Байду представлена наступним чином:

DNS-викрадення, також відоме як викрадення доменних імен, означає перехоплення запитів на розв'язання доменних імен у захопленій мережі, аналіз запитуваних доменних імен і випуск запитів поза межами перевірки, інакше повернення фальшивої IP-адреси або нічого, щоб зробити запит невідповідним.


Сьогодні я хочу зламати програму, яку написав, програмі потрібна http-автентифікація для нормального запуску, тож зламати програму, можна підробити контент відповіді HTTP, щоб вона думала, що я автентифікований користувач, фальшивий http-відповідь, існує багато методів, сьогодні я подумав про це, чи можна використати метод DNS-захоплення, щоб підробити відповідну IP-адресу доменного імені, щоб підробити вміст відповідної відповіді HTTP.

Для реалізації DNS-захоплення найпростіший спосіб — це файл hosts, в Інтернеті існує багато специфічних методів, сьогодні давайте напишемо пристрій для вихоплення DNS на C#

Першим кроком було те, що ми написали програму саме тоді, і її метою було втілити програмуwww.itsvse.comПарсінг вказує на 127.0.0.1, я створив сайт на 80 портів на основі IIS, не кажучи вже про цей крок, вихідний код знаходиться внизу.



Другий крок — модифікація DNS-сервера машини на 127.0.0.1, як показано на рисунку нижче:


Третій крок — запустити програму, яку ми написали, а потім отримати доступ до неї через вебсайтwww.itsvse.com, ви побачите, що контент, який повертає сайт, не є вмістом нашого справжнього сайту! Зміст іншої веб-сторінки був повністю підроблений, як показано нижче:



Коли ми відкриємо Baidu, побачимо, що Baidu не можна відкрити, бо ми лише реагуємоwww.itsvse.comРозв'язання запитів на доменне ім'я ігнорується іншими розв'язками доменних імен, як показано на рисунку нижче:



Як ми впораємося з DNS-захопленням? Існує багато способів, але є політики та контрзаходи: чи сильний спис, чи щит потужний?

Ха-ха, готово.

Завантаження вихідного коду:

Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласкаВідповідь





Попередній:Коли XML обробляє SQL-оператори, він обробляє трансформацію знаків менше і більше ніж
Наступний:Різниця між ShadowsocksR і Shadowsocks
Опубліковано 27.12.2017 10:54:20 |
Цей допис востаннє відредаговано Zmoli775 2017-12-27 13:52

Коли ми відкриємо Baidu, побачимо, що Baidu не можна відкрити, бо ми лише реагуємоwww.itsvse.comРозв'язання запитів на доменне ім'я ігнорується іншими розв'язками доменних імен, як показано на рисунку нижче:
Чи можете ви захопити призначений URL? Решта доменного імені можна отримати звичайний доступ — як це робити!--- був надто необережним, я не звертав уваги...



Опубліковано 12.12.2019 00:24:37 |
if (eventArgsQuery.Questions.Count == 1 && eventArgsQuery.Questions[0]. RecordType == RecordType.A)
                {
                    if (domainnew == "www.test.com") // захопити доменне ім'я QQ
                    {
                        Response.AnswerRecords.Add(new ARecord(eventArgsQuery.Questions[0]. Ім'я, 36000, IPAddress.Parse("192.168.15.15"))); Повертає власний запис A
                        Response.ReturnCode = ReturnCode.NoError;
                    }
                    інше
                    {

                        this.richTextBox3.Text = this.richTextBox3.Text.Insert(0, DateTime.Now.ToString("yyyy MM dd HH:mm:ss.ffff"). ToString() + "--- запитаний домен має бути переадресований до публічного DNS-запиту" + Environment.NewLine);
                        DnsClient dnsClient = новий DnsClient(IPAddress.Parse("223.5.5.5"), 5000);
                        DnsMessage dnsMessage = dnsClient.Resolve(eventArgsQuery.Questions[0]. Ім'я, RecordType.A);

/////请教一下楼主,这个地方请求不到信息,如何解决?谢谢

                        foreach (DnsRecordBase dnsRecord у dnsMessage.AnswerRecords)
                        {
                            ARecord aRecord = dnsRecord як ARecord;
                            якщо (aRecord != null)
                            {
                                Response.AnswerRecords.Add(new ARecord(eventArgsQuery.Questions[0]. Ім'я, 36, адреса запису)); Поверніть йому рекорд 127.0.0.1, тобто машину
                                Response.ReturnCode = ReturnCode.NoError;
                            }
                            інше
                            {
                                продовжити;
                            }
                        }



                    }
                }
 Орендодавець| Опубліковано 08.12.2017 15:47:28 |
Опубліковано 10.11.2017 10:45:14 |
Дякую, що поділилися, гарні речі
Опубліковано 10.11.2017 10:49:29 |
Дякую, що поділилися, цікаво
Опубліковано 10.11.2017 11:29:38 З телефону |
Ні, ні, ні, білий, ніжний
Опубліковано 11.11.2017 01:49:29 |
Дякую, що поділилися
Опубліковано 12.11.2017 14:33:21 |
Вчитися вчитися
Опубліковано 14.11.2017 16:05:10 |
RE: .net/c# 实现dns劫持源代码
Опубліковано 16.11.2017 10:41:11 |
Неймовірно~~ Великий хлопець
Опубліковано 14.12.2017 16:26:31 |
Великий бог, неймовірний
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com