Microsoft Terminal Service Connection___MSTSC

5 292

برای ادمین شبکه همیشه حیاتی است که کار های خود را به سرعت و با راحتی بیشتر انجام دهد که این امر منوط به این است که شما بتونید کارهای خود رو به صورت ریموت انجام بدید ، به صورت ریموت مانیتور کنید ، به صورت ریموت همکاری کنید و غیره. حال شما ممکن است ادمین ساختار هایی مانند  VDI در شبکه باشید ، یا یک سطح پایین تر ادمینی باشید که نرم افزار هایی را با RDS در شبکه پابلیش کرده باشید ، و یا اینکه HelpDesk ای باشید که بخواهید کار های کلاینت های شبکه را انجام دهید و یا غیره که در هر صورت این آموزش به درد شما میخوره ( به جان خودم راست میگم).

حالا چه چیزی بهتر از خود remote desktop ویندوز برای انجام کار های ریموت ؟!!!

البته خودم همیشه بیشتر به صورتی با MSTSC کار میکردم که یه آدرس داخلش تایپ میکردم و وارد میشدم :))

یک توضیح هم باید اولش بدم که وقتی شما به صورت کلی و معمول روی یک کلاینت یا روی یک سرور لاگین میکنید اون رو به عنوان یک session در نظر میگیره، حال شما به دو صورت میتونید روی یک ویندوز لاگین کنید یکی از به صورت فیزیکی پاش بشینید و موس و کیبورد بزنید بهش و واردش بشید که وقتی session ای به این صورت ایجاد میشه ویندوز اون رو به اسم Console میشناسه. اما وقتی شما از سرویس های مایکروسافت استفاده میکنید که از پرتکل RDP استفاده میکنه و با استفاده از آنها لاگین میکنید یک session روی سرور یا کلاینتی که هدف شماست ایجاد میشه و ویندوز اون رو به اسم rdp-tcp میشناسه. مثالی هم که میتونم نشون بدم عکس زیره که خروجی کامند query session هست که session های روی ویندوز رو به شما نشون میده. من با یوزر admin به صورت فیزیکی روی سرورم لاگین کردم و با استفاده از RDP از روی لپتاپم و با یوزر administrator لاگین کردم.

نکته : ویندوز برای console که با یوزر admin لاگین کردم session ID 1 رو در نظر گرفته و برای rdp-tcp که با یوزر administrator لاگین کردم Session ID 2 رو گذاشته.(حالا با اینا جلوتر کار داریم).

بریم سراغ کار عملیاتی. من اینجا میخوام سناریو محور برم جلو و چندتا سناریو که به ذهنم میرسه رو براتون پیاده کنم و مثال بزنم :

  • سناریو اول من به عنوان ادمینی هستم که میخوام session های RDP ( که میتونه برای VDI ام باشه ، میتونه برای Remote APP ام باشه که باهاش نرم افزار پابلیش کردم و هم session هایی که برای ادمین های دیگست و با RDP وصل شدن روی سرورم دارن تنظیمات انجام میدن و ماستشون رو میخورن) رو ماینتور کنم و ببینم که داره چه اتفاقی میوفته و چیکار دارن میکنن و در صورت نیاز پیامی بهشون بدم که دارین چیکار میکنی برادر یا خواهر گرامی :

خوب اگر قبول داشته باشید من اول باید ببینم روی سرورم چه session های RDP ای وجود داره !! که بخوام به اونا دست درازی کنم و ببینم چیکار دارن میکنن و غیره (ناسلامتی ادمینم دیگه هر کاری دلم بخواد میتونم بکنم. ای بابا)

مثلا  فرض کنید من رفتم پای سرور و با یوزر admin  روی سرور لاگین کردم. حالا طبق عادت query session رو میزنم ببین روی سرورم چه خبره و چه session هایی روی اون هست. میبینم که یک session به اسم یوزر administrator تحت سرویس rdp-tcp با state ای که active هست و با session id 2 در حال کاره. حالا به هر دلیل میخوام ببینم که چیکار داره میکنه.

برای همین از کامند زیر استفاده میکنم. و میگم که برادر MSTSC برای من عمل shadowing رو انجام بده (به مانند سایه دنبال کن اونو ) حالا کیو ؟ آها Session ID 2 رو.

MSTSC /shadow:2

اما زرشک، و شما نمیتونید بدون تایید شخصی که با یوزر administrator لاگین کرده session اون رو مشاهده کنید. و باید برای اینکه عمل shadowing روی سرور شما بدون تایید و نشون دادن به شخص مورد نظر اتفاق بیوفته یک Policy رو تنظیم کنید که پالیسی مورد نظر در مسیر زیر است:

