PDA

View Full Version : تهیه Log جهت تشخیص فایلهای Copy شده از روی سیستم



حمیدرضاصادقیان
سه شنبه 01 آذر 1390, 14:27 عصر
سلام.
جهت تشخیص اینکه چه فایلی از روی سیستم کپی شده و مسیر اون کجا بوده و به کجا کپی شده آیا Message های خاصی باید کنترل بشه؟
چطور میشه Log اونو تهیه کرد؟

r00tkit
سه شنبه 01 آذر 1390, 14:56 عصر
می تونی یه MIniFilter ساده بنویسی و بعد IRP_MJ_Write و IRP_MJ_Read رو مانیتور کنی با این کار می تونی بدونی چه فایلی کپی شد ، مسیر دقیق ، اسم پراسسی که داره کپی می کنه و.... رو بدست بیاری .

البته بازم در کل می شه جدا از فایل سیستم ،فایلی رو کپی کرد ( مستقیم با SCSI صحبت کنی )

من این کار رو کردم

حمیدرضاصادقیان
سه شنبه 01 آذر 1390, 15:56 عصر
ممنون ولی با روشهای دیگه نمیشه.
ظاهرا برای اینکار نیاز به استفاده از DDK داره که به راحتی نمیشه در دلفی ازش استفاده کرد.
و در دلفی باید از DDDK استفاده کرد و نمیدونم چقدر قابلیت استفاده در یک پروژه Enterprise رو داره؟

r00tkit
سه شنبه 01 آذر 1390, 16:28 عصر
بلاخره باید درایور بنویسی تا مثل procmon بتونی مانیتور کنی ، UIاش رو هم با دلفی می تونی بنویسی
توی یه پروژه تجاری بهتره از درایور استفاده بشه ، User Mode اصلا قابل اعتماد نیست .

MiniFilter
هم کار یه روزه

Felony
سه شنبه 01 آذر 1390, 16:57 عصر
حمید جان کامپوننتی که ضمیمه کردم رو یه نگاه بنداز ، همونی هست که اون روز با هم صحبتش رو کردیم .

vcldeveloper
سه شنبه 01 آذر 1390, 19:11 عصر
برای کل سیستم بهترین گزینه همون استفاده از یک درایور هست. اگر مانیتور کردن محدود به یک یا چند مسیر خاص هست، و اصرار هم دارید که User Mode باشه، گزینه مناسب استفاده از ReadDirectoryChangesW (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465%28v=vs.85%29.aspx)هست. برای درایوهای NTFS هم امکان استفاده از Change Journals وجود داره، ولی من خودم به شخصه ازش استفاده نکردم. برای ReadDirectoryChangesW باید نمونه کد دلفی راحت پیدا بشه، اگر نشد، و بهش نیاز داشتید، بگید تا بذارم.

حمیدرضاصادقیان
چهارشنبه 02 آذر 1390, 07:29 صبح
ممنون از همگی.

حمید جان کامپوننتی که ضمیمه کردم رو یه نگاه بنداز

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


برای کل سیستم بهترین گزینه همون استفاده از یک درایور هست

علی جان ممنون. آیامیشه از MadCollection برای توسعه این درایور استفاده کرد.؟

r00tkit
چهارشنبه 02 آذر 1390, 08:39 صبح
ممنون از همگی.

علی جان ممنون. آیامیشه از MadCollection برای توسعه این درایور استفاده کرد.؟

من بگم ؟ :)

نه فکر نکنم بشه ، چون این collection فقط یه پوشش هستش ، Minifilter ها ساختار و معماری خاص خودشون رو دارن ، ولی شاید بشه با madCodeHook یه hook گلوبال زد و تابع های مربوط رو هوک کرد ولی این کار درست نیست .
شما MadCollection رو دارید ؟ یادم می یاد مدت ها پیش برای تزریق dll از کرنل به یوزر می خواستم ازش استفاده کنم و خیلی گرون بود !

حمیدرضاصادقیان
چهارشنبه 02 آذر 1390, 10:22 صبح
با هوک کردن توابع Copyfile,... میشه به این مورد دسترسی داشت؟

سعید صابری
چهارشنبه 02 آذر 1390, 10:31 صبح
با هوک کردن توابع Copyfile,... میشه به این مورد دسترسی داشت؟

فکر کنم .چون بعضی از نرم افزار یک روتین خاص برای کپی کردن فایل دارن و از توابع سیستم استفاده نمی کنند.

حمیدرضاصادقیان
چهارشنبه 02 آذر 1390, 11:30 صبح
فکر کنم اگر با استفاده از توابع SetWindowsHookEX وUnHookWindowsHookEx این توابع Api مربوط به تغییرات فایل رو Hook کنم بتونم به مقصود برسم.

