Duqu — компьютерный червь, обнаруженный 1 сентября 2011 года. Некоторые исследователи полагают, что он связан с червём Stuxnet[1]. Червь получил имя Duqu из-за префикса «~DQ», который использовался во всех именах файлов, создаваемых им[2].
Лаборатория криптографии и системной безопасности Будапештского университета технологии и экономики в Венгрии выпустила 60-страничный доклад, в котором анализировался данный червь[3]. В ходе проведённого расследования удалось выяснить, что распространение данной вредоносной программы происходило через электронную почту. Заражение системы происходит посредством свежей уязвимости в ядре Windows, допускающей выполнение вредоносного кода и определяемой как CVE-2011-3402[4]. После заражения системы и установления связи с сервером происходила загрузка и установка дополнительного модуля, предназначенного для сбора сведений о системе, поиска файлов, снятия скриншотов, перехвата паролей и ряда других функций[5].
Symantec считает, что создатели Duqu или создали Stuxnet, или имели доступ к исходному коду последнего, и их целью был сбор информации для следующей версии Stuxnet[6].
Немалая часть Duqu — объектно-ориентированный фреймворк, написанный на неизвестном языке[7]. Вирусные лаборатории перепробовали даже такие экзотические языки, как Lua, Google Go и AngelScript, но потерпели неудачу, и им пришлось попросить помощи у сообщества. В конце концов разгадка нашлась: это оказался чистый Си, скомпилированный Microsoft Visual C++ с необычными настройками оптимизации[8].
Код был написан с применением объектно-ориентированного подхода, но на языке Си, а не Си++. Предполагается, что выбор языка Си был сделан автором-программистом старой закалки, который переходил с ассемблеров на Си, и которому Си++ не понравился. Применение Си в сочетании с ОО-подходом встречается в коммерческих программных проектах (например, движок Doom), но несвойственно для вредоносных программ и выделяет Duqu как необычную разработку[8].