Computer Configuration>Administrative Templates>Windows Components>Remote Desktop Services>Remote Desktop Session Host>Connection

اسم پالیسی : Set rules for remote control of remote desktop services user sessions میباشد. که باید آن را Enable کنید و روی Full Control without user’s permission بگذارید.(برای تنظیمات دیگر و موارد امنیتی میتونید روی view هم بزارید)

حالا ما میاییم بعد از اعمال این پالیسی کامند امون رو عوض میکنیم و میگیم که آقای MSTSC برای من session ID 2 رو shadow کن و باید سوئیچ noconsentprompt رو بهش پاس بدهیم که بفهمه نباید از شخصی که پشت session هست تاییدیه بگیره و چون با پالیسی بالا این قابلیت فعال شده سوئیچ کامند ما درست کار میکنه و در نهایت session به ما نشان داده میشه و معلوم میشه که یوزر چیکار داره میکنه :

mstsc /shadow:2 /noconsentprompt

بنده خدا کاری هم نمیکنه داره گوگل میکنه :))

حالا میریم سراغ سناریو دوم که من یک HelpDesk ای هستم ومیخوام کار های کلاینت های شبکه رو به صورت ریموت انجام بدم. برامون جالب نیست اولا کار کاربران رو مختل کنیم که مثلا یک کیبورد فارسی براش اضافه کنیم و اینکه بعد از اینکه کارم تموم شد مثل ریموت زدن عادی با mstsc کاربر رو قطع کنم که خودم کارم که تموم شد بگم کاربر عزیز برو لاگین کن و کارتو انجام بده.همینطور نمیخوام هزارتا نرم افزار دیگه تو شبکه نصب کنم که هرکدوم Agent دارن و گرفتاری دیگه که کارهای ریموتمو باهاشون انجام بدم. حالا مثلا میخوام به یک کلاینت توی شبکه وصل بشم.

فرض کنید سرور من سیستم یک کلاینت هست که اسم کاربری که لاگین کرده MiladEshaqi هست ( هرگونه تشابه اسمی اینجا تصادفی میباشد. قابل توجه مهندس میلاد اسحاقی).

حالا چون یوزر مورد نظر به صورت فیزیکی لاگین کرده ویندوز session اون رو به صورت Console میشناسه و معمولا session ای که برای console ایجاد میشه ۱ هست ممکنه نیازی نباشه که هردفعه برید چک کنید ببینید که session ID ایش چنده ولی اگر چندین یوزر روی سیستمی لاگین میکنند باید از Session ID مطمعن بشید که یکی از راه های مطمعن شدن از session ID استفاده از Powershell remoting هست که من اینجا از این روش استفاده میکنم شما ممکنه راه دیگه ای روی انتخاب کنید.

حالا که session ID یوزر آقای اسحاقی رو در آوردیم میتونیم به سیستم اش وصل بشیم بدون اینکه کاربر رو از session خودش بندازیم بیرون و مجبور بشه دوباره رو سیستم فیزیکیش لاگین کنه.

mstsc /v:MiladEshaqi-PC /shadow:3 /prompt /noConsentPrompt /control

آقای اسحاقی داستان ما هم داره طلق معمول داخل technet علم اندوزی میکنه :))

اگر بخوام راجع به این کامند توضیح بدم به این صورت خواهد بود که :

  • سوئیچ v: باید جلوش اسم یا آدرس IP کامپیوتر کاربر قرار بگیره.
  • Shadow هم اشاره کردم باید در مقابلش session ID ای که یوزر کاربر توسط ویندوز بهش اختصاص داده شده رو وارد کنیم که با Powershell remoting پیداش کردیم.
  • Prompt برای زمان هایی هست که ما بخواهیم کادر پرسیدن یوزر و پسورد برای اتصال به RDP برایمان پرسیده شود که بعد بخاطر این سوئیچ است که این prompt برای ما ظاهر میشود تا ما بتوانیم یوزری که روی سیستم دسترسی ادمین دارد را بزنیم تا بتوانیم session را shadow کنیم و اجازه دیدنش رو داشته باشیم.
  • noConsentPrompt هم که بالاتر راجع بهش صحبت کردم، برای این هست که نیاز به تایید یوزر مورد برای وصل شدن نداشته باشیم
  • Control هم در اینجا مهمه زیرا اگر این سوئیچ گذاشته نشود ما فقط میتوانیم مثل سناریو قبلی صفحه یا بهتر بگم session یوزر رو ببینیم ولی نمیتونیم کاری توش انجام بدیم مثل کلیک کردن استفاده از کیبورد و غیره و یجوری view-only خواهد بود.