r00tkit
چهارشنبه 02 آذر 1390, 11:35 صبح
نه فقط با هوک copyfile نمی شه ( راه های زیادی برای کپی وجود داره )

SetWindowsHookEX من ارتباط
رو با هوک توابع درک نمی کنم ؟ مثلا می خوایید با این کار dll اینجکت کنید تا ان هوک کنه؟ این تابع فقط برنامه های UI رو بهشون dll تزریق می کنه

حمیدرضاصادقیان
چهارشنبه 02 آذر 1390, 12:50 عصر
نه فقط با هوک copyfile نمی شه ( راه های زیادی برای کپی وجود داره )
در این مورد کاربرانی که با سیستم کار میکنند افراد خیلی عادی هستن و اینقدر سوادشون قد نمیده. نهایتا روی فایل راست کلیک کرده و در مقصد کپی میکنند. در واقع میخوایم یک جوری روی سیستمهای دیگه دسترسی کپی به cooldisk رو ببندیم یا اگرم باز بود بفهمیم چه فایلهایی رو کپی کرده.



SetWindowsHookEX من ارتباط
رو با هوک توابع درک نمی کنم ؟
در این مورد اونجوری که من خوندم برای خوک توابع ابتدا یک Hook رو نصب کرده و تابع مورد نظر رو Hokok میکنیم و دوباره Hook نصب شده رو غیر فعال میکنیم.

حمیدرضاصادقیان
چهارشنبه 02 آذر 1390, 12:52 عصر
یک Interface در shlobj به نام IcopyHook هست که تقریبا کاری که من نیاز دارم رو میشه باهاش انجام داد.
فقط الان یک سوال میمونه اگر کاربر مثلا در CMD با استفاده از دستور Copy یک فایل رو کپی کنه بازم اینکار جواب خواهد داد یاخیر.

r00tkit
چهارشنبه 02 آذر 1390, 12:55 عصر
معلوم نیست که در حالت های مختلف چی جوری فایل کپی می شه باید چک بشه بهتره با APImonitor (http://www.rohitab.com/apimonitor) بررسی بشه

Mask
چهارشنبه 02 آذر 1390, 14:18 عصر
با عرض سلام به دوستان و اساتید عزیز
خدمتتون عرض شود که اینجا 2 تا موضوع هست:
اول اینکه شما فرمودید:

دسترسی کپی به cooldisk رو ببندیم
اگه فقط منظور اینه ، نیاز به اون دنگو فنگا نیست ، راه خیلی ساده ای هست.
اما اگه بخواهید این فرایند رو در همه جای سیستم مانیتور کنید این یه قضیست و اگه بخواهید جلوگیری کنید یه قضیه دیگه.
اگه بتونید کاملتر توضیح بدید شاید بتونم که کمکی بکنم.قبلا یه همچین چیزی طراحی کردم. تو سطح یوزر مد خوب جواب میده.
موفق باشیم.

حمیدرضاصادقیان
پنج شنبه 03 آذر 1390, 13:21 عصر
عرضم به خدمتتون که بحث قفل کردن رو پیاده کردم و برنامه به دو صورت سرور و کلاینت هست که سرور روی کامپیوتر اصلی نصب میشه و کلاینت روی مابقی سیستمها و به صورت سرویس هست.
هر Cooldisk که وصل میشه آمارش روی سرور مشخص میشه و میشه همون شماره سریال Cooldisk رو از روی سرور قفل کرد و وقتی کاربر دوباره متصلش میکنه سیستم قفل میکنه.
تا اینجا مشکل نیست.
تنها مشکل الان شناسایی مسیر مبدا و مقصد فایل وقتی فایل روی فلش از روی کلاینتها کپی میشه.
که اونم با IcopyHook تقریبا حل شده.

حمیدرضاصادقیان
یک شنبه 06 آذر 1390, 10:04 صبح
الان تنها مشکلی که داره اینه که IcopyHook فقط دایرکتوری رو مشخص میکنه و اگر فایلی جابجا بشه نمیشه فهمید. برای این راهکاری هست؟

حمیدرضاصادقیان
یک شنبه 06 آذر 1390, 11:51 صبح
آیا از طریق استفاده از IpersistFile در همون کلاس اصلی به همراه ICOpyHook میتونم فایل رو هم پیاده سازی کنم؟

حمیدرضاصادقیان
یک شنبه 06 آذر 1390, 15:13 عصر
بعد ظاهرا باید برنامه های سمت کلاینت هم به صورت Comپیاده سازی کنم چون در غیر اینصورت این دستورات فراخوانی نمیشه با اینکه حتی در رجیستری هم ثبت شده.
برای این مورد هم کاری نمیشه کرد؟