3 хэсгээс бүрдсэн судалгаа, хөгжлийн тухай өгүүллэг. 1-р хэсэг нь эрэл хайгуул юм.
Олон beech мод байдаг - үүнээс ч илүү ашиг тустай.
Асуудлын тодорхойлолт
Пентест болон RedTeam кампанит ажлын үеэр VPN, RDP, Citrix гэх мэт Хэрэглэгчийн стандарт хэрэгслийг ашиглах боломжгүй байдаг. дотоод сүлжээнд нэвтрэх зангуу болгон. Зарим газарт стандарт VPN нь MFA ашиглан ажилладаг бөгөөд техник хангамжийн токеныг хоёр дахь хүчин зүйл болгон ашигладаг бол зарим газарт үүнийг харгис хэрцгий хянаж, бидний VPN нэвтрэлт нь тэдний хэлснээр тэр даруй харагдах болно, гэхдээ заримд нь байдаг. зүгээр л ийм арга байхгүй.
Ийм тохиолдолд бид "урвуу хонгил" гэж нэрлэгддэг дотоод сүлжээнээс гадаад эх үүсвэр эсвэл бидний удирддаг сервер рүү холболт хийх шаардлагатай болдог. Ийм хонгил дотор бид Хэрэглэгчийн дотоод нөөц бололцоотой аль хэдийн ажиллаж чадна.
Эдгээр буцах хонгилын хэд хэдэн сорт байдаг. Тэдгээрийн хамгийн алдартай нь мэдээж Метерпретер юм. Урвуу порт дамжуулах SSH хонгилууд нь хакеруудын дунд маш их эрэлт хэрэгцээтэй байдаг. Урвуу хонгилыг хэрэгжүүлэх олон арга хэрэгсэл байдаг бөгөөд тэдгээрийн ихэнхийг сайтар судалж, тайлбарласан байдаг.
Мэдээжийн хэрэг, тэдний хувьд аюулгүй байдлын шийдлийг хөгжүүлэгчид хажуу тийшээ зогсдоггүй бөгөөд ийм үйлдлийг идэвхтэй илрүүлдэг.
Жишээлбэл, MSF сессийг Cisco эсвэл Positive Tech-ийн орчин үеийн IPS-ээр амжилттай илрүүлдэг ба урвуу SSH туннелийг бараг ямар ч энгийн галт ханаар илрүүлж болно.
Тиймээс RedTeam-ын сайн кампанит ажилд анзаарагдахгүй байхын тулд бид стандарт бус арга хэрэгслээр урвуу хонгил барьж, сүлжээний бодит үйл ажиллагааны горимд аль болох ойртох хэрэгтэй.
Үүнтэй төстэй зүйлийг олох эсвэл зохион бүтээхийг хичээцгээе.
Аливаа зүйлийг зохион бүтээхээсээ өмнө бид ямар үр дүнд хүрэхийг хүсч байгаагаа, бидний хөгжил ямар үүрэг гүйцэтгэх ёстойг ойлгох хэрэгтэй. Бид хамгийн нууцлаг горимд ажиллахын тулд хонгилд ямар шаардлага тавих вэ?
Тохиолдол бүрийн хувьд ийм шаардлагууд ихээхэн ялгаатай байх нь ойлгомжтой боловч ажлын туршлага дээр үндэслэн гол зүйлийг нь тодорхойлж болно.
- Windows-7-10 үйлдлийн систем дээр ажиллах. Ихэнх корпорацийн сүлжээнүүд Windows ашигладаг тул;
- үйлчлүүлэгч нь ips ашиглан тэнэг сонсохоос зайлсхийхийн тулд SSL-ээр серверт холбогддог;
- Холбох үед үйлчлүүлэгч зөвшөөрөлтэй прокси серверээр дамжуулан ажиллах ёстой, учир нь Олон компаниудад интернетэд нэвтрэх нь проксигаар дамждаг. Үнэн хэрэгтээ, үйлчлүүлэгч машин энэ талаар юу ч мэдэхгүй байж магадгүй бөгөөд прокси нь ил тод горимд ашиглагддаг. Гэхдээ бид ийм функцийг хангах ёстой;
- үйлчлүүлэгчийн хэсэг нь товч бөгөөд зөөврийн байх ёстой;
Хэрэглэгчийн сүлжээнд ажиллахын тулд та OpenVPN-ийг клиент машин дээр суулгаж, сервер рүүгээ бүрэн хонгил үүсгэж болох нь тодорхой байна (аз болоход openvpn үйлчлүүлэгчид прокси ашиглан ажиллах боломжтой). Гэхдээ нэгдүгээрт, энэ нь үргэлж ажиллахгүй, учир нь бид тэнд нутгийн админууд биш байж магадгүй, хоёрдугаарт, энэ нь маш их шуугиан тарьж, сайн SIEM эсвэл HIPS биднийг тэр дор нь "шохих" болно. Хамгийн тохиромжтой нь манай үйлчлүүлэгч inline команд гэж нэрлэгддэг байх ёстой, жишээ нь олон bash бүрхүүлүүд хэрэгжиж, командын мөрөөр дамжуулан ажиллуулдаг, жишээлбэл, үгийн макроноос тушаалуудыг гүйцэтгэх үед. - манай хонгил нь олон урсгалтай байх ёстой бөгөөд олон холболтыг нэгэн зэрэг дэмждэг;
- Үйлчлүүлэгч-серверийн холболт нь ямар нэгэн зөвшөөрөлтэй байх ёстой бөгөөд ингэснээр туннель нь зөвхөн манай үйлчлүүлэгчид зориулагдсан болохоос манай серверт заасан хаяг, портоор ирсэн бүх хүмүүст зориулагдсан биш юм. Анхны домэйнтэй холбоотой муур эсвэл мэргэжлийн сэдвүүд бүхий буух хуудас нь "гуравдагч талын хэрэглэгчдэд" нээлттэй байх ёстой.
Жишээлбэл, хэрэв үйлчлүүлэгч нь эмнэлгийн байгууллага бол эмнэлгийн ажилтны хандсан эх сурвалжийг шалгахаар шийдсэн мэдээллийн аюулгүй байдлын администраторын хувьд эмийн бүтээгдэхүүний хуудас, оношлогооны тайлбар бүхий Википедиа, доктор Комаровскийн блог гэх мэт. . нээх ёстой.
Одоо байгаа багаж хэрэгслийн дүн шинжилгээ
Өөрийнхөө унадаг дугуйг шинээр зохион бүтээхээсээ өмнө одоо байгаа унадаг дугуйнуудад дүн шинжилгээ хийж, энэ нь бидэнд үнэхээр хэрэгтэй эсэхийг ойлгох хэрэгтэй бөгөөд магадгүй ийм функциональ унадаг дугуй хэрэгтэй гэж бид ганцаараа бодож байгаагүй байх.
Интернэтээр хайлт хийх (бид ихэвчлэн google-ээр ажилладаг юм шиг санагддаг), мөн Github дээр "урвуу оймс" гэсэн түлхүүр үгсээр хайлт хийсэн нь тийм ч их үр дүнд хүрээгүй. Үндсэндээ энэ бүхэн урвуу порт дамжуулах болон үүнтэй холбоотой бүх зүйл бүхий ssh туннел барихад хүргэдэг. SSH хонгилоос гадна хэд хэдэн шийдэл байдаг:
Касперскийн лабораторийн залуусын урвуу хонгилын урт хугацааны хэрэгжилт. Нэр нь энэ скрипт нь юунд зориулагдсан болохыг тодорхой харуулж байна. Python 2.7 дээр хэрэгжсэн туннель нь тодорхой текстийн горимд ажилладаг (одоо хэлэх моод болсон - сайн уу RKN)
Python дээрх өөр нэг хэрэглүүр, мөн тодорхой текстээр, гэхдээ илүү их боломжуудтай. Энэ нь модуль хэлбэрээр бичигдсэн бөгөөд шийдлийг таны төслүүдэд нэгтгэх API-тай.
Эхний холбоос нь Голанг дахь урвуу сокс хэрэгжилтийн анхны хувилбар юм (хөгжүүлэгч дэмжээгүй).
Хоёрдахь холбоос бол Голанг хэл дээрх нэмэлт функц бүхий бидний засвар юм. Манай хувилбарт бид SSL, NTLM зөвшөөрөлтэй проксигоор дамжуулан ажиллах, үйлчлүүлэгчийн зөвшөөрөл, нууц үг буруу оруулсан тохиолдолд буух хуудас (эсвэл буух хуудас руу дахин чиглүүлэх), олон урсгалтай горимыг (өөрөөр хэлбэл хэд хэдэн хүн) хэрэгжүүлсэн. хонгилтой нэгэн зэрэг ажиллах боломжтой) , үйлчлүүлэгчийг амьд эсэхийг тодорхойлохын тулд пинг хийх систем.
Python хэл дээрх "Хятад найзууд"-аас урвуу соксыг хэрэгжүүлэх. Тэнд залхуу, "үхэшгүй" хүмүүст зориулж хятадууд угсарч, ашиглахад бэлэн хоёртын хувилбар (exe) байдаг. Энэ хоёртын файлд үндсэн функцээс гадна өөр юу агуулагдаж болохыг зөвхөн Хятад бурхан л мэддэг тул эрсдэл, эрсдэлийг өөртөө үүрч ашиглаарай.
C++ хэл дээр урвуу сокс болон бусад зүйлийг хэрэгжүүлэхэд зориулсан маш сонирхолтой төсөл. Урвуу хонгилоос гадна порт дамжуулах, командын бүрхүүл үүсгэх гэх мэтийг хийх боломжтой.
MSF хэмжигч
Энд тэдний хэлснээр ямар ч тайлбар алга. Илүү их эсвэл бага боловсролтой бүх хакерууд энэ зүйлийг маш сайн мэддэг бөгөөд үүнийг хамгаалалтын хэрэгслээр хэрхэн амархан илрүүлж болохыг ойлгодог.
Дээр дурдсан бүх хэрэгслүүд нь ижил төстэй технологи ашиглан ажилладаг: урьдчилан бэлтгэсэн гүйцэтгэх боломжтой хоёртын модулийг сүлжээн доторх машин дээр ажиллуулж, гадаад сервертэй холболт үүсгэдэг. Сервер нь SOCKS4/5 серверийг ажиллуулдаг бөгөөд холболтыг хүлээн авч, үйлчлүүлэгч рүү дамжуулдаг.
Дээрх бүх хэрэгслүүдийн сул тал нь Python эсвэл Golang-ийн аль нэгийг нь үйлчлүүлэгчийн машин дээр суулгасан байх ёстой (жишээлбэл, компанийн захирал эсвэл оффисын ажилчдын машин дээр Python суулгасан байхыг олон удаа харж байсан уу?), эсвэл урьдчилан угсарсан төхөөрөмж дээр суулгасан байх ёстой. хоёртын файлыг (үнэндээ python) энэ машин дээр чирч, нэг лонхонд скрипт хийх ёстой бөгөөд энэ хоёртын файлыг аль хэдийн ажиллуулна уу. Мөн exe-г татаж аваад дараа нь эхлүүлэх нь орон нутгийн антивирус эсвэл HIPS-ийн гарын үсэг юм.
Ерөнхийдөө дүгнэлт нь өөрийгөө харуулж байна - бидэнд powershell шийдэл хэрэгтэй байна. Одоо улаан лооль бидэн рүү нисэх болно - тэд Powershell-ийг аль хэдийн хакердсан, хянаж, хаасан гэх мэтээр ярьдаг. гэх мэт. Үнэндээ хаа сайгүй биш. Бид хариуцлагатайгаар мэдэгдэж байна. Дашрамд хэлэхэд, powershell.exe -> cmdd.exe-ийн тэнэг нэрийг өөрчлөхөөс эхлээд powerdll гэх мэтээр дуусч, блоклохыг тойрч гарах олон арга бий (энд сайн уу RKN гэсэн моод хэллэг байна 🙂).
Зохион бүтээж эхэлцгээе
Эхлээд бид Google-ээс хайх нь тодорхой байна ... бид энэ сэдвээр юу ч олохгүй (хэрэв хэн нэгэн үүнийг олсон бол тайлбар дээр холбоосыг нийтэлнэ үү). Зөвхөн байдаг
Тиймээс бид бэлэн зүйл олоогүй байгаа тул бид дугуйгаа дахин зохион бүтээх хэрэгтэй болно. Бид унадаг дугуйныхаа үндэс болгон авах болно
RSocksTun
Тэгэхээр rsockstun хэрхэн ажилладаг вэ?
RsocksTun (цаашид rs гэх) үйлдлийн систем нь Yamux болон Socks5 сервер гэсэн хоёр програм хангамжийн бүрэлдэхүүн хэсэг дээр суурилдаг. Socks5 сервер нь ердийн орон нутгийн оймс5 бөгөөд клиент дээр ажилладаг. Мөн үүнтэй холбогдох холболтыг олон талт болгох (олон урсгалыг санаж байна уу?) yamux () ашиглан хийгддэг.
Yamux хэрхэн ажилладагийн мөн чанар нь нэмэлт сүлжээний урсгалын давхаргыг нэвтрүүлж, пакет бүрт 12 байт толгой хэлбэрээр хэрэгжүүлдэгт оршино. (Энд бид уншигчдыг програмын урсгалын "thread" гэж андуурахгүйн тулд урсгал гэхээсээ илүү "урсгал" гэсэн үгийг зориудаар ашигладаг - бид энэ нийтлэлд мөн энэ ойлголтыг ашиглах болно). Yamux-ийн толгой хэсэгт урсгалын дугаар, дамжуулалтыг суулгах/тагсгах тугнууд, шилжүүлсэн байтуудын тоо, дамжуулах цонхны хэмжээг агуулна.
Ямукс нь урсгалыг суулгах/таслахаас гадна тогтсон холбооны сувгийн гүйцэтгэлийг хянах боломжийг олгодог хадгалах механизмыг хэрэгжүүлдэг. Yamux сессийг үүсгэх үед хадгалах мессежийн механизмын ажиллагааг тохируулдаг. Үнэн хэрэгтээ тохиргоонуудаас зөвхөн хоёр параметр байдаг: идэвхжүүлэх/идэвхгүй болгох, секундын дотор пакет илгээх давтамж. Keepalive мессежийг yamux сервер эсвэл yamux клиентээр илгээж болно. Хадгаламжтай мессежийг хүлээн авахдаа алсын тал нь хүлээн авсан мессеж танигчийг (үнэндээ тоо) илгээж хариу өгөх ёстой. Ерөнхийдөө keepalive нь ижил ping, зөвхөн yamux-д зориулагдсан.
Мультиплексорын ажиллах техникийг бүхэлд нь: пакетийн төрлүүд, холболтын тохиргоо, дуусгавар болох тугнууд, өгөгдөл дамжуулах механизмыг дэлгэрэнгүй тайлбарласан болно.
Эхний хэсгийн дүгнэлт
Тиймээс, нийтлэлийн эхний хэсэгт бид урвуу хонгилыг зохион байгуулах зарим хэрэгслүүдтэй танилцаж, тэдгээрийн давуу болон сул талуудыг судалж, Yamux мультиплексорын ажиллах механизмыг судалж, шинээр бий болсон powershell модулийн үндсэн шаардлагуудыг тайлбарлав. Дараагийн хэсэгт бид модулийг бараг эхнээс нь боловсруулах болно. Үргэлжлэл бий. Битгий солигоорой :)
Эх сурвалж: www.habr.com