Родился в 1914 году в деревне Фомино Маловишерского района в семье крестьянина. Окончил начальную школу. По невыясненным причинам попал в детский дом, но сбежал и шесть лет беспризорничал: обошел и объехал почти всю страну. Когда Ивану исполнилось 15 лет, он вернулся в Малую Вишеру. Дальний родственник обучил его парикмахерскому делу и уже через 3 месяца Иван работал парикмахером в г. Малая Вишера и в Ленинграде.
В Рабоче-Крестьянской Красной Армии Ульянов с 1936 года – в часть его зачислили тоже парикмахером. Когда в 1939 году его снова призвали в армию, опять пришлось стричь и брить. Вот и попросился Иван Михайлович в разведчики 168-го стрелкового полка 24-й стрелковой дивизии 7-й армии Северо-Западного фронта. Часть стояла на самой финской границе.
Началась советско-финляндская война. В декабре 1939 года рядовой Ульянов, его друг Николай Ивлев и красноармеец Кузовкин получили задание разведать дорогу для наступающих подразделений. Взвод разведчиков проник в расположение противника, взял «языка». Пленный дал ценные сведения о том, что в районе озера Ахи-Ярви сосредоточены крупные силы противника. Эти данные необходимо было уточнить и Ульянов снова отправился в разведку.
При возвращении из разведки красноармеец Ульянов с товарищами подавил две огневые точки – станковые пулеметы.
Звание Героя Советского Союза присвоено 15 января 1940 года.
Тогда же в 1941 году Иван Ульянов окончил курсы младших лейтенантов. На фронтах Великой Отечественной войны с июня 1941 года. Занимал должности военкома разведывательного батальона, помощника начальника политотдела дивизии. В 1944 году Ульянов окончил курсы «Выстрел».
После войны гвардии майор Ульянов в запасе. С 1946 года проживал в Мурманске, работал на судне в объединении «Севрыбхолодфлот».
Награжден орденами Ленина, Октябрьской революции, двумя орденами Отечественной войны 1 степени, Отечественной войны 2 степени, медалями.