After an encouraging first-half display, Kenny's side were caught out by Bozhidar Kraev (56) after he found space in between Ireland defenders Duffy and John Egan.
Ireland showed fantastic determination and stuck to the game plan throughout, building from the back and eventually got their reward in injury-time.
Robbie Brady's incredible determination, where he blocked down a clearance and won a corner, saw him find the head of Duffy from a right-sided corner to level the tie.
It was as much as Ireland deserved with plenty of promising early signs.
"It was certainly a match we want to win for sure. There was a lot of good wing play and we had a lot of chances which we didn't take," said Ireland boss Stephen Kenny.
"To be fair, Bulgaria had some great chances as well, a great counter-attacking team but I always thought we controlled the game. You'd like to think that with the nature of a last-minute equaliser, it is a point gained but we'd like to win these matches.
"Shane Duffy's equaliser, a terrific equaliser, a fantastic header at the back post. Robbie Brady did brilliantly to chase it down and then the corner kick itself so there was no way we deserved to lose the game.
"It's our first game together after a really short period of time and we need to get ourselves turned around and ready for Finland now."
Bulgaria: Georgiev; Popov, Zanev (Galabov 79), Dimitrov, Nedyalkov, Malinov, Kostadinov, Ivanov, Kraev, Delev (Karagaren 76), Nedelev.
Republic of Ireland: Randolph, Doherty, Duffy, Egan, Stevens, Hendrick, McCarthy (Brady 70), Hourihane, O'Dowda (Robinson 74), Idah (Long 77), Connolly.
Referee: Manuel Schuettengruber (Aut).
POST-MATCH INTERVIEW | Stephen Kenny | "We need to win these matches" | WATCH HERE
POST-MATCH INTERVIEW | Callum O'Dowda | The 'Three' Man of the Match | WATCH HERE
Highlights will be available on FAI TV following the conclusion of the embargo at midnight tonight.