আমি বলতে পারি যে হ্যাঁ, এটি সম্ভবপর। তবে এটি একটি ভাল কাজ হতে চলেছে, এবং আমি সন্দেহ করি যে ইন্টারনেটের একটি বিনামূল্যে প্রশ্নোত্তর সাইটে যে কেউ আপনার জন্য এই সমস্ত ফ্রি সাসাদমিন কাজ স্বেচ্ছাসেবক করতে চলেছে ... যে বলেছিল, আমি কমপক্ষে আপনাকে শুরু করতে পারি ।
এটি আক্রমণ করার প্রাথমিক দুটি উপায় রয়েছে। একটি, যেমন আপনি ইতিমধ্যে চিহ্নিত করেছেন, এটি সার্টিটিলের সাথে রয়েছে। আপনি সম্ভবত পাওয়ারুশেল ব্যবহার করবেন certutil.exe এর চারপাশে একটি "র্যাপার" লেখার জন্য যা এটির ইনপুটগুলিকে ফিড করে এবং এর ফলাফলগুলি বিশ্লেষণ করে।
দ্বিতীয়ত, শংসাপত্র পরিষেবাদি COM উপাদানগুলি CERTENROLLib, CERTCLIENTLib, ইত্যাদি রয়েছে These এগুলি আপনাকে স্ক্রিপ্ট করার ভয়াবহ প্রচেষ্টা চালিয়ে যেতে ইচ্ছুক না হলে ম্যানুয়াল হিসাবে যে কোনও এবং সমস্ত কাজ স্ক্রিপ্ট করার অনুমতি দেয়।
দেখুন, এই লোকটি সিএসআর তৈরি করতে, শংসাপত্র কর্তৃপক্ষের সিএসআর জমা দিতে, এবং প্রতিক্রিয়া পেতে এবং শংসাপত্রটি ইনস্টল করতে সি # এবং পূর্বোক্ত সিওএম ইন্টারফেস ব্যবহার করছে। সি # সহজেই পাওয়ারশেলের পোর্ট করা হয়।
দ্বিতীয়ত, সার্টিটিল ... আপনি সের্টিটিলের সাহায্যে বেশিরভাগ কাজ করতে পারেন, তবে এটি বস্তু-কেন্দ্রিক নয়, এটি সমস্ত পাঠ্যকে পুরানো-বিশ্ব ইউনিক্স স্টাফের মতো পার্সিং করে। উদাহরণস্বরূপ, আমি আপনার সাথে একটি সংক্ষিপ্ত পাওয়ারশেল স্ক্রিপ্ট শেয়ার করব যা আমি লিখেছিলাম যে শংসাপত্র কর্তৃপক্ষের মুলতুবি শংসাপত্রের অনুরোধের জন্য স্ক্যান করতে সার্টিটিল ব্যবহার করে এবং যদি কোনও মুলতুবি সিএসআর অনুমোদনের প্রয়োজন হয় তবে প্রশাসকদের সতর্ক করে দেয়।
[String]$CAName = 'SERVER01\MY-ISSUING-CA'
[String]$MailFrom = 'noreply@mydomain.com'
[String[]]$MailTo = 'CA-Team@domain.com'
[String]$SMTPServer = 'smtp.domain.com'
$Output = certutil -view -out "Request ID, Request Submission Date, Request Common Name, Requester Name, Request Email Address, Request Distinguished Name" -Restrict "Request Disposition=9"
If ($Output[-1] -NotLike '*successfully.')
{
Write-Error $Output
$Body = "<p>An error occurred on $CAName while checking for pending certificate requests.</p><pre>"
Foreach ($Line In $Output)
{
$Body += "$Line" + [Environment]::NewLine
}
$Body += "</pre>"
Send-MailMessage -SmtpServer $SMTPServer -From $MailFrom -To $MailTo -Subject "$CAName Encountered An Error!" -Body $Body -BodyAsHtml
Return
}
[Int]$NumberOfRequests = 0
If ([Int]::TryParse($Output[-2].Trim().Split(' ')[0], [ref] $NumberOfRequests))
{
If ($NumberOfRequests -GT 0)
{
$Body = "<p>There are pending certificate requests on $CAName.</p><pre>"
Foreach ($Line In $Output)
{
$Body += "$Line" + [Environment]::NewLine
}
$Body += "</pre>"
Send-MailMessage -SmtpServer $SMTPServer -From $MailFrom -To $MailTo -Subject "$CAName Has Pending Requests" -Body $Body -BodyAsHtml
}
Else
{
Write-Host "No pending certificate requests found."
}
}
Else
{
$Body = "<p>An error occurred on $CAName while checking for pending certificate requests.</p><pre>"
Foreach ($Line In $Output)
{
$Body += "$Line" + [Environment]::NewLine
}
$Body += "</pre>"
Send-MailMessage -SmtpServer $SMTPServer -From $MailFrom -To $MailTo -Subject "$CAName Encountered An Error!" -Body $Body -BodyAsHtml
}