نکته : میتونید از نرم افزاری به اسم Galinette cendrée هم استفاده کنید(عجب اسمی هم داره) که توسط یه آقای فرانسوی نوشته شده که میتونید سناریو اول رو به خوبی انجام بدید که نیازی به کامند زدن و تایپ کردن نداشته باشید و جمع و جور براتون کار بکنه اما نمیشه سناریو دوم رو انجام داد.

و تمام. در پایان باید بگم که از این متود ها امیدوارم استفاده ناصحیح نکنید و حریم شخصی کسی رو زیر سوال نبرید.

همینطور مثل همیشه این مباحث رو پیاده کنید و تست کنید و نظرتون رو در قسمت کامنت یا در گروه Administrator بگید.

نویسنده: محمد بهزادی

5 نظرات
  1. سالار بختیاری می گوید

    سلام مهندس
    بسیار عالی بود ایشالا همینجوری به نوشتن اینجور مقالات ادامه بدید که بتونیم استفاده کنیم و ادبیات نوشتاری و شوخیاتون هم بسیار جذاب بود 😀
    فکر میکردم فقط من هستم که یوزر milad eshaqi رو دارم خدارو شکر تنها نیستم :((((((
    توی سناریو های من همیشه ایشون نقش قربانی و target رو بازی می کنن البته (به این خاطر که من یک ارادت ویژه به ایشون دارم)

  2. محمد بهزادی می گوید

    سلام مهندس ارادت
    ایشالا که وقتش بشه چون من زیاد دست به قلم بودن رو بلد نیستم یکم وقت میبره راه بیوفتم در خدمت باشیم.
    شما هم این چند وقته سرت شلوغه ایشالا خلوت تر شدی ما هم استفاده کنیم از مطاب
    در واقع اگر در آینده هم وقت شد برامون نکات و مشکلاتی که توی همین مطلب ممکنه ایجاد بشه مثل session hijacking ای که بر اثر باز گذاشتن چنین کانکشن هاست رو بزاری و همینطور اعمال پالیسی Full Control without user’s permission و خطراتش. و اینکه میشه با IPSEC و متود های دیگه امنش کرد یا نه و…

    آره مهندس اسحاقی عزیز رو همیشه باید هدف قرار داد. باشد که هدف خدایان قرار بگیره (البته برای دادن پاداش اعمال خیرش نه چیز دیگه 😈👿👹)

  3. محمد بهزادی می گوید

    یادم افتاد که یکسری موارد رو اشاره کنم راجع به این راهکار :

    اولی اینکه اگر بدون در نظر گرفتن یکسری مسائل این عملکرد را پیاده سازی کنید ممکن است خللی در روند امنیتی سازمان ایجاد کنید که آسیب پذیری در سازمان شما نسبت به پرتکل RDP بیشتر بشه. که میتونید با استفاده از یکسری از متود های موجود بستر رو امن کنید. که ایشالا وقتی بشه و بتونم مطلبی راجع به راه های امن سازی موجود پرتکل RDP در یک سازمان قرار بدم.

    دوم اینکه عمل shadowing توسط process ای به اسم RDPsa انجام میشه روی سیستم هدف و هم میتونید در داخل task manager ببینیدش و هم میتونید در داخل resource monitor ببینید از کدام آدرس ip به سمت سیستم شما یا هدف عمل shadowing انجام شده.

  4. میلاد اسحاقی می گوید

    چه میکنه این RDP !! چه میکنه مهندس بهزادی !
    به به ، این است مایکروسافت ، این است قابلیت های حرفه ای ، دمت گرم مهندس بهزادی ، کلی استفاده کردم
    اما …..
    یعنی این یوزر اسحاقی کی میتونه باشه ؟؟ چرا هدف هست ؟ یعنی چه گناهی کرده ؟؟ چرا اسمش شبیه منه ؟ حالا وقتی ازتون شکایت کردم میفهمین قدرت یوزر میلاد ادمین یعنی چی :)))
    به به آقای بختیاری عزیز مشتاق پیام هاتون هستیم ، حالا دیگه روی یوزر میلاد اسحاقی تست میکنه ؟ ببین این ها تاثیرات بلاد کفره ، ببین نمیشه برای کانفیگ شبکه از کشورهای مجاز استفاده کنی :))
    مهندس بهزادی اگر خدایان یوقت برای موارد دیگه گیر دادن اونوقت دقیقا چیکار کنم ؟ مجبورم از آقای شریفی کمک بگیرم دیگه چاره ای نیست :)))))))

    1. محمد بهزادی می گوید

      ارادت مهندس، امیدوارم که خوب بوده باشه.
      نه اون کاملا تشابه اسمی هست 😂😂.
      ماشالا آقای شریفی جلوی خدایان هم …😂👍💪💪

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.