به آموزش برنامه نویسی خوش آمدید. در این مطلب قصد داریم مفاهیمی که شما برای شروع آموزش برنامه نویسی به آن نیاز دارید را در اختیار شما قرار دهیم و شما را با مهمترین مفاهیمی که در طول یادگیری یک زبان برنامه نویسی با آن برخورد می کنید آشنا کنیم. سعی کردم این مطلب را با زبان ساده و به صورت گام به گام به همراه مثال های متعدد آماده کنم تا دوستان با کمترین میزان آشنایی با دنیای برنامه بتونن آموزش برنامه نویسی رو شروع کنن. برای مطالعه این مطلب شما نیاز به پیش نیاز خاصی ندارید.
برنامه نویسی دنیای زیباییه و وقتی زیبا تر میشه که آموزش برنامه نویسی رو شروع کنی! وقتی واردش بشی دیگه نمیتونی ازش دل بکنی. این جمله رو با تمام وجودم میگم و بهش اعتقاد دارم. با اینکه سال هاست کار برنامه نویسی انجام میدم و مدت زیادی رو درگیر آموزش برنامه نویسی بودم، اما هنوز هم برام تازگی داره. خیلی از افراد رو میبینم که تصمیم دارن کار برنامه نویسی رو شروع کنن، اما نمیدونن از کجا باید این کار و انجام بدن و یک جورایی سردرگم هستن و یا اصلاً نمیدونن که از کجا باید منابع آموزش برنامه نویسی رو انتخاب کنن!
قبل از هر چیز باید پایه های اون کار رو محکم ایجاد کنید. آموزش برنامه نویسی هم از این قاعده مستثنی نیست. واژه ها و مفاهیم زیادی وجود داره که یادگیری اون ها جزو اصول اولیه یادگیری یک زبان برنامه نویسی هست و البته یادگیری این موضوعات چیز پیچیده ای نیست. به همین خاطر تصمیم گرفتم یکسری مطالب در مورد مفاهیم برنامه نویسی و مباحث مرتبط با آموزش برنامه نویسی رو در وب سایت توسینسو قرار بدم.
این مطلب نه در مورد زبان برنامه نویسی خاصی هست و نه قصد داره تکنیک های برنامه نویسی رو به شما آموزش بده، تنها قصدم از نوشتن این مطلب اینه که دوستانی که قصد ورود به دنیای برنامه نویسی دارن و به دنبال منبع مناسبی برای آموزش برنامه نویسی هستن رو با یکسری مفاهیم و موضوعات که پیش نیاز شروع برنامه نویسی هست آشنا کنم.
برای خواندن این مطلب، تنها کافیست که با شیوه روش کردن یک کامپیوتر، کار کردن با موس و کیبورد و البته اجرا کردن یک برنامه کامپیوتری مانند Media Player که برای پخش آهنگ و فیلم از آن استفاده می کنید آشنا باشید، همین و نه هیچ چیز بیشتر! برای شروع بهتر است که با سه مفهوم اصلی یعنی برنامه کامپیوتری، برنامه نویس و زبان برنامه نویسی آشنا شویم.
قبل از شروع به آموزش برنامه نویسی باید با یکسری مفاهیم ا ولیه آشنا بشیم! در قدم اول به سراغ تعریف برنامه کامپیوتری رفتیم. اگر بخواهیم یک تعریف ساده از یک برنامه کامپیوتری داشته باشیم می توانیم اینگونه بگوییم که یک برنامه کامپیوتری مجموعه ای از دستورالعل ها است که با اجرای آن توسط کامپیوتر یک یا چند نیاز کاربربرطرف می شود. برای مثال، برنامه ای مانند Media Player، برنامه ایست که از آن برای پخش موسیقی و فیلم استفاده می شود.
هر کامپیوتری، برای اینکه قابل استفاده باشد نیاز به برنامه دارد. سیستم عامل یک برنامه کامپیوتری است که بعد اجرا محیطی را برای کاربر فراهم می کند که سایر برنامه ها را اجرا کند. امروزه حجم زیادی از برنامه های کامپیوتری وجود دارند که هر یک بر اساس یک یا چند نیاز مشخص ایجاد شده اند.
در ادامه مباحث آموزش برنامه نویسی به بررسی انواع زبان های برنامه نویسی میپردازیم. همانطور که در قسمت قبلی گفتیم، برنامه نویس به کمک زبان برنامه نویسی می تواند دستورالعمل های مرتبط با یک برنامه کامپیوتری را بنویسد.
بیشتر بخوانید: معرفی انواع زبان های برنامه نویسی و کاربردهایشان
اما یک برنامه نویس زمانی که قصد ورود به دنیای برنامه نویسی را دارد با گزینه های زیادی روبرو است، زبان های برنامه نویسی مختلف که هر یک در یک زمینه کارآیی دارند و برنامه نویس می بایست بر اساس علایق خود، زبان برنامه نویسی مناسب را انتخاب کند. همانطور که گفتیم، در این سری مطالب قصد نداریم در مورد یک زبان خاص صحبت کنیم، اما به صورت کلی می توان زبان های برنامه نویسی را به انواع زیر تقسیم کرد:
قبلا در توسینسو بصورت مفصل در خصوص الگوریتم های رمزنگاری اطلاعات صحبت کرده ایم. بد نیست بدانید که حملاتی نیز بصورت ویژه برای شکستن کلیدهای رمزنگاری اطلاعات طراحی شده اند که حملات یا مدل های حمله Cryptanalysis معروف هستند.
البته به عنوان یک کارشناس امنیت اطلاعات یا امنیت سایبری ، الزامی نیست که شما دانش عمیقی در حوزه رمزنگاری و الگوریتم های آن داشته باشید و خودتان را درگیر ریاضیات و محاسبات آن کنید. بلکه همین که نوع حملاتی که به این الگوریتم ها ممکن است انجام شود را بشناسید و درک کنید کفایت می کند.
شناخت این نوع حملات برای آزمون های بین المللی Security Plus ، CCSP و CISSP الزامی است . در این مقاله هدف ما معرفی کردن انواع حملات آنالیز رمزنگاری یا Cryptanalysis است.
به زبان ساده تر شما قرار است متوجه شوید که یک کارشناس تجزیه و تحلیل گر الگوریتم های رمزنگاری ( ترجمه واژه Cryptanalyst به همین برکت !! ) چگونه الگوریتم های رمزنگاری را تحلیل و آسیب پذیری های آنها را کشف می کنند . در واقع حملات کرک پسورد و به دست آوردن اطلاعات محرمانه از چنین روش هایی انجام می شود.
باز هم ساده تر بگوییم که از در زمان جنگ جهانی دوم یکی از همین آنالیزور ها بود که توانست کلید رمزگشایی کدهای جنگ را شناسایی کند و ماشین های کدساز را عملا بی مصرف کند.
شما صرفا قرار است روشها ، مفاهیم و تجزیه و تحلیل کلی که روی این الگوریتم ها انجام شده است را کمی درک کنید و فقط بدانید که نباید از این الگوریتم های آسیب پذیر استفاده کنید.
در حال حاضر اکثر این آسیب پذیری ها با استفاده کردن از روش های جدید رمزنگاری عملا غیر قابل استفاده هستند اما فراموش نکنید که انسان جایزالخطاست ( به روح طرف قسم !! ) و ممکن است به سرش بزند از الگوریتم های قدیمی هم استفاده کند ( که تا دلتون بخاد ! علی برکت الله ) . پس تا انتهای مقاله با ما باشید.
خوب ما حالا روشهای حمله به الگوریتم های رمزنگاری را به چهار نوع و دو کلاس Active و Passive طبقه بندی می کنیم و در ابتدا به بررسی حملات Passive می پردازیم ( به زبان ساده وقتی در حملات هکری از واژه Passive استفاده می شود یعنی مهاجم ارتباط مستقیم با سیستم های هدف نمی گیرد و بیشتر درگیر شنود ترافیک می شود و اگر Active باشد یعنی به یکی از سیستم های مبدا یا مقصد رمزنگاری حمله می کند )
در این نوع حمله ، مهاجم فقط Ciphertext را در اختیار دارد. به زبان ساده تر ، مهاجم تنها آن چیزی را می تواند ببیند که همگان می توانند مشاهده کنند و متن رمزنگاری شده ای که به نظر غیر قابل رمزگشایی می رسد را صرفا شنود کرده و در اختیار دارد.
مهاجم با تجریه و تحلیل کردن کدهای رمزنگاری شده سعی در پیدا کردن مفهوم Ciphertext و رمزگشایی آن می کند. همچنین مهاجم هیچ اطلاعاتی در خصوص Plaintext ای که تبدیل به این Ciphertext شده است نیز ندارد. درصد موفقیت این حمله بسیار بسیار کم است و در عین حال الگوریتم های به روز و جدید اصلا چنین آسیب پذیری هایی ندارند.برای در بهتر و یادگیری بیشتر و حرفه ایی به دوره آموزش هک و تست نفوذ مراجعه کنید.
در این نوع حمله ، مهاجم Plaintext ای که از طریق آن Ciphertext تولید شده است را در اختیار دارد. مهاجمین در چنین حالتی امکان انتخاب Plaintext جدیدی برای رمزنگاری ندارند تا کلید را پیدا کنند اما به دلیل داشتن یک بخش از قضیه و امکان مقایسه کردن نتایج رمزگشایی ، احتمال موفقیت این حمله بسیار بیشتر از حملات COA است.
اگر بخواهیم نمونه ای از این حمله را عنوان کنیم باید بگوییم الگوریتم PKZIP و Ciphertext هایی که با آن ساخته می شد با استفاده از یک XOR امکان رمزگشایی و شکسته شدن کلید داشت.
این همان روشی است که در جنگ جهانی دوم شخصی به نام Alan Turing برای رمزگشایی پیام های آلمان نازی که با دستگاه Enigma ارسال می شد استفاده کرد. از نظر ریاضیات و علوم کامپیوتر و منطق ، آلن تورینگ ( Alan Turing *) یکی از نخبگان قرن بیستم به حساب می آمد.
در این نوع حمله مهاجم می تواند Plaintext ورودی الگوریتم مورد استفاده در رمزنگاری را تغیین کند و خروجی Ciphertext را تولید کند. با توجه به اینکه برای انجام چنین حمله ای مهاجم باید Plaintext را به عنوان ورودی الگوریتم رمزنگاری وارد کند بنابراین یک حمله Active یا فعال در نظر گرفته می شود.
با توجه به اینکه مهاجم می تواند Plaintext های مختلف را برای تبدیل به Ciphertext و مقایسه کردن آنها آزمایش کند ، احتمال موفقیت این حمله به نسبت سایر حملات به نسبت بالاتر است . در نهایت با آزمون و خطاهای بسیار امکان به دست آوردن روش کار الگوریتم و البته خارج کردن و به دست آوردن کلید رمزگشایی هم بسیار است .
در این نوع حمله برای اینکه درصد موفقیت بالاتر برود ، مهاجم یک بانک اطلاعاتی از انواع Plaintext های معروف را تبدیل به Ciphertext می کند و جفت های Plaintext و Ciphertext وردی و خروجی را با هم مقایسه می کند تا در نهایت به راز کار پی ببرد.
در این نوع حمله مهاجم هم می تواند رمزنگاری کند و هم رمزگشایی !! این یعنی اینکه مهاجم می تواند Plaintext را رمزنگاری کند و متعاقبا Ciphertext مرتبط با آن را ببینید و فرآیند معکوس را نیز انجام دهد.
به این موضوع دقت کنید که یک مهاجم قرار نیست الزما Plaintext را پیدا کند ، بلکه هدفش از رمزنگاری و رمزگشایی بصورت مرتب و منظم این است که بتواند از درون این فرآیند کلید رمزگشایی را پیدا کند و به کلی به الگوریتم نفوذ کند. این مدل نیز درجه محبوبیت و موفقیت به نسبت بالایی دارد.
بدون تعارف اکثر الگوریتم هایی که امروزه طراحی شده و مورد استفاده قرار می گیرند ، آسیب پذیری هایی که اعلام کردیم را دیگر ندارند و به ندرت با چنین روشهایی می توان کلیدهای الگوریتم ها را پیدا کرد. اما به عنوان یک کارشناس امنیت باید با تاریخچه و روش کارکرد حملات آشنایی داشته باشید ، هر چند که این حملات قدیمی شده باشند.
بد نیست بدانید که برخی از حملاتی که امروزه به نظر خیلی ها مسخره و منسوخ شده به نظر می رسد با توجه به محدوده استفاده گسترده ای که از دیرباز داشته اند ، هنوز هم قابل استفاده و هک شدن هستند.
برای مثال سالهاست که پروتکل WEP در شبکه های وایرلس منسوخ شده و آسیب پذیر است و عملا در نسخه های جدید تجهیزات بیسیم استفاده نمی شود . اما شما شاهد استفاده گسترده از این الگوریتم در تجهیزات قدیمی هستید که هنوز به روز رسانی نشده اند.
ریسک افزار چیست؟ یکی از جدیدترین مفاهیم در حوزه بدافزاری دنیای امنیت اطلاعات ، کلمه ای به نام Riskware یا ریسک افزار است. طبیعتا Risk و Software تشکیل دهنده این کلمه هستند اما جالب است بدانید که با اینکه از لحاظ امنیتی این نوع نرم افزارها در دسته بندی بدافزاری یا Malware ای قرار می گیرند اما واقعا بدافزار نیستند ! بله دست متوجه شدید ریسک افزارها بدافزار نیستند ، یعنی نویسنده یا تولید کننده آنها با هدف تخریب و انجام عملیات های مخرب آنها را تولید نکرده است.
اما نکته اینجاست که اینگونه نرم افزارها به شکلی امنیت کامپیوتر شما را تهدید می کنند و به همین دلیل ریسک به وجود آمدن عملیات مخرب را بالا می برند و به همین دلیل به آنها Riskware گفته می شود.اما واقعا چطور ممکن است یک نرم افزار باعث بالا رفتن ریسک امنیتی در یک کامپیوتر بشود؟ خوب در واقع Riskware ها می توانند با انجام دادن یک سری تغییرات در سیستم عامل قربانی کاری کنند که سایر بدافزارهای مخرب بتوانند عملیات مخربشان را انجام بدهد و اینکار به واسطه نصب شدن یک Riskware انجام می شود.
بگذارید ساده تر بگوییم ، زمانیکه شما یک نرم افزار بر روی کامپیوتر خود نصب می کنید که این امکان را فراهم می کند که یک ریسک به وجود بیاید به آن Riskware می گوییم ، قرار نیست که این Riskware خودش تخریب یا عملیات مخرب انجام بدهد.برای مثال نرم افزاری ممکن است قوانین نصب و اجرای یک برنامه دیگر را نقض کند ، ممکن است اجازه اجرای یک برنامه دیگر در کامپیوتر را ندهد ، ممکن است جلوی به روز رسانی مختلف سیستم را بگیرد ، ممکن است Rule های دارای مشکل امنیتی در فایروال شما ایجاد کند ، ممکن است به عنوان Backdoor در سیستم قربانی مورد استفاده قرار بگیرد .
ساده ترین مثالی که می توانیم از Riskware ها بزنیم ابزارهای دانلودی مثل Torrent و P2P هایی مثل EMule هستند که قسمتی از هارد دیسک شما را به اشتراک عمومی می گذارند. الزامی ندارد که به تنهایی Riskware خطرناک باشد اما این امکان را فراهم می کند که انتشار سایر بدافزارها راحت تر شود. بصورت کلی یک Riskware ابزاری است که باعث حذف شدن ، مسدود کردن ، تغییر دادن و کپی اطلاعات و مختل کردن کارایی کامپیوترها و شبکه می شود. یک Riskware می تواند در قالب برنامه های IRC ، P2P ، SMTP ، انواع Downloader اینترنتی ، انواع ابزارهای مانیتورینگ ، ابزارهای شبکه ، ابزارهای مدیریت از راه دور شبکه ، سرویس های FTP ، سرویس های پروکسی ، سرویس Telnet و سرور وب و همچنین Toolbar های اینترنتی ظاهر شود.
ریسکافزار (Riskware) به نرمافزارهایی گفته میشود که ذاتاً مخرب نیستند اما میتوانند برای اهداف مخرب یا نفوذ امنیتی مورد سوءاستفاده قرار بگیرند. این برنامهها شامل ابزارهای مدیریت از راه دور (RATs)، نرمافزارهای کرک، دانلودرها و برخی برنامههای مانیتورینگ هستند که در آموزش هک میتوان از آنها برای دور زدن امنیت سیستمها استفاده کرد. در بسیاری از موارد، آنتیویروسها این نرمافزارها را بهعنوان تهدید بالقوه شناسایی میکنند، زیرا ممکن است توسط هکرها برای کنترل سیستم، سرقت اطلاعات یا نصب بدافزارها استفاده شوند. برای جلوگیری از خطرات Riskware، بهتر است فقط از نرمافزارهای معتبر و دارای گواهی امنیتی استفاده شود. همچنین، بررسی دقیق مجوزهای برنامهها و استفاده از سیستمهای نظارت امنیتی میتواند خطرات ناشی از آن را کاهش دهد.
شما میتوانید برای آشنایی بیشتر بامفاهیم امنیتی می توان به دوره CHFI یکی از محبوب ترین و جامع ترین دوره های آموزشی حوزه Forensics (فارنزیکس) و امنیت در دنیا مراجعه کنید. این دوره جزء دوره های عمومی فارنزیکس و جرم یابی سایبری محسوب می شود چرا که از تمامی حوزه های فارنزیکس در خصوص انواع سیستم عامل ها و نرم افزار ها و سرویس ها صحبت می نماید.به صورت خلاصه در این دوره افراد با مباحثی شامل :
1- File system Forensics
2-Windows and Linux Forensics
3- Web Forensics
4-Network Forensics
5- Email Forensics
6-Database Forensics
7-Cloud Forensics
به صورت کامل از مقدماتی ترین مفاهیم تا حرفه ای ترین مفاهیم آشنا خواهند شد.در این دوره دانشجویان هم به صورت دستی و تحلیلی و هم با استفاده از ابزار های مختلف انواع حملات سایبری و Incident ها و تهدیدات سایبری را شناسایی و تحلیل می نمایند.و همچنین پیشنهاد می کنم مقاله چگونه هکر شویم را مطالعه کنید.
وقتی صحبت از Cryptomalware می شود ، ابتدا دو کلمه را در کنار هم بخوانید Cryptography Malware که به ترتیب کلمات بدافزار رمزنگاری ترجمه می شود و به خوبی مفهوم را می رساند. قبلا در توسینسو در خصوص مفهومی به نام Cryptovirology صحبت کرده ایم که در واقع بدافزارهایی که در حوزه رمزنگاری کار می کنند زیر مجموعه این نوع علم بدافزاری هستند. بصورت کلی هر بدافزاری که با استفاده از رمزنگاری اطلاعات اقدام به سوء استفاده از افراد بکند به عنوان Cryptomalware یا بدافزار رمزنگاری ( ترجمه بهتر پیدا کردید Comment بزارید ) شناخته می شود.
Cryptomalware نوعی باجافزار (Ransomware) است که فایلهای قربانی را با استفاده از الگوریتمهای رمزنگاری قفل کرده و برای باز کردن آنها درخواست باج میکند. این بدافزار معمولاً از طریق ایمیلهای مخرب، لینکهای آلوده یا دانلودهای ناامن وارد سیستم میشود. در آموزش هک، روشهای شناسایی و مقابله با باجافزار، مانند استفاده از آنتیویروس، بهروزرسانی مداوم سیستم و تهیه نسخه پشتیبان از اطلاعات بررسی میشود. برای جلوگیری از این حملات، کاربران باید از باز کردن فایلهای مشکوک خودداری کرده و امنیت سایبری خود را تقویت کنند.
معروف ترین نوع بدافزار رمزنگاری که در دنیا وجود دارد به عنوان باج افزار یا Ransomware شناخته می شود. مکانیزم کاری این نوع بدافزارها به نسبت ساده است ! آنها به سیستم قربانی نفوذ می کنند یا منتقل می شوند ، سپس اطلاعات یا فایل ها با پسوند های مشخصی مثل پسوند مستندات اداری ، عکس ها ، ویدیوها ، فایلهای بکاپ و ... را شناسایی می کنند و آنها را رمزنگاری می کنند و سپس پیامی روی تصویر قربانی درج می کنند که در صورت عدم پرداخت باج به این حساب های کاربری کلیه اطلاعات شما از بین خواهد رفت و بسیاری از کاربران قربانی مجبور به پرداخت این باج هستند تا کلید رمزگشایی را مهاجم در اختیار قربانی قرار بدهد.
اینجا یک مرکز پزشکی و درمانگاهی مهم در کشور است که به باج افزار آلوده شده است . فرض کنید که مدیر یک شبکه هستید و صبح اول وقت وقتی پای سیستم می نشینید با چنین صحنه ای مواجه شوید که کلیه فایل های شما شبیه چرخدنده و اجرایی شده اند و با کلیک کردن روی آنها پیامی مشابه تصویر بالا دریافت می کنید . این یعنی شما به باج افزار آلوده شده اید . محتوای پیام کاملا مشخص است .در پیامی که باج گیرنده در سیستم شما نمایش می دهد قطعا یک آدرس ایمیل موقتی وجود دارد که برای شما ایجاد شده است و البته یک شناسه منحصر به فرد برای کامپیوتر و یا شبکه شما که توسط آن کلید رمزگشایی توسط مهاجم طراحی شده است نیز در اختیار شما قرار می گیرد.
اگر می خواهید باج بدهید باید این ID را برای آن ایمیل ارسال کنید ، یک نمونه فایل برای رمزگشایی برای مهاجم ارسال کنید و فایل اصلی را دریافت کنید تا متوجه شوید که با هویت درستی برای باج دادن مواجه هستید . این روند کلی باجگیری اینترنتی در دنیاست . جالب است بدانید که در دنیا بیشتر از صدها میلیون دلار در سال از این طریق باجگیری می شود و با توجه به استفاده از مکانیزم های پرداخت بصورت رمزارز ( Cryptocurrency ) امکان پیگیری آنها تا حدی غیر ممکن است .
به تصویر بالا دقت کنید ، این تصویر را شاید بتوانیم تاریخچه باج افزاری در ایران بدانیم . این تجربه من در یکی از سازمان های حیاتی در ایران در سال 1387 بود که آلوده به نوعی باج افزار ایرانی شده بودند که بصورت هدفمند این سازمان را مورد هدف قرار داده بودند و قصد اخاذی و باجگیری داشتند که خوشبختانه ما موفق شدیم این مشکل را حل کنیم . تصویر بالا در حال حاضر فاقد هرگونه ارزش امنیتی بوده و با توجه به گذشت 12 سال از این موضوع دیگر انتشار آن نیز اهمیتی ندارد و برای اولین بار در ایران این تصویر توسط بنده در اینترنت منتشر می شود .در دوره آموزشی سکیوریتی پلاس (+Security) قسمت 4 : بدافزارها Malwaresبصورت کامل توضیح داده شده است لازم به ذکر است پیش نیاز دوره سکیوریتی پلاس دوره آموزشی نتورک پلاس است.
یکی از معروف ترین انواع بدافزار یا Malware به نام کرم یا Worm شناخته می شود. هر چند که اکثرا در مورد Worm ها بحثی شبیه به ویروس داریم اما اساسا این دو نوع بدافزار ، دو چیز کاملا متفاوت با ماهیتی متفاوت هستند. تنها وجه اشتراک بین Worm ها و Virus ها در بحث بدافزاری ، تلاش برای تکثیر شدن آنها در سیستم های مختلف است . اما تفاوت اصلی با ویروس در اینجاست که ویروس های کامپیوتری برای اینکه تکثیر شوند نیاز به انجام یک عملیات توسط کاربر دارند ، برای مثال اگر یک کاربر بر روی فایلی کلیک نکند یا DVD یا Flash ای را به سیستم خود نزند ممکن است به ویروس آلوده نشود اما در Worm ها به این شکل نیست و Worm در اصطلاح خودتکثیر یا Self-Replica است و نیازی به انجام کاری توسط کاربر برای تکثیر شدن ندارد .
Worm یا کرم یک نوع بدافزار است که به صورت مستقل میتواند خود را در شبکهها و سیستمها تکثیر کرده و پخش کند، بدون نیاز به فایلهای آلوده یا تعامل کاربر. برخلاف ویروسها که برای تکثیر نیاز به فایلهای دیگر دارند، کرمها از آسیبپذیریهای سیستمها و شبکهها برای گسترش خود استفاده میکنند. کرمها معمولاً باعث بیشبار شدن شبکه و کندی سیستمها میشوند. از این رو، ویروسها بهطور معمول به فایلهای دیگر متصل میشوند، اما کرمها مستقل عمل میکنند. در آموزش هک، شناخت تفاوت بین ویروس و کرم به درک بهتر حملات و روشهای مقابله با آنها کمک میکند.
برخلاف ویروس ها که بصورت خودکار روی یک سیستم تا می توانند تکثیر می شوند ( روی یک سیستم یک ویروس مثلا 100 بار تکثیر میشه ) ، Worm ها فقط یک نسخه از خودشان را بر روی یک سیستم تکثیر می کنند و به سراغ آلوده کردن سیستم بعدی می روند. به این حالت Worm در اصطلاح امنیت Standalone بودن بدافزار می گویند. ویروس ها معمولا از بیرون سیستم کنترل نمی شوند و یک سری وظیفه از قبل تعریف شده دارند اما Worm ها این قابلیت را دارند که توسط مهاجم از راه دور کنترل شوند یا در اصطلاح Remote Controlled شوند.
نکته دیگر در خصوص تفاوت ویروس و Worm در نحوه تکثیر است . ویروس ها توسط رسانه ها یا Media هایی مثل Flash و DVD و ... منتقل می شوند یا پیوست ایمیل اما Worm ها توسط آسیب پذیری های موجود در نرم افزارها و سیستم عامل ها تکثیر می شوند و در شبکه تکثیر می شوند نه سیستم . Worm دارای ساختار پیچیده تری به نسب Virus است با توجه به اینکه یک آسیب پذیری را باید در سیستم عامل در شبکه شناسایی و به آن عملا نفوذ کند و به همین دلیل ترافیک و پهنای باند شبکه را در زمان آلودگی افزایش می دهد. Worm ها می توانند در نقش بدافزارهای دیگری مثل جاسوس افزارها ( Spyware ) ، بات ها و حتی تروجان و ... هم فعالیت کنند.
در دوره آموزشی سکیوریتی پلاس (+Security) قسمت 4 : بدافزارها Malwaresبصورت کامل این مبحث توضیح داده شده است لازم به ذکر است پیش نیاز دوره سکیوریتی پلاس دوره آموزشی نتورک پلاس